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