對象存儲:Linux集群中高性能共享存儲
Linux集群計算已經(jīng)改變了高性能計算領域的組成結(jié)構:低價的Linux集群系統(tǒng)正在取代那些昂貴的、傳統(tǒng)意義上的超級計算機,開始被應用于解決那些更富挑戰(zhàn)性的高性能計算問題。
為了充分發(fā)揮Linux集群系統(tǒng)的潛在性能,我們需要一種新的存儲機制,基于對象的集群存儲技術應運而生?;趯ο蟮募捍鎯夹g是一種新存儲系統(tǒng)的基礎,無論是在存儲容量還是在存取性能方面,它都有著良好的可擴展性。這些使得該技術可以滿足功能強大的Linux集群系統(tǒng)對存儲方面的需求。
近年來,在科學研究和工程計算等領域,高性能集群計算技術的卓越成就大家有目共睹。高性能集群技術已逐漸占據(jù)了高性能計算的主導地位,這一點從2003年11月公布的世界高性能計算機排行榜中體現(xiàn)無疑。在該排行榜前500臺的超級計算機里,有208臺采用了集群系統(tǒng),集群系統(tǒng)已是當前高性能計算機最流行的體系結(jié)構。
現(xiàn)在,這種流行趨勢正由科學工程計算領域向商用領域蔓延。地質(zhì)學家們正致力于研究更強大的地震分析技術,以獲取地球結(jié)構更精細的圖片,從而用來指導油田的鉆探和開發(fā);制藥公司正在海量的基因庫中努力尋求對人類疾病更深入的理解和認識,從而可以開發(fā)出更有效的藥物或治療方法;而我們熟知的一些門戶網(wǎng)站,如Yahoo和Google,則需要對因特網(wǎng)上浩如煙海的數(shù)據(jù)進行檢索和分類,從而提供給世界各地的人們使用。所有這些領域,都成為Linux集群計算系統(tǒng)大顯身手的地方。同時,不得不看到,Linux集群計算的廣泛應用也帶來了新的挑戰(zhàn)。
對共享存儲性能的需求不斷增長
除了對高性能計算方面的需求外,上述各商業(yè)應用還有著一個共同的特點:它們都需要高性能的I/O支持。確保集群系統(tǒng)得到高效使用的必備條件是,它可以對TB(1TB=1000GB,1GB=1000MB)量級的共享數(shù)據(jù)進行快速訪問。沒有這一點,集群系統(tǒng)的性能將會大幅降低。為了簡化應用系統(tǒng)的開發(fā)和維護,這些共享數(shù)據(jù)必須對計算集群上的所有進程都可用。隨著集群系統(tǒng)的規(guī)模越來越大、節(jié)點越來越多,為實現(xiàn)各個節(jié)點對共享數(shù)據(jù)的高效訪問,對存儲系統(tǒng)的要求也越來越高,傳統(tǒng)的、基于網(wǎng)絡的存儲系統(tǒng)已經(jīng)不能提供滿足這種共享訪問所必需的性能。
例如,在動畫生成應用中(這方面最早和最有名的例子是電影《泰坦尼克號》的特效生成,它使用了一個包含160個節(jié)點的Linux集群系統(tǒng)),需要將場景生成任務分發(fā)到上百個計算節(jié)點上,其中每個節(jié)點負責生成最終場景中一個單獨的部分。共享的場景和人物信息,以及每一幀的渲染指令必須能夠為每一個參與計算的節(jié)點所訪問,而每個節(jié)點計算一幀會產(chǎn)生大約50MB的輸出。最后各個單獨的幀依次組合,得到完整的一幅畫面。這樣的流程是許多集群計算應用過程中常見的數(shù)據(jù)訪問情形。
傳統(tǒng)的共享存儲方法的缺點
集群計算的開發(fā)者們自然地采用了能夠被集群系統(tǒng)中所有節(jié)點訪問的共享存儲系統(tǒng)。讓我們先來簡單審視一下現(xiàn)有的這種共享存儲系統(tǒng)。
首先是文件服務器。它將磁盤陣列(RAID)直接連接到網(wǎng)絡系統(tǒng)中的服務器上,這種形式的網(wǎng)絡存儲結(jié)構稱為DAS(Direct Attached Storage)。這種結(jié)構中,各類存儲設備通過IDE或SCSI等I/O總線與文件服務器相連。集群節(jié)點的數(shù)據(jù)訪問必須通過文件服務器,然后經(jīng)過I/O總線訪問相應的存儲設備。當連結(jié)節(jié)點數(shù)增多時,I/O總線將會成為一個潛在的瓶頸,因此這種存儲方式只適用于小規(guī)模的集群系統(tǒng),大一些的集群需要更具擴展性的存儲系統(tǒng)。
存儲區(qū)域網(wǎng)(SAN,Storage-Area Networks)和優(yōu)化后的直接網(wǎng)絡存儲,或者網(wǎng)絡附加存儲(NAS,Network-Attached Storage)結(jié)構被用于中等規(guī)模的集群系統(tǒng)。SAN是一種類似于普通局域網(wǎng)的高速存儲網(wǎng)絡,通常由RAID陣列連接光纖通道組成。SAN和集群節(jié)點的數(shù)據(jù)通信通常是由SCSI命令,而不是網(wǎng)絡協(xié)議實現(xiàn)(如圖1所示)。
在NAS存儲結(jié)構中,存儲系統(tǒng)不再通過I/O總線附屬于某個特定的服務器或客戶機,而是通過網(wǎng)絡接口與網(wǎng)絡直接相連,集群節(jié)點通過網(wǎng)絡 #p#page_title#e#協(xié)議(如TCP/IP)對共享數(shù)據(jù)進行訪問(如圖2所示)。
圖1 SAN結(jié)構
圖2 NAS結(jié)構
然而,當集群變得龐大時,這些結(jié)構都存在著嚴重的缺陷。面對眾多集群計算應用系統(tǒng)的高并發(fā)性和單節(jié)點高吞吐需求,無論是SAN還是NAS結(jié)構都顯得力不從心。由于這兩方面的局限,在實際應用中,人們不得不采用數(shù)據(jù)“搬家”的策略。首先將數(shù)據(jù)從共享存儲系統(tǒng)搬到計算節(jié)點上進行處理,處理結(jié)束后,再將計算結(jié)果從計算節(jié)點搬回共享存儲系統(tǒng)。在大規(guī)模的集群系統(tǒng)上,很多應用程序為了這樣的搬家需要花費幾個小時甚至更多時間。
一個新興的標準:基于對象的存儲
對眾多的集群計算用戶來說,一種基于對象的存儲技術正作為構建大規(guī)模存儲系統(tǒng)的基礎而悄然興起。它利用現(xiàn)有的處理技術、網(wǎng)絡技術和存儲組件,可以通過一種簡單便利的方式來獲得前所未有的可擴展性和高吞吐量。
這種體系結(jié)構的核心是對象,對象是容納了應用數(shù)據(jù)和一個可擴展的存儲屬性的基本容器。傳統(tǒng)的文件被分解為一系列存儲對象,并分發(fā)到一個或多個“智能磁盤”上,這種磁盤被稱為基于對象的存儲設備(OSD,Object-based Storage Devices)。每一個OSD具備本地處理功能、用于數(shù)據(jù)和屬性緩存的本地內(nèi)存和本地的網(wǎng)絡連接。OSD構成了分布式存儲結(jié)構的核心,它將許多傳統(tǒng)的存儲分配行為從文件系統(tǒng)層轉(zhuǎn)移,從而解決了當前存儲系統(tǒng)的一個瓶頸問題。
對象屬性包括了安全信息和使用狀況統(tǒng)計信息,這些信息被用于基于安全認證的訪問、服務質(zhì)量控制,以及為實現(xiàn)OSD間負載均衡所需的數(shù)據(jù)動態(tài)分配。對象存儲技術采用了和集群計算系統(tǒng)類似的可擴展結(jié)構,當存儲容量增加時,它提供的均衡模型能夠保證網(wǎng)絡帶寬和處理能力也同步增長,從而確保系統(tǒng)的可擴展性。
存儲網(wǎng)絡工業(yè)協(xié)會(SNIA)和T10標準技術委員會中的聯(lián)合技術小組正在制定一個關于OSD的標準。標準包括了一個針對iSCSI協(xié)議的命令集,它在原有的SCSI命令集中增添了對象擴展功能。同時,對象規(guī)范和命令集的制定促使了一種新的智能存儲設備的出現(xiàn),這種智能存儲設備可以集成到基于IP的、高性能、大規(guī)模并行存儲環(huán)境中去。目前多個業(yè)內(nèi)領先的存儲設備公司都參與了這項工作,其中包括EMC、惠普、IBM、Intel、希捷及Veritas軟件公司等。
共享存儲的實現(xiàn)
對象存儲結(jié)構提供了新一代網(wǎng)絡存儲系統(tǒng)的基礎。在新興的應用中,它和一種可擴展的、為應用程序提供文件系統(tǒng)接口的元數(shù)據(jù)管理層結(jié)合在一起。這一層負責管理諸如目錄隸屬關系和文件所有權限這樣的信息。它同樣負責將跨OSD的存儲對象(每個存儲對象是文件的一部分)聯(lián)接成一個文件,以確保數(shù)據(jù)的可靠和可用。集群節(jié)點向這一層提出請求,例如打開或關閉文件,通過認證后,接受它能夠訪問OSD所必需的信息,此后集群節(jié)點可以直接對文件進行讀寫操作,而和元數(shù)據(jù)管理層無關。
對象存儲結(jié)構作為可擴展集群文件系統(tǒng)的一部分被實現(xiàn)后,就能夠為數(shù)以百計的客戶端提供高容量的總帶寬。簡而言之,對象存儲技術可以為高性能Linux集群系統(tǒng)提供高性價比的共享存儲。