隨著高性能計算由傳統的主機方式向網絡化集群演變,傳統的基於主機的存儲架構已逐漸向網絡化存儲發展,計算和存儲分離的趨勢越來越明顯。針對 SAN 和 NAS 的不足,國際上已開展針對 Linux 集群的新型文件系統――對象存儲文件系統的研究,本文重點論述了存儲對象文件系統的架構、技術特點,並針對Lustre 對象存儲文件系統進行了初步測試,結果表明對象存儲文件系統在可擴展性、性能、易用性等方面都有顯著提高,隨著網絡化存儲技術的不斷成熟,對象存儲文件系統將成為重要的發展方向。
一、引言
高性能計算已由傳統的主機方式逐漸向集群方式演變,如TOP500中,1998年只有2台系統是集群方式,而到2003年已有208台為集群系統。隨著高性能計算體系結構的發展變化,傳統的基於主機的存儲架構已成為新的瓶頸,不能滿足集群系統的需求。集群的存儲系統必須有效解決兩個主要問題:(1)提供共享訪問數據,便於集群應用程序的編寫和存儲的負載均衡;(2)提供高性能的存儲,在I/O級和數據吞吐率方面能滿足成百上千台規模的Linux集群服務器聚合訪問的需求。目前,網絡化存儲已成為解決集群系統高性能存儲的有效技術途徑。
國際上主要有兩類網絡化存儲架構,它們是通過命令集來區分的。第一類是SAN(Storage Area Network)結構,它采用SCSI 塊I/O的命令集,通過在磁盤或FC(Fiber Channel)級的數據訪問提供高性能的隨機I/O和數據吞吐率,它具有高帶寬、低延遲的優勢,在高性能計算中占有一席之地,如SGI的CXFS文件系統就是基於SAN實現高性能文件存儲的,但是由於SAN系統的價格較高,且可擴展性較差,已不能滿足成千上萬個CPU規模的系統。第二類是NAS(Network Attached Storage)結構,它采用NFS或CIFS命令集訪問數據,以文件為傳輸協議,通過TCP/IP實現網絡化存儲,可擴展性好、價格便宜、用戶易管理,如目前在集群計算中應用較多的NFS文件系統,但由於NAS的協議開銷高、帶寬低、延遲大,不利於在高性能集群中應用。
針對Linux集群對存儲系統高性能和數據共享的需求,國外已開始研究全新的存儲架構和新型文件系統,希望能有效結合SAN和NAS系統的優點,支持直接訪問磁盤以提高性能,通過共享的文件和元數據以簡化管理,目前對象存儲文件系統已成為Linux集群系統高性能文件系統的研究熱點,如Cluster File Systems公司的Lustre、Panasas公司的ActiveScale文件系統等。Lustre文件系統采用基於對象存儲技術,它來源於卡耐基梅隆大學的Coda項目研究工作,2003年12月發布了Lustre 1.0版,預計在2005年將發布2.0版。Lustre在美國能源部(U.S.Department of Energy:DOE)、Lawrence Livermore 國家實驗室,Los Alamos國家實驗室,Sandia 國家實驗室,Pacific Northwest國家實驗室的高性能計算系統中已得到了初步的應用,IBM正在研制的Blue Gene系統也將采用Lustre文件系統實現其高性能存儲。ActiveScale文件系統技術來源於卡耐基梅隆大學的Dr. Garth Gibson,最早是由DARPA支持的NASD(Network Attached Secure Disks)項目,目前已是業界比較有影響力的對象存儲文件系統,榮獲了ComputerWorld 2004年創新技術獎。
二、對象存儲文件系統
2.1 對象存儲文件系統架構
對象存儲文件系統的核心是將數據通路(數據讀或寫)和控制通路(元數據)分離,並且基於對象存儲設備(Object-based Storage Device,OSD)構建存儲系統,每個對象存儲設備具有一定的智能,能夠自動管理其上的數據分布,對象存儲文件系統通常有以下幾部分組成。
1、對象
對象是系統中數據存儲的基本單位,一個對象實際上就是文件的數據和一組屬性的組合,這些屬性可以定義基於文件的RAID參數、數據分布和服務質量等,而傳統的存儲系統中用文件或塊作為基本的存儲單位,在塊存儲系統中還需要始終追蹤系統中每個塊的屬性,對象通過與存儲系統通信維護自己的屬性。在存儲設備中,所有對象都有一個對象標識,通過對象標識OSD命令訪問該對象。通常有多種類型的對象,存儲設備上的根對象標識存儲設備和該設備的各種屬性,組對象是存儲設備上共享資源管理策略的對象集合等。
2、對象存儲設備
對象存儲設備具有一定的智能,它有自己的CPU、內存、網絡和磁盤系統,目前國際上通常采用刀片式結構實現對象存儲設備。OSD提供三個主要功能:
(1) 數據存儲。OSD管理對象數據,並將它們放置在標准的磁盤系統上,OSD不提供塊接口訪問方式,Client請求數據時用對象ID、偏移進行數據讀寫。
(2) 智能分布。OSD用其自身的CPU和內存優化數據分布,並支持數據的預取。由於OSD可以智能地支持對象的預取,從而可以優化磁盤的性能。
(3) 每個對象元數據的管理。OSD管理存儲在其上對象的元數據,該元數據與傳統的inode元數據相似,通常包括對象的數據塊和對象的長度。而在傳統的NAS系統中,這些元數據是由文件服務器維護的,對象存儲架構將系統中主要的元數據管理工作由OSD來完成,降低了Client的開銷。
3、元數據服務器(Metadata Server,MDS)
MDS控制Client與OSD對象的交互,主要提供以下幾個功能:
(1) 對象存儲訪問。MDS構造、管理描述每個文件分布的視圖,允許Client直接訪問對象。MDS為Client提供訪問該文件所含對象的能力,OSD在接收到每個請求時將先驗證該能力,然後才可以訪問。
(2) 文件和目錄訪問管理。MDS在存儲系統上構建一個文件結構,包括限額控制、目錄和文件的創建和刪除、訪問控制等。
(3) Client Cache一致性。為了提高Client性能,在對象存儲文件系統設計時通常支持Client方的Cache。由於引入Client方的Cache,帶來了Cache一致性問題,MDS支持基於Client的文件Cache,當Cache的文件發生改變時,將通知Client刷新Cache,從而防止Cache不一致引發的問題。
4、對象存儲文件系統的Client
為了有效支持Client支持訪問OSD上的對象,需要在計算結點實現對象存儲文件系統的Client,通常提供POSIX文件系統接口,允許應用程序像執行標准的文件系統操作一樣。
2.2 對象存儲文件系統的關鍵技術
1、分布元數據傳統的存儲結構元數據服務器通常提供兩個主要功能。(1)為計算結點提供一個存儲數據的邏輯視圖(Virtual File System,VFS層),文件名列表及目錄結構。(2)組織物理存儲介質的數據分布(inode層)。對象存儲結構將存儲數據的邏輯視圖與物理視圖分開,並將負載分布,避免元數據服務器引起的瓶頸(如NAS系統)。元數據的VFS部分通常是元數據服務器的10%的負載,剩下的90%工作(inode部分)是在存儲介質塊的數據物理分布上完成的。在對象存儲結構,inode工作分布到每個智能化的OSD,每個OSD負責管理數據分布和檢索,這樣90%的元數據管理工作分布到智能的存儲設備,從而提高了系統元數據管理的性能。另外,分布的元數據管理,在增加更多的OSD到系統中時,可以同時增加元數據的性能和系統存儲容量。
2、並發數據訪問對象存儲體系結構定義了一個新的、更加智能化的磁盤接口OSD。OSD是與網絡連接的設備,它自身包含存儲介質,如磁盤或磁帶,並具有足夠的智能可以管理本地存儲的數據。計算結點直接與OSD通信,訪問它存儲的數據,由於OSD具有智能,因此不需要文件服務器的介入。如果將文件系統的數據分布在多個OSD上,則聚合I/O速率和數據吞吐率將線性增長,對絕大多數Linux集群應用來說,持續的I/O聚合帶寬和吞吐率對較多數目的計算結點是非常重要的。對象存儲結構提供的性能是目前其它存儲結構難以達到的,如ActiveScale對象存儲文件系統的帶寬可以達到10GB/s。
2.3 Lustre對象存儲文件系統
Lustre對象存儲文件系統就是由客戶端(client)、存儲服務器(OST,Object Storage Target)和元數據服務器(MDS)三個主要部分組成。Lustre的客戶端運行Lustre文件系統,它和OST進行文件數據I/O的交互,和MDS進行命名空間操作的交互。為了提高Lustre文件系統的性能,通常Client、OST和MDS是分離,當然這些子系統也可以運行在同一個系統中。其三個主要部分如圖1所示。
圖1 Lustre文件系統的組成
Lustre是一個透明的全局文件系統,客戶端可以透明地訪問集群文件系統中的數據,而無需知道這些數據的實際存儲位置。客戶端通過網絡讀取服務器上的數據,存儲服務器負責實際文件系統的讀寫操作以及存儲設備的連接,元數據服務器負責文件系統目錄結構、文件權限和文件的擴展屬性以及維護整個文件系統的數據一致性和響應客戶端的請求。 Lustre把文件當作由元數據服務器定位的對象,元數據服務器指導實際的文件I/O請求到存儲服務器,存儲服務器管理在基於對象的磁盤組上的物理存儲。由於采用元數據和存儲數據相分離的技術,可以充分分離計算和存儲資源,使得客戶端計算機可以專注於用戶和應用程序的請求;存儲服務器和元數據服務器專注於讀、傳輸和寫數據。存儲服務器端的數據備份和存儲配置以及存儲服務器擴充等操作不會影響到客戶端,存儲服務器和元數據服務器均不會成為性能瓶頸。
Lustre的全局命名空間為文件系統的所有客戶端提供了一個有效的全局唯一的目錄樹,並將數據條塊化,再把數據分配到各個存儲服務器上,提供了比傳統SAN的"塊共享"更為靈活的共享訪問方式。全局目錄樹消除了在客戶端的配置信息,並且在配置信息更新時仍然保持有效。
三、測試和結論
1、Lustre iozone測試
針對對象存儲文件系統,我們對Lustre文件系統作了初步測試,具體配置如下:
3台雙至強系統:CPU:1.7GHz,內存:1GB,千兆位以太網
Lustre文件系統:lustre-1.0.2
Linux版本:RedHat 8
測試程序:iozone
測試結果如下:
塊寫(MB/s/thread) 單線程 兩個線程
Lustre 1個OST 2個OST 1個OST 2個OST
21.7 50 12.8 24.8
NFS 12 5.8
從以上的測試表明,單一OST的寫帶寬比NFS好,2個OST的擴展性很好,顯示strip的效果,兩個線程的聚合帶寬基本等於飽和帶寬,但lustre客戶方的CPU利用率非常高(90%以上),測試系統的規模(三個節點)受限,所以沒有向上擴展OST和client數量。另外,lustre的cache對文件寫的性能提升比NFS好。通過bonnie++初步測試了lustre的元數據處理能力,和NFS比,文件創建速度相對快一些,readdir速度慢。
2、lustre小規模測試數據(文件寫測試,單位KB/s):
硬件:Dual Xeon1.7,GigE, SCSI Ultra160 軟件:RedHat8,iozone
圖2 2個OST / 1個MDS
圖3 1個OST/1個MDS
圖4 NFS測試
從初步的測試看,lustre的性能和可擴展性都不錯。與傳統的文件系統相比,對象存儲文件系統具有以下優勢:
(1)性能。對象存儲體系結構沒有其它共享存儲系統中的元數據管理器瓶頸。NAS系統使用一個集中的文件服務器作為元數據管理器,一些SAN文件系統則采用集中的鎖管理器,最後元數據管理將成為一個瓶頸。對象存儲體系結構類似於SAN,每個結點都可以直接訪問它的存儲設備。對象存儲體系結構對SAN的改進是沒有RAID控制器的瓶頸問題,當計算結點的規模增大時,該優勢將非常明顯,所有結點的總吞吐率最後將受限於存儲系統的規模和網絡的性能。存儲對象結點發送數據到OSD,OSD自動優化數據的分布,這樣減少了計算結點的負擔,並允許向多個OSD並行讀寫,最大化單個Client的吞吐率。
(2)可擴展性。將負載分布到多個智能的OSD,並用網絡和軟件將它們有機結合起來,消除了可擴展問題。一個對象存儲系統有內存、處理器、磁盤系統等,允許它們增加其存儲處理能力而與系統其它部分無關。如果對象存儲系統沒有足夠的存儲處理能力,可以增加OSD,確保線性增加性能。
(3)OSD分擔主要的元數據服務任務。元數據管理能力通常是共享存儲系統的瓶頸,所有計算結點和存儲結點都需要訪問它。在對象存儲結構中,元數據服務有兩部分組成:inode元數據,管理介質上的存儲塊分布;文件元數據,管理文件系統的文件層次結構和目錄。對象存儲結構增加了元數據訪問的可擴展,OSD負責自己的inode元數據,增加一個OSD可以增加磁盤容量,並可以增加元數據管理資源。而傳統的NAS服務器增加更多的磁盤,則性能將更慢。對象存儲系統在容量擴展時,確保持續的吞吐率。
(4)易管理。智能化的分布對象存儲結構可以簡化存儲管理任務,可以簡化數據優化分布的任務。例如,新增存儲容量可以自動合並到存儲系統中,因為OSD可以接受來自計算結點發出的對象請求。系統管理員不需要創建LUN,不需要重新調整分區,不需要重新平衡邏輯卷,不需要更新文件服務器等。RAID塊可自動擴展到新的對象,充分利用新增的OSD。
(5)安全。傳統的存儲系統通常依賴於Client的身份認證和私有的網絡確保系統安全。對象存儲結構在每個級別都提供安全功能,主要包括存儲設備的身份認證,計算結點的身份認證,計算結點命令的身份認證,所有命令的完整性檢查,基於IPSec的私有數據和命令等。這些安全級別可以確保用戶使用更高效、更易獲得的網絡,如以太網等。目前panasas已經推出了商業化的對象存儲全局文件系統ActiveScale,對象存儲正在被重視,Lustre也已經在(ALC、MCR)或將(RedStorm)在多個大規模集群上應用,因而對象存儲文件系統將成為未來集群存儲的重要發展方向。