基於以往的專案案例和實施經驗,我們精心策劃並開啟了“Geeki說”專欄,用來講述我們奧工工程師實踐故事和技術體會。
隨著《超算平臺的搭建實施》告一段落,“Geeki說”迎來了新的篇章。在接下來的幾篇中,我們將結合自身測試經驗,和大家梳理並行檔案系統的諸多方面,同時分享我們在超算上的並行檔案系統測試實踐結果。
那麼本篇,就讓我們從耳熟能詳的GPFS開始吧!
相信每一個運維工程師或多或少都和GPFS打過交道,奧工科技作為專業的融合計算服務提供商,我們奧工服務小分隊更是常年與GPFS相伴,在超算實施搭建中累計了大量相關的實踐經驗。
GPFS是IBM公司第一個共享檔案系統,它保證在資源組內的所有節點可以並行訪問整個檔案系統,具有可擴充套件、高效能等特點。它提供的檔案系統操作服務可以支援並行應用和序列應用,也允許任何節點上的並行應用同時訪問同一個檔案或者不同的檔案,提供統一命名介面。在如今軟體定義儲存的大背景下,GPFS與時俱進,在原有的基礎之上拓展了許多功能,諸如雲計算、大資料、雲端儲存和物件儲存等,並且還在持續不斷的增添新功能。
GPFS高效能和可拓展是必須要提一提的。因為GPFS的特性,使得其具有很多顯著的優點:比如可以使I/O保持在高速率上;減小訪問磁碟的次數;減少重複性磁碟I/O以提高效能;保證高吞吐的可持續性;提高對不同資料特點的定製化支援;提高磁碟頻寬和磁碟空間效率;所有節點都可以處理資料和元資料操作;簡化使用者對資料安全的操作;有效保障恢復(recovery)操作等等。
GPFS 物理架構分為三個層面:儲存層、GPFS 伺服器層以及客戶端層。儲存層將儲存透過 SAN 環境劃分給伺服器節點,伺服器節點將這些儲存磁碟進行配置並格式化形成最終的 GPFS 並行檔案系統格式,客戶端透過乙太網與所有的伺服器節點聯通,他們透過私有檔案系統協議來共享這個並行檔案系統,實現 IO 的併發讀寫。
(GPFS 架構圖)
不知道大家是否還記得前文中提到過“儲存的磁碟空間對映給io節點,再透過io節點上層安裝GPFS並行檔案系統,將儲存映射出來的磁碟組成檔案系統,掛載給所有計算節點”這一步驟?
先給大家展示下本次測試環境:
準備工作在之前的文章中都有提到,不知道大家是否還記得?
常見的操作有安裝所有的叢集節點(OS/軟體/補丁)、劃分共享儲存和配置好網路;關閉防火牆;維護主機Hosts;節點間建立互信;叢集中所有主機時間同步等等,想必看過超算平臺搭建實施系列 的小夥伴們都知道的。那就提一個新的點,也是需要特別注意的——安裝依賴包(yum -y install kernel-devel cpp gcc gcc-c++ kernel-header)。
完成準備工作之後就要開始正式安裝了,安裝一定要清楚此次安裝的系統版本,我們可以透過“cat /etc/redhat-release”來檢視系統版本。
安裝第一步是GPFS軟體安裝,所有需要使用到GPFS的節點均需要執行此步驟,我們可以透過XCAT定製指令碼自動化安裝,相對於之前的手動安裝效率大大提高。
第二步是透過執行mmbuildgpl命令編譯GPFS,然後將GPFS設定在全域性環境變數中,就完成GPFS的安裝過程了,是不是很簡單呢?
第三步就要開始配置GPFS叢集啦!這一步是在保證集群裡有GPFS環境變數的前提下,配置GPFS叢集,載入環境變數,建立叢集新增的節點模板檔案,將所有節點均新增進去,並定義節點的角色。最後,透過mmcrcluster命令用節點模板檔案建立叢集,配置節點許可mmchlicense, 建立完成可以使用mmlscluster檢視叢集相關資訊是否正常。
第四步是建立nds裝置,這一步需要提前準備磁碟描述檔案,透過mmcrnsd 命令以磁碟列表檔案建立整個GPFS檔案系統的nsd盤。建立完成後需要啟動GPFS服務,啟動所有節點來進行接下來的操作。
第五步是效能調優,針對使用檔案系統終端使用者的實際情況,基於使用者的應用特性、網路情況、檔案大小等動態調整GPFS的blocksize、pagepool、網路協議(RDMA)、Metadata大小……以滿足不同使用者的效能需求。
最後,準備好nsd底層的裝置與定製化配置,便可以透過 mmcrfs 建立GPFS對外提供功能強大的並行檔案系統了。
讀寫測試是反映多使用者併發讀寫作業時並行儲存系統所能提供的讀寫速率,是並行儲存系統的效能關鍵指標。如果檔案系統的讀寫效能不行的話,超算平臺使用者對儲存操作的命令會卡頓,甚至影響整體叢集的運作。
所以接下來,讓我們採用之前提到過的iozone讀寫測試對本環境中的GPFS進行一個簡單測試:
輸入命令列“./iozone -i 0 -i 1 -r 8k -s 128g -t 60 -+n -+m nl -e -Rb test.xls”
命令列中還有幾條引數想和大家說明下,首先是“0”和“1”,“0”=write/re-write,“1”=read/re-read;另外“-i ”用來指定測試內容,及指定運行於哪種測試模式,可以用-i 0 -i 1 -i 2進行多個測試,“-r” 設定記錄塊大小,“-s” 設定測試檔案大小,“-t” 後面跟多少執行緒,就是同時寫入多少個主機,“-Rb”將測試結果放入test.xls。其他的命令列引數還有很多,這裡就先不一一贅述了。
然後想和大家重點說一下“0”與“1”這兩個引數:“0”指代write和re-write,“write”測試向一個新檔案寫入的效能,“re-write”測試向一個已存在的檔案寫入的效能。當一個新檔案被寫入時,除了檔案中的資料需要被儲存,另外用於定位資料儲存在儲存介質的具體未知的額外資訊(又稱“元資料”)也需要被儲存。而當一個已存在的檔案被寫入時,因為元資料已存在,所以需要的工作量較少,re-write的效能通常會比write的效能高。
“1”指代read和re-read,“read”測試讀一個已存在的檔案的效能,“re-read”測試讀一個最近讀過的檔案的效能。同理,因為作業系統通常會快取最近讀過的檔案資料,快取可以被用於讀以提高效能,所以re-read的效能通常會比read高一些。
透過測試,我們得到如下的測試結果:
在GPFS的安裝部署與測試過程中,我們知道GPFS檔案系統可以保證資源組內的所有節點並行訪問整個檔案系統,並且檔案系統上的檔案可以分佈在不同的物理硬碟上;GPFS多個節點上執行的多個應用程式可以同時讀寫同一個檔案;當系統產生故障時,檔案日誌可以快速的恢復資料,並且可以保證資料的一致性……這些都是GPFS作為主流檔案系統非常顯著的優勢。
在和GPFS打交道的這麼多年,我們也總結了一些小技巧想和大家分享下,希望對大家以後安裝測試GPFS能有一些小幫助。
比如最新的GPFS編譯只需要透過執行mmbuildgpl即可,而以前的編譯需要很多複雜的步驟;GPFS並行檔案系統中的所有節點均可以免密碼相互SSH登入,因此配置整個GPFS並行檔案系統僅需要在叢集其中一臺節點上操作;配置Server和Client端是需要接受不同的許可證明的,Server端是直接連線儲存裝置或者直接提供硬碟NSD點,Client是使用GPFS裝置的節點,兩個節點均掛載正常,可能出現顯示Use% 100%的情況,等待一段時間即顯示正常,不需要太擔心。
以上,就是本篇對主流檔案系統之一GPFS的一些介紹。GPFS在超算領域的的地位不用我再多說,大多數的超算方案提供商都主要基於GPFS或Lustre的產品提供解決方案,企業也基本接受了這些產品。隨著近些年並行檔案系統業務環境的變化,大家對GPFS和Lustre的關注只增不減。
在介紹完GPFS之後,我們必須要和大家聊一聊和它同樣重要的主流並行檔案系統——Lustre。
下一篇,《並行檔案系統測試實踐之Lustre》,不見不散!
奧工科技
奧工科技作為一家專業的融合計算服務提供商,面向企業級IT客戶提供端對端、可資源異構、全生命週期的超算全棧服務,其中包括資源選型、專案規劃、實施服務、運維服務、運營支援、定製開發,全棧服務客戶超算叢集建設需求。
—END—