解讀 Linux 叢集的新型檔案系統

隨著高效能運算由傳統的主機方式向網路化叢集演變,傳統的基於主機的儲存架構已逐漸向網路化儲存發展,計算和儲存分離的趨勢越來越明顯。針對 SAN 和 NAS 的不足,國際上已開展針對 Linux 叢集的新型檔案系統――物件儲存檔案系統的研究,本文重點論述了儲存物件檔案系統的架構、技術特點,並針對Lustre 物件儲存檔案系統進行了初步測試,結果表明物件儲存檔案系統在可擴充套件性、效能、易用性等方面都有顯著提高,隨著網路化儲存技術的不斷成熟,物件儲存檔案系統將成為重要的發展方向。

解讀 Linux 叢集的新型檔案系統

一、引言

高效能運算已由傳統的主機方式逐漸向叢集方式演變,如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在美國能源部(rtment 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

圖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)在多個大規模叢集上應用,因而物件儲存檔案系統將成為未來叢集儲存的重要發展方向。