突破I/O瓶頸 五種解決方案各有利弊
HPC(高性能計(jì)算High Performance Computing,也稱超級(jí)計(jì)算)歷來是石油、生物、氣象、科研等計(jì)算密集型應(yīng)用中的首要技術(shù)問題。早期的HPC系統(tǒng),主要以IBM、Cray、SGI等廠商的大型機(jī)或并行機(jī)為硬件系統(tǒng)平臺(tái)。隨著Linux并行集群技術(shù)的成熟和普及,目前HPC技術(shù)主流已經(jīng)轉(zhuǎn)向以IA架構(gòu)為硬件平臺(tái),以Linux并行集群為系統(tǒng)平臺(tái)的廉價(jià)系統(tǒng)為主。近年來,這一技術(shù)又進(jìn)一步發(fā)展,各廠商目前競(jìng)相追捧的網(wǎng)格計(jì)算技術(shù),從某種意義上說,就是這一架構(gòu)的延伸。鑒于Linux并行集群技術(shù)在HPC應(yīng)用中的主流地位及快速發(fā)展趨勢(shì),本文主要討論的也是這一架構(gòu)中的存儲(chǔ)系統(tǒng)問題。
當(dāng)前Linux并行集群的困惑----遭遇I/O瓶頸
當(dāng)一個(gè)計(jì)算任務(wù)被加載到集群系統(tǒng)時(shí),各個(gè)計(jì)算節(jié)點(diǎn)首先從I/O節(jié)點(diǎn)獲取數(shù)據(jù),然后進(jìn)行計(jì)算,最后再將計(jì)算結(jié)果寫入I/O節(jié)點(diǎn)。在這個(gè)過程中,計(jì)算的開始階段和結(jié)束階段I/O節(jié)點(diǎn)的負(fù)載非常大,而在計(jì)算處理過程中,卻幾乎沒有任何負(fù)載。
實(shí)際監(jiān)測(cè)結(jié)果顯示,當(dāng)原始數(shù)據(jù)量較大時(shí),開始階段和結(jié)束階段所占用的整體時(shí)間已經(jīng)相當(dāng)可觀,在有些系統(tǒng)中甚至可以占到50%左右。I/O效率的改進(jìn),已經(jīng)成為今天大多數(shù)Linux并行集群系統(tǒng)提高效率的首要任務(wù)。
解決I/O瓶頸的初步探討----瓶頸到底在哪里?
在上面的系統(tǒng)結(jié)構(gòu)圖中可以看出,如果把“以太網(wǎng)交換”以下的部分統(tǒng)統(tǒng)看作存儲(chǔ)系統(tǒng)的話,那么可能的瓶頸無外乎以下三種:
存儲(chǔ)設(shè)備本身性能,姑且稱之為“存儲(chǔ)設(shè)備瓶頸”
究竟哪一環(huán)節(jié)是最為關(guān)鍵的問題呢?讓我們結(jié)合實(shí)際情況,逐一的分析一下。
這樣看來,“存儲(chǔ)設(shè)備瓶頸”和“存儲(chǔ)通道瓶頸”似乎都不是難以解決的問題,那么“網(wǎng)絡(luò)交換瓶頸”的情況又如何呢?
照此看來,單一I/O節(jié)點(diǎn)架構(gòu)無疑是整個(gè)集群系統(tǒng)性能死結(jié)。那么考慮多I/O節(jié)點(diǎn)的架構(gòu)會(huì)如何呢?筆者的觀點(diǎn)是:多I/O節(jié)點(diǎn)架構(gòu)困難重重,但勢(shì)在必行。
解決I/O瓶頸的途徑----多I/O節(jié)點(diǎn)架構(gòu)
方案一、簡(jiǎn)單SAN架構(gòu)下的多I/O節(jié)點(diǎn)模式
實(shí)現(xiàn)多I/O節(jié)點(diǎn),最容易想到的第一步就是引入SAN架構(gòu)。那么,我們就先來分析一下簡(jiǎn)單的SAN架構(gòu)能否滿足Linux并行集群的需求。
由于基本的SAN架構(gòu)不能提供文件級(jí)共享,兩個(gè)I/O節(jié)點(diǎn)還是完全獨(dú)立的工作。前端的所有計(jì)算節(jié)點(diǎn)如果同時(shí)讀取同一個(gè)文件的話,還必須經(jīng)由一個(gè)I/O節(jié)點(diǎn)完成。由此可見,在單一任務(wù)情況下,多I/O節(jié)點(diǎn)的結(jié)構(gòu)形同虛設(shè),根本無法負(fù)載均衡的為前端計(jì)算節(jié)點(diǎn)提供服務(wù)響應(yīng)。為了解決這一問題??梢钥紤]在多I/O節(jié)點(diǎn)間需要引入文件級(jí)共享的工作機(jī)制。
方案二、多I/O節(jié)點(diǎn)間文件級(jí)共享
造成這一問題的根本原因在于,多I/O節(jié)點(diǎn)為系統(tǒng)引入了多個(gè)邏輯數(shù)據(jù)源,而目前主流并行集群系統(tǒng)都是在單一數(shù)據(jù)源的結(jié)構(gòu)下開發(fā)的。既然現(xiàn)有應(yīng)用不能在短時(shí)期內(nèi)有所改變,能否在提高前端計(jì)算節(jié)點(diǎn)I/O能力的同時(shí),回歸到單一邏輯數(shù)據(jù)源的結(jié)構(gòu)呢?其實(shí),以目前的技術(shù)而言,答案是肯定的。
方案三、單I/O節(jié)點(diǎn)蛻化為MDC,計(jì)算節(jié)點(diǎn)直接接入SAN
在這一架構(gòu)下,各個(gè)計(jì)算節(jié)點(diǎn)形式上還是通過NFS共享訪問I/O節(jié)點(diǎn),但實(shí)際的數(shù)據(jù)讀寫路徑則通過SAN交換直接到達(dá)磁盤陣列。這種模式的可行性已經(jīng)在現(xiàn)實(shí)中被證實(shí)。例如,IBM公司的GPFS技術(shù)就是以這種方式解決集群的I/O瓶頸問題的。
這一架構(gòu)從技術(shù)上看似乎是無懈可擊的。它真的一舉解決了所有問題的問題嗎?非也!當(dāng)考慮到成本的時(shí)候,問題就出現(xiàn)了。即使按照最保守的32個(gè)節(jié)點(diǎn)計(jì)算,在不考慮容錯(cuò)的前提下,整個(gè)SAN系統(tǒng)需要至少提供32個(gè)端口用于連接主機(jī),另外還至少需要4個(gè)端口連接磁盤陣列。要建立如此龐大的SAN網(wǎng)絡(luò),其成本將相當(dāng)可觀,這也就失去了Linux并行集群的最大優(yōu)勢(shì)----性能價(jià)格比。 #p#page_title#e#
FC-SAN的成本昂貴,能否考慮替代技術(shù)呢?那么不妨考慮以相對(duì)成本較低的iSCSI技術(shù)替代FC的解決方案。
方案四、以iSCSI技術(shù)取代FC
以iSCSI替代FC技術(shù)構(gòu)建SAN網(wǎng)絡(luò)的確可以降低一定的成本。按32節(jié)點(diǎn)的例子計(jì)算,不考慮磁盤陣列部分,F(xiàn)C-SAN的硬件成本約為每端口$2000以上,采用iSCSI技術(shù)可以將這個(gè)數(shù)字降低到$1000以內(nèi)。性能雖然受到一定影響,但仍會(huì)比目前的狀況好很多。
然而,iSCSI技術(shù)的引入只能降低硬件產(chǎn)品,而對(duì)軟件成本則沒有任何影響。SAN架構(gòu)文件共享軟件的一般價(jià)格是每節(jié)點(diǎn)$5000~$7000,當(dāng)硬件成本降低后,這部分軟件成本占了SAN成本的大部分,存儲(chǔ)系統(tǒng)的總體成本仍然明顯高于計(jì)算節(jié)點(diǎn)的總和。
方案五、多I/O節(jié)點(diǎn)間以PVFS實(shí)現(xiàn)負(fù)載均衡
讓我們重新回到多I/O節(jié)點(diǎn)的架構(gòu)下,來嘗試解決多邏輯數(shù)據(jù)源帶來的問題。并行文件系統(tǒng)(PVFS)似乎是個(gè)不錯(cuò)的選擇。
以PVFS構(gòu)建的系統(tǒng)甚至不再需要SAN系統(tǒng)內(nèi)文件共享,因?yàn)槊總€(gè)原始數(shù)據(jù)文件在I/O節(jié)點(diǎn)一級(jí)就被分割為一組小數(shù)據(jù)塊,分散存儲(chǔ)。
綜上所述,筆者認(rèn)為上述方案各有優(yōu)勢(shì),但問題也同樣明顯。如果用戶可以接受管理維護(hù)的復(fù)雜性,那么方案二似乎最為經(jīng)濟(jì)實(shí)惠。如果用戶愿意接受基于GPL無原廠商服務(wù)支持的自由產(chǎn)品,并在短期內(nèi)不考慮對(duì)非Linux集群系統(tǒng)的整合問題,則可以采用PVFS技術(shù),即采用方案五。方案三雖然是所有方案中性能最好的,但其高昂的成本顯然不是每一個(gè)用戶都愿意接受的。