長久以來,伺服器I/O技術的進展一直跟不上處理器的進步速度,然而伺服器虛擬化等新型應用的普及,以及資料量的增長,卻又不斷給伺服器I/O帶來更大的壓力。

伺服器I/O效能的問題大致可分為兩個不同的面向,各自面對迥然有別的存取應用型態:

存取延遲

對應的是高IOPS需求的高交易型態存取應用,如即時的金融交易或大型訂位/訂票系統等,每個I/O的資料量都不大,但每秒可能就得處理多達數萬甚至數十萬個I/O,因此需要盡可能低的存取延遲時間,也就是盡可能高的每秒I/O處理效能。

頻寬需求

對應的是影音多媒體資料處理,或是類似Google MapReduce、Hadoop之類針對大資料量的平行架構處理應用。這類型應用並不需要很高的存取回應速度,但需要應付非常大的資料吞吐量,主要的I/O負載落在資料傳輸頻寬上。

針對不同面向的需求,採取的解決方式也有異。要減少存取延遲、加速存取時間,可採用高速儲存媒體,或減少資料存取所經過的處理環節;而要解決頻寬需求問題,則可採用更高頻寬的傳輸匯流排、增加傳輸通道數量,或透過分散平行處理架構,將資料流量分散到多條通道上。

降低存取延遲的基本原則

儲存媒體本身的存取速度,以及從處理器到儲存媒體之間的存取通道,是影響存取反應速度的兩個主要因素。顯然的,儲存媒體本身的速度越快,回應前端應用程式存取要求的反應時間便越快,延遲越少;同樣的,若處理器與儲存媒體間的傳輸通道速度越快、傳輸通道經過的環節越少,則整體的存取反應時間也越快,延遲越少。

一般來說,與處理器越接近、與處理器之間傳輸環節越少的儲存裝置,存取速度越快、傳輸通道頻寬越大,如作為處理器內部快取的SRAM,便比位於處理器外部的DRAM更快,而透過記憶體匯流排直接連接處理器、或透過北橋晶片連接處理器的DRAM,又比必須依序透過儲存匯流排、南橋晶片、PCIe匯流排等環節,再連接中央處理器的硬碟等儲存裝置更快。

所以要減少存取延遲,基本原則便是盡可能的讓資料更接近運算核心,盡量將資料放到較接近處理器的高速儲存媒體中。

但從另一方面來看,越快的儲存媒體單位成本越高,也限制了可用的配置容量,不可能把所有應用程序需要存取的資料,都放到靠近處理器的DRAM等高速儲存裝置上,因此如何將資料分派到不同層級儲存裝置上存取,便成了另一個關鍵。

以快取為基礎的I/O存取加速技術

傳統上,伺服器的資料存取一般可分為兩層:

(1)伺服器內由DRAM構成的主記憶體,提供少量極關鍵資料盡可能快速的存取。

(2)透過儲存網路連接、集中於一處或分散在多處的傳統硬碟,提供大多數資料的存放。

顯然的,將資料整個搬移到伺服器內由DRAM構成的主記憶體上存放,將能得到最快速的I/O效能,但受DRAM成本所限,即使是高階伺服器的主記憶體配置量,大多也只有上百到數百GB等級,能處理的資料量有限,而且透過這種方式取得的單位效能成本也過高。

因此在實際應用中便只能退而求其次,混合使用主記憶體與傳統硬碟,透過快取機制將一部份存取頻繁的資料放進記憶體,減少對傳統硬碟的存取,至於實際能得到的存取加速效果,則需視快取記憶體容量與快取命中率而定。

當以NAND Flash記憶體為基礎的固態硬碟(SSD)技術普及後,提供了一種單位成本較DRAM低、存取速度又遠高於傳統硬碟的儲存媒體,可作為兩者間的中介,也讓伺服器I/O加速技術有了更豐富的面貌。

由使用的儲存裝置類型來看,目前的I/O存取加速技術使用的儲存媒體主要有DRAM與NAND Flash記憶體兩種;而從部署方式來看,則可分為三種典型類型:

●    伺服器端:利用安裝在伺服器內的DRAM或SSD模組來加速存取,這種類型由於資料存放位置離運算核心最近,有助於降低存取延遲。缺點則是除非整合特別的機制,否則安裝在伺服器內的資源無法與其他伺服器共享。

●    網路端:在前端伺服器與後端儲存設備之間儲存通道中,置入內含大量DRAM或SSD的應用伺服器,利用這種應用伺服器中的DRAM或SSD作為快取,提高整個儲存網路的速度。透過儲存網路,一套這種應用伺服器即可服務多臺前端伺服器與後端儲存設備,管理上亦較為方便。

●    儲存端:利用安裝在磁碟陣列控制器內的DRAM或SSD模組來加速存取。透過儲存網路,一臺儲存設備內的DRAM或SSD即可為多臺前端伺服器提供服務,資源可共享與靈活的調配,亦便於統一管理。缺點是儲存設備內的DRAM或SSD模組,與前端伺服器的運算核心相距較遠,存取時需經過的環節較多,延遲問題相對較為嚴重。

利用伺服器主記憶體加速I/O

基於「將關鍵資料移到更接近運算資源的儲存裝置,加速資料存取」的原則,利用伺服器DRAM主記憶體來加速I/O是由來已久的作法,如將部份DRAM作為快取記憶體便是一種典型的應用。

當DRAM價格逐漸降低、伺服器DRAM配置量不斷增大後,又出現了RAM Disk的作法,可將部份的主記憶體空間模擬為磁碟空間,以便直接將應用程式與資料搬移到記憶體中加速存取。

不過若要讓這種存取加速機制達到最佳化,必須從作業平臺與應用程式端加以整合,才能讓RAM Disk發揮最大效益。因此一些廠商提出了搭配特定應用程式的「In-Memory」存取技術,藉以因應高I/O負載需求的應用。

這類技術通常是配合大型資料庫使用,典型的產品如SAP的HANA In-Memory Appliance與Business Warehouse Accelerator等。藉由將資料搬移到主機的記憶體中,這類產品可得到相當驚人的I/O效能,資料庫查詢與分析速度數倍於傳統存取技術。

不過前述這類利用主記憶體的存取加速技術成本相對較高,僅能處理相對較小量的資料(一般大約是上百到數百GB等級),而且必須搭配特定的應用程式與環境運作,並非普遍通用於一般環境,只適合特定作業環境下、需要快速存取小量資料的應用。

利用網路加速設備提高存取速度

考慮到企業儲存環境早已進入網路化,因此比起部署在前端伺服器或後端儲存設備上的I/O加速技術,將加速技術部署在儲存網路中,顯然是一種更為便利、有效的作法。

已有一些廠商推出了專門針對加速SAN或NAS環境存取的網路設備,如針對SAN區塊存取環境有Dataram的XcelaSAN應用伺服器,針對NAS檔案存取環境則有Alacritech的ANX 1500應用伺服器、Avere的FXT應用伺服器等。

這類儲存網路加速應用伺服器,可看作是一種內含大量高速儲存媒體的閘道器,如Dataram XcelaSAN Model 100內含256GB的DRAM,Alacritech的ANX 1500含有48GB的DRAM與2~4TB的SSD,Avere的FXT系列則包含64GB或72GB的DRAM、1GB的NVRAM,以及512GB Flash記憶體或1.2TB/3.6TB的SAS硬碟。

將這些設備接上儲存網路,將其設定在前端伺服器與後端儲存設備間的存取通道上,便可利用這些設備內的大量高速儲存媒體作為快取記憶體,為網路上流通的資料提供快取功能,保存那些較活躍的資料,從而加速前、後端的存取。為確保這些中間節點設備故障時不會影響到前後端的資料存取,高可用性叢集架構是這類解決方案的基本配備。

相較於更換內含大量快取記憶體、可因應更高I/O負載應用的高階儲存設備,透過在儲存網路中插入前述這類專用於提供快取加速功能的應用伺服器,亦能有效改善既有儲存環境的效能,以較低的成本達到支撐更高I/O負載應用的目的。

利用SSD加速伺服器I/O

雖然NAND Flash記憶體的速度遠不如DRAM,但單位成本只及後者的1/4~1/10,因此可「以量取勝」,藉由比DRAM大上十倍、數十倍的容量,來協助傳統硬碟改善存取效能。

利用SSD的伺服器I/O加速技術同樣可分為三種類型:

伺服器端的SSD I/O加速:

也就是在伺服器內安裝SSD,構成介於DRAM與傳統硬碟之間的高速儲存層。通常可有兩種典型應用方式,一是當作高速儲存層,將高I/O負載的特定應用程式或資料存放到SSD上,藉以加速存取速度;也可透過某些作業系統或應用軟體提供的功能(如ZFS檔案系統的L2ARC功能),將SSD規畫為輔助DRAM的第二層快取記憶體,藉由單位容量成本較低的SSD,大幅擴充將系統快取記憶體的總量,從而有效提高快取命中率。

在實際應用中,伺服器內的SSD通常採用兩種硬體架構,一種是類似傳統硬碟的磁碟型式,透過SATA或SAS等儲存匯流排連接主機;另一種則是介面卡型式,將SSD介面卡安裝在PCIe匯流排插槽上,透過PCIe匯流排連接主機。

兩種應用形態相較下,採用PCIe介面卡型式的SSD,速度顯然高於硬碟型式的SSD,PCIe匯流排的頻寬高於SATA、SAS等儲存匯流排,而且與處理器之間的「距離」更短、延遲也較少——PCIe匯流排可直接透過北橋晶片連接處理器,甚至直接連接處理器(某些新處理器已整合了記憶體控制器與PCIe控制器,省略了北橋晶片的配置);相對的,採用SAS或SATA介面的SSD,則需依序經過磁碟控制器、南橋、北橋等環節,才能與處理器連接。

幾乎任何伺服器都可透過安裝PCIe介面卡型式或SATA、SAS介面型式的SSD,從而帶來I/O加速的效果。目前企業級SSD產品的選擇亦相當多。

網路端的SSD I/O加速:

在閘道器等網路設備中安裝大容量的SSD,為流經網路上的資料提供快取加速功能。

儲存設備端的SSD I/O加速:

即在外接儲存設備中使用SSD作為儲存媒體,在應用上也分為兩種型態,一是將SSD作為分層儲存中的高速存取層,可搭配自動分層儲存技術,自動將存取頻率高的資料搬移到SSD儲存層上,以便加速這些資料的存取速度;二是將SSD作為磁碟陣列控制器內含DRAM快取記憶體的輔助,構成第二層快取記憶體,藉以提高快取命中率,減少存取緩慢的機械式硬碟機率。

可搭配SSD作為高速存取層、整合在儲存設備中的自動分層儲存技術,目前已有許多選擇,其中較知名的有:Dell用於Compellent Storage Center儲存系統的Data Progression自動分層遷移技術、HDS用於搭配VSP系列儲存設備的HDT自動分層技術、EMC搭配VMAX與VNX系列儲存設備的FAST VP、HP 3PAR Inserv F系列與T系列儲存伺服器的Adaptive Optimization,以及IBM用在DS8700與Storwize V7000上的Easy Tier等等。

至於可提供以SSD作為輔助快取記憶體的儲存設備亦已不少,這類產品又有兩種類型,第一種是將SSD安裝在磁碟陣列控制器內,如搭配NetApp FAS與V系列控制器的Flash Cache模組,便是一種安裝在控制器內、內含Flash記憶體的PCIe介面卡。

第二種則是將SSD安裝在磁碟陣列控制器後端的磁碟櫃內,就和一般的硬碟一樣,磁碟陣列控制器再透過SAS或FC介面,連接磁碟櫃內的SSD,如EMC VNX系列整合儲存設備的FAST Cache,以及FalconStor NSS VS系列的HotZone與SafeCache,都是這種類型。

雖然兩種類型同樣都是把SSD當成快取記憶體使用,不過第一種架構中的SSD位於控制器之中,與控制器核心是直接透過PCIe介面連接,速度明顯快過第二種架購。

另外還有一些廠商推出配合特定應用平臺使用、整合度更高的儲存設備SSD I/O加速方案,如Oracle的Exadata資料庫專用伺服器中,安裝了Sun FlashFire PCIe Flash介面卡作為快取的儲存伺服器,便是典型的產品。

新概念:中央管理、分散部署的SSD I/O加速

將SSD用於前端的伺服器,或後端的儲存設備上,都能達到加速I/O的效果,但由於在存取路徑中所處的位置不同,兩種應用方式具有不同的特性。

任何安裝在伺服器內部的內接式儲存裝置,都會受伺服器機箱與主機板設計的制約,在裝置安裝數量上有很大的限制,安裝在本機內的儲存裝置也難以共享使用,而且分散在多臺伺服器內的儲存裝置,亦較不易管理。

與內接式相比,安裝在外接儲存設備中可有更大的擴充彈性,外接儲存設備可安裝數量更多的儲存裝置,不僅可提供遠高於內接式儲存裝置的容量,還能透過RAID匯聚大量儲存裝置、提供更高的效能。此外,透過儲存區域網路的連接,一臺儲存設備即可同時為多臺前端主機提供服務,並在多臺主機間靈活的分派與轉移儲存資源,便於對儲存資源進行統一調配與管理。

不過從另一方面來看,內接式儲存設備也有距離處理器更近、延遲較少的優點,儲存裝置是直接透過主機板晶片組連接處理器。

而對外接儲存裝置來說,從儲存媒體到前端主機的處理器之間,便需經過磁碟陣列內部匯流排、磁碟陣列控制器、磁碟陣列端的儲存網路介面、儲存網路、伺服器端的儲存網路介面,以及伺服器主機板晶片組等多個環節——然而通過的環節越多,造成的延遲也越大。

舉例來說,儘管Flash記憶體本身是一種存取延遲時間僅數十到數百μs等級的高速儲存媒體(目前SLC Flash記憶體的隨機讀取延遲約在25μs左右,寫入延遲為250μs,刪除則需2ms),不過按固態儲存設備專業廠商德州記憶體系統(TMS)銷售工程總監Jamon Bowen說法,透過FC HBA介面卡連接的外接式Flash記憶體儲存設備,由於多了FC到PCIe的轉換,大約會給存取增加10μs的延遲,等於讓寫入與讀取延遲增加4~40%之譜。

不過FC-PCIe轉換還不是造成外接式Flash記憶體存取延遲的最主要原因,由於必須處理FC協定表頭軟體堆疊之故,透過FC SAN網路存取外接式Flash儲存設備,通常得花上1~2ms的延遲時間。這樣的延遲增加對於一般應用來說並不會造成太大困擾,但是對於I/O負載非常高的關鍵應用來說,就成了不得不面對的問題。

從減少延遲的需求來說,越靠近伺服器處理器越有利,最好安裝在伺服器內;但就擴充性、應用彈性與管理來說,利用儲存網路連接的外接式儲存設備具有明顯優勢。為兼顧這兩方面的需求,一些廠商推出了將位於前端伺服器內的SSD,以及後端儲存設備整合為一的存取加速解決方案。

前端伺服器與後端儲存共同協作的快取架構

目前EMC與NetApp兩大儲存廠商,正分別在Project Lightning與Project Mercury兩項計畫下,開發這種類型的存取加速技術,另外Dell在不久前舉行的Dell Storage Forum中,也討論了這類整合技術。

這種整合了伺服器端SSD與後端儲存設備的I/O加速解決方案,通常包括三個基本元件:

(1)安裝在前端伺服器內的PCIe——SSD介面卡;

(2)後端儲存設備;

(3)安裝在前端伺服器上、用於與後端儲存設備溝通的驅動程式軟體。

透過前端伺服器上的驅動程式,可在後端儲存設備與前端伺服器之間建立存取通道,並使用前端伺服器上安裝的SSD介面卡作為快取記憶體,從而達到加速的目的。

如此一來可有兩方面的效果,一方面,由於作為快取的SSD介面卡安裝在前端伺服器中,因此當快取命中時,前端伺服器可在最短延遲下就近從SSD中存取資料;另一方面,在驅動程式軟體運作下,安裝在多臺前端伺服器中的SSD介面卡,又可接受後端儲存設備的統一管理與調配。

換句話說,這種解決方案,就是分散部署在前端伺服器中,但由後端儲存設備統一管理的SSD快取方案。

在這樣的架構下,還可進一步衍生出分散式快取的概念——在後端伺服器統一協調下,前端伺服器可共享彼此的SSD卡中的快取資料——任一伺服器的SSD快取卡所快取的資料,不僅可供自己使用,還可提供給其他伺服器使用。

如B伺服器發出的存取要求,若B伺服器自身SSD卡快取未能命中,但若A伺服器的SSD快取中含有B伺服器所要的資料,則B伺服器便可透過網路從A伺服器的SSD快取中存取,而無需到後端儲存設備上存取。

所以不同伺服器內所安裝的SSD快取卡,便可構成一個具有一致性的分散式SSD快取層。當然這要求透過後端儲存設備,在前端各伺服器間維持一個共同的快取一致性索引,以便前端各伺服器能查詢包括其他伺服器在內的整個快取層快取資料。

對新概念的異議

並不是所有人都認同「由後端儲存設備統一管理安裝在伺服器端的SSD快取」這個概念,從效能上來看,這種將伺服器端SSD快取交由後端儲存設備管理的架構,並無法超過由前端伺服器自行管理的伺服器端SSD快取,某些情況下甚至還會更慢。

總而言之,爭議在於要把安裝在前端伺服器內的SSD快取卡,交由前端伺服器自行管理,還是交由後端儲存設備統一管理,兩種方式何者較為有利的問題?當然目前要對這個問題下定論或許仍言之過早。

 

從處理器到儲存設備間的傳輸延遲

決定存取效能的主要因素包括儲存媒體本身的速度,以及儲存媒體與處理器之間的傳輸通道。一般來說,越接近處理器的儲存媒體存取速度越快、頻寬越大;儲存媒體與處理器間的距離越近,經過的處理環節越少,延遲則更小,每多一個環節,就需要多一次處理與轉換,連帶也會增加少則數十ns、長則數十μs、甚至數ms的延遲(視不同匯流排傳輸協定的型態與各控制晶片的效能而定)。所以若要降低存取延遲,基本原則便是將資料盡可能放到更接近處理器的儲存媒體中存取。資料來源:iThome整理,2011年8月

(看大圖)

 

三種典型的I/O加速技術部署方式

I/O加速技術的基礎,是以DRAM或NAND Flash記憶體等高速儲存媒體,來作為資料存取的快取或高速儲存層,依部署方式不同,可分為伺服器端、網路端與儲存設備端等三種類型,各有不同的特性與優缺點。資料來源:iThome整理,2011年8月

 


相關報導請參考「縮短資料與運算核心間的距離:伺服器I/O加速新思維


Advertisement

更多 iThome相關內容