張新諾,王 彬
(國家氣象信息中心,北京 100081)
隨著信息化進程的推動,各行各業所需的相關信息量越來越多,需要更高效更安全的數據存儲環境。在并行存儲迅速發展的情況下,由于性能優勢而備受國內各企事業單位信賴的GPFS系統得到了廣泛應用。
IBM公司的GPFS文件系統全稱為general parallel file system(通用并行文件系統),是IBM公司開發并生產的一種并行文件系統,普遍應用于服務器集群系統中[1]。GPFS文件系統為集群中的節點提供統一的數據存儲空間,并允許集群中任何一個節點同時訪問相同的數據。簡單來說,GPFS是一個高性能、可共享磁盤的并行文件系統[2]。
GPFS文件系統為服務器集群提供高性能的數據訪問,該文件系統允許數據被集群中多個節點同時、高效的訪問。大多數現有的文件系統是專為單一服務器環境提供服務的,添加更多文件服務器并不會提高文件系統的性能。GPFS文件系統將獨立的數據分塊,并存放在多塊硬盤中,以并行的方式進行數據的輸入和輸出,能夠為服務器提供高性能的數據服務[3-4]。GPFS提供的其他功能包括高可用性、支持異構集群、災難恢復、安全性、數據管理接口(DMAPI)、分級存儲管理(HSM)和信息生命周期管理(ILM)[5]。
GPFS文件系統的安裝較為簡便,對應不同的操作系統安裝其相應的安裝包即可。安裝完成后,不同的操作系統其對應的配置方式略有不同。文中以SUSE 10為例,簡述文件系統的配置方式。
配置節點文件主要是確定該GPFS文件系統可用于集群的范圍,并確定文件系統的管理節點和仲裁節點的位置,配置如下:
root@hs21-1 [/root]
# vim /usr/lpp/mmfs/nodef
hs21-1.site:quorum
hs21-2.site
hs21-3.site
x3650-01.site:quorum-manager
x3650-02.site:quorum-manager
在GPFS文件系統中,至少需要一個仲裁節點(quorum),用于集群間的通信及數據完整性檢查。由于該集群中節點較多,故設置三個仲裁節點,當任何一個仲裁節點出現問題時,集群節點仍能和其他的仲裁節點保持通信,保證GPFS文件系統仍能正常運行[6-7]。若多個仲裁節點發生故障,則集群節點無法正常通信,此時GPFS文件系統將不可用。在hs命名為刀片服務器,x3650服務器為普通X86機架服務器,為了保證文件系統的安全性,將兩臺x3650機架服務器定義為仲裁節點(quorum)和管理節點(manager),即quorum-manager類型節點。該種類型節點用于管理集群的配置及文件系統監控等方面[8]。
將hs21-1.site作為GPFS集群的主管理者,在該節點上進行GPFS集群建立的操作。操作命令為:
mmcrcluster -C 集群名 -U 域名 -N各節點名 -p 主NSD服務器 -s 備NSD服務器
具體命令如下:
root@hs21-1 [/root]
#mmcrcluster -C hs21.cma.GPFS -U hs21.cma.GPFS -N /usr/lpp/mmfs/nodef -p hs21-1.site -s x3650-02.site
該命令中各參數含義如下:
-C hs21.cma.GPFS:設定集群名稱為hs21.cma.GPFS
-U hs21.cma.GPFS:設定域名為hs21.cma.GPFS
-N /tmp/GPFS/nodef:指定各節點的文件名
-p hs21-1.site指定主NSD:服務器為hs21-1.site
-s x3650-02.site指定備NSD:服務器為x3650-02.site
命令執行完成后,執行mmlscluster命令檢查集群建立情況,結果見圖1。

圖1 GPFS文件系統建立情況
2.3.1 建立NSD(network shared disk)配置文件
該文件系統是創建在由36塊硬盤組成的存儲介質中,其中每3塊硬盤組建RAID 5磁盤陣列[9-10]。可用fdisk -l查看各硬盤信息,顯示結果如下:
root@hs21-1 [/root]
#fdisk -l
Disk /dev/sdal: 1998.9 GB,1998985153536 bytes
255 heads, 63 sectors/track,243029 cylinders
Units=cylinders of 16065 * 512=8225280 bytes
……
根據硬盤信息建立NSD配置文件,配置文件的文件名可根據個人習慣命名,文中將其命名為DescFile,用于NSD的劃分。NSD配置文件內容格式為:磁盤名:主節點名:備節點名:磁盤類型:失效組別:NSD名:存儲池:(“:”為必須內容)。
根據命令格式編輯DescFile文件:
root@hs21-1 [/root]
# viDescFile
/dev/sdal:hs21-1.site:x3650-02.site:dataAndMetadata:4001:ft01_nsd1::
/dev/sdam:hs21-1.site:x3650-02.site:dataAndMetadata:4001:ft01_nsd2::
……(省略其他NSD硬盤)
/dev/sdbu:hs21-1.site:x3650-02.site:dataAndMetadata:4001:ft01_nsd36::
該文件中各字段具體解釋如下:
(1)/dev/sdbu:代表硬盤名稱,通過fdisk -l命令獲得,不同系統對應的硬盤名稱略有不同。
(2)hs21-1.site:代表NSD的主I/O節點,該節點名稱根據文件系統的實際情況配置。
(3)X3650-02.site:代表NSD的備I/O節點。無該節點可以不填。
(4)dataAndMetadata:代表磁盤類型。NSD磁盤根據數據類型可以分為四種,分別為dataAndMetadata、dataOnly、metadataOnly和descOnly。
GPFS需要保存兩種類型的數據,即data和metadata。metadata(元數據)是用于GPFS自身索引數據以及內部配置信息。這部分元數據只能保存在dataAndMetadata或者metadataOnly類型的磁盤中。dataAndMetadata說明該磁盤既可以存放元數據,也可以存放其他數據。在一些對元數據訪問要求非常高的系統中,推薦使用Flash單獨存放GPFS的元數據。在這種情況下,Flash里的磁盤就設置為metadataOnly,其他的磁盤就設置為dataOnly。descOnly類型的磁盤僅用于存放文件系統副本,并且在發生故障時可根據第三失效組恢復相關配置。一般來說,dataAndMetadata為NSD磁盤的默認類型[11-13]。
(5)4001:代表失效組(FailureGroup),可以不填,默認為4001。失效組主要用于定義一組來自于同一存儲系統或者有一定隔離效果(如同一存儲中的同一個RAID)的磁盤[14]。如果啟用GPFS的Replica(復制)功能,GPFS會把同一個數據塊的2個或者3個replica放置在不同的FailureGroup里。這樣的話,同一個FailureGroup里不管壞多少個磁盤,都不會影響數據訪問。FailureGroup的數值本身沒有具體含義,主要為了區分不同失效組,數值相同的磁盤屬于同一個失效組。如果啟用GPFS的replica功能,每個數據塊會多占用一倍(replica=2)甚至兩倍(replica=3)的磁盤空間。一般而言,如果存儲系統在硬件上已經保證了冗余,比如RAID以及多路徑到SAN交換機,磁盤失效的概率已經很低,一般情況沒必要啟用Replica功能。
(6)ft01_nsd*:代表NSD盤的名稱,可根據需要自行命名。
(7)命令最后一位代表存儲池,如不填代表系統默認的存儲池。
2.3.2 創建GPFS所需的NSD盤
編輯DescFile完成后,執行mmcrnsd -F命令,即可生成NSD盤。命令格式為:mmcrnsd -F NSD配置文件。
命令執行如下:
root@hs21-1 [/root]
#mmcrnsd -F DescFile
mmcrnsd:Processing disk sdal
……
mmcrnsd:Propagating the cluster configuration data to all
affected nodes.This is an asynchronous process.
命令執行完成后,可執行命令mmlsnsd -L檢查NSD盤的創建情況。
NSD盤創建完成后,需執行mmstartup -a啟動GPFS。只有啟動GPFS后,才能繼續進行文件系統的創建。創建文件系統的命令為:
mmcrfs 文件系統設備名 “NSD盤名” -T 文件系統掛載點 -A yes/no -B 數據塊大小
具體命令如下:mmcrfs /dev/fs1 "ft01_nsd1;ft01_nsd2;…(中間略)…;ft01_nsd36" -T /GPFS/fs1
命令中各字段具體解釋如下:
/dev/fs1為文件系統設備名,創建文件系統時,系統會在集群所有節點自動創建。在4.2.1版本及更新的版本中,GFPS在Linux中將不會在/dev目錄下生成文件系統設備名,因此在Linux版本的mount命令中也不會出現/dev的前綴。
“ft01_nsd1;……ft01_nsd36”為前文創建的NSD盤。也可使用創建NSD盤的DescFile文件,命令為:mmcrfs /dev/fs1 -F /root/DescFile -T /GPFS/fs1。
-A表示開機是否自動加載掛載點,默認是no,命令中可以不使用。
-B表示數據塊大小,默認是256K,如果不加-B則表示使用默認數據塊大小,文件系統創建后不可更改。數據塊的大小選擇與應用程序下發的I/O的大小接近時,GPFS的性能較好。GPFS本身有很多機制來適應不同的I/O大小。當應用程序下發的I/O大小不是很清楚,或者很復雜時,可以選擇1 MB來折中。
執行掛載文件系統命令掛載文件系統,命令為:mmmount文件系統名。文件系統掛載完成后,可執行df命令查看文件系統情況。如能夠顯示所建文件系統的路徑和名稱,說明文件系統已經建設完成。具體執行命令為:mmmount fs1。
(1)mmstartup:為啟動文件系統的命令,根據添加不同參數可以啟動單節點的文件系統,也可啟動所有集群文件系統。
單節點文件系統啟動方式:執行mmstartup命令。
集群文件系統啟動方式:執行mmstartup -a命令。
(2)mmshutdown:為關閉文件系統命令,同樣根據添加不同參數可以關閉單節點文件系統,也可關閉所有集群文件系統。
單節點文件系統關閉方式:執行mmshutdown。
集群文件系統關閉方式:執行mmshutdown -a,其執行結果顯示的時間會比關閉單節點時間略長。
通常在重啟節點時,要先關閉GPFS文件系統等常用軟件,避免節點重啟完成后GPFS軟件出現故障。
通過長時間使用和維護GPFS文件系統,發現GPFS文件系統出現的故障多為硬件故障,因此文中主要從硬件角度處理GPFS故障。當GPFS文件系統出現建故障時,需要通過查看集群GPFS狀態、磁盤狀態、文件系統故障范圍等多方面來確定故障原因。
3.2.1 查看集群節點狀態
通過命令mmgetstate -a可查看集群各節點GPFS狀態,執行結果如下:
root@hs21-1 [/root]
#mmgetstate -a
Node number Node name GPFS state
1 hs21-1 active
3 hs21-3 active
mmgetstate: The following nodes could not be reached:
hs21-2.site
從執行結果可以看到,節點hs21-2.site出現故障無法加入到集群中,其他節點GPFS都是健康的active狀態,若GPFS state顯示其他狀態,如GPFS stat顯示down時,登錄到相關節點查看GPFS是否被關閉。檢查/var/adm/ras目錄下的mmfs.log.latest文件內容,查看是否有GPFS關閉的信息,如執行如下命令:
root@mdss-zc2 [ /var/adm/ras ]
# tail -500mmfs.log.latest
……
Wed May 17 00:40:42 GMT 2017:mmremote: Completing GPFS shutdown ...
如結果所示,可知該節點GPFS被執行shutdown操作,可用mmstartup命令嘗試能否重啟GPFS文件系統。若mmfs.log.latest文件中沒有GPFS文件系統的shutdown信息,則GPFS文件系統進程被關閉或由于其他原因造成文件系統無法正常工作,可先執行mmshutdown,再執行mmstartup嘗試重啟文件系統。如果無法正常啟動,可用其他命令檢查物理硬盤等其他故障原因。
3.2.2 查看NSD狀態檢查物理硬盤
在使用GPFS文件系統過程中,有時會發生文件系統出現掛起狀態,從而導致文件系統不可用,如在執行df命令時,顯示“df:`/dev/fs1:Stale NFS file handle”,說明fs1文件系統被掛起。此時可檢查文件系統對應NSD是否出現故障。
查詢文件系統NSD命令:mmlsdisk文件系統名。
執行命令見圖2。

圖2 查看文件系統NSD狀態
通過查看可以看出,該文件系統中有三個NSD出現故障,顯示出down的狀態。當NSD出現down的狀態時,說明系統中與down狀態NSD相對應的物理硬盤出現故障。根據硬盤狀態檢查該硬盤所在RAID狀態。如果RAID完好,只需更換故障硬盤,重新掛載文件系統即可;如果RAID出現故障,則可能需要重建文件系統。
當存儲系統中的RAID出現故障,首先要查看3塊物理硬盤出現故障的原因,嘗試能夠將故障NSD的狀態改為up。如果NSD狀態能夠恢復,則說明不是所有的硬盤都存在物理故障,文件系統中的數據也不會出現丟失的現象,此時,文件系統也可以被恢復并被掛載。恢復NSD狀態可使用如下命令:
mmchdisk 文件系統名 start -d “故障NSD1;故障NSD2;……;故障NSDn”
具體操作命令為:mmchdisk fs1 start -d “ft01_nsd4;ft01_nsd5;ft01_nsd6”。
執行完成后,檢查NSD狀態。如果NSD狀態都是UP狀態,則可執行mmumount fs1和mmmount fs1來恢復文件系統的正常運行。
若NSD狀態仍是down或者unreacoverd,則表示文件系統仍存在問題,文件系統中的數據可能已經無法恢復。
在故障狀態下,故障NSD已經無法與正常NSD同步數據,此時文件系統可以掛載,但無法對文件系統中的內容進行操作。為了恢復文件系統的正常運行,需要重建文件系統。重建文件系統會造成文件系統中的數據丟失,因此需要盡量備份文件系統數據。
為了盡可能備份文件系統中的數據,可以先屏蔽故障NSD,再嘗試以只讀模式掛載文件系統。由于文件系統缺少3個NSD,文件系統中的數據已經不完整,在備份數據過程中會出現數據不完整情況[15-19]。屏蔽故障NSD和以只讀模式掛載文件系統命令如下:
屏蔽故障NSD:mmfsctl 文件系統名 exclude -d “故障NSD1;故障NSD2;故障NSD3”。
以只讀模式掛載文件系統:mmmount 文件系統名-o rs。
3.2.3 重建GPFS文件系統
數據備份完成后,需要重建文件系統才能使文件系統恢復正常工作。重建文件系統時,文件系統中所有數據都將丟失。重建文件系統的步驟:刪除故障文件系統,刪除故障文件系統NSD,重建NSD,重建文件系統。具體命令如下:
(1)刪除故障文件系統。
mmdelfs -p 故障文件系統名:刪除故障文件系統,為重建系統做準備。
(2)刪除故障文件系統NSD。
mmdelnsd “NSD1;NSD2;……NSDn”:更換故障硬盤后,為了重建故障文件系統,需要將該文件系統所有NSD硬盤初始化,因此需要先刪除現有NSD,再進行NSD和文件系統的重建。
(3)重建NSD和重建文件系統。
具體操作可參考前文創建NSD和創建文件系統時的步驟,完成相關的操作后,即可重新使用該文件系統。
目前,GPFS并行文件系統廣泛應用于各企事業單位。隨著信息化的發展,各企事業單位需要結合自身情況來配置使用GPFS并行文件系統,保證數據能夠被高效、安全地使用。因此,為了更加高效、穩定地使用各種數據,應該繼續深入探討GPFS并行文件系統相關內容,為更好地使用GPFS文件系統打下基礎。
參考文獻:
[1] 王 鷗,趙永彬.GPFS共享文件系統在企業門戶系統中應用的研究[J].電腦知識與技術,2015,11(10):15-17.
[2] 張志堅,伍光勝,孫偉忠,等.IBMFlexP460高性能計算機系統及氣象應用[J].現代計算機,2016(9):51-55.
[3] 龐麗萍,何飛躍,岳建輝,等.并行文件系統集中式元數據管理高可用系統設計[J].計算機工程與科學,2004,26(11):87-88.
[4] 肖 偉,趙以爽.并行文件系統簡介及主流產品對比[J].郵電設計技術,2012(7):31-36.
[5] 楊 昕.GPFS文件系統原理和模式IO優化方法[J].氣象科技,2006,34:27-30.
[6] 張 璽.并行文件系統下數據遷移功能的實現[J].北京信息科技大學學報:自然科學版,2012,27(5):77-80.
[7] 解寶琦,王金國.構建CentOS+GPFS集群[J].網絡安全和信息化,2017(2):85-88.
[8] 葉雅泉.GPFS在省級通信系統中的應用[J].移動信息,2016(6):113.
[9] SCHMUCK F,HASKIN R L.GPFS:a shared-disk file system for large computing clusters[C]//Proceedings of the conference on file and storage technologies.Berkeley,CA,USA:USENIX Association,2002:231-244.
[10] PLANK J S.The Raid-6 Liber8Tion code[J].International Journal of High Performance Computing Applications,2009,23(3):242-251.
[11] CAULFIELD A M,SWANSON S.QuickSAN:a storage area network for fast,distributed,solid state disks[J].ACM SIGARCH Computer Architecture News,2013,41(3):464-474.
[12] 沈 瑜,孫 婧,李 娟.中國氣象局高性能計算機系統高可靠性設計[J].信息安全與技術,2013,4(6):42-45.
[13] JONES T,KONIGES A E,YATES R K.Performance of the IBM general parallel file system[C]//Proceedings of the 14th international symposium on parallel and distributed processing.Cancún,Mexico:IEEE,2000:673-681.
[14] LIU Gia-Shie.Three m-failure group maintenance models for M/M/N unreliable queuing service systems[J].Computers & Industrial Engineering,2012,62(4):1011-1024.
[15] VIJZELAAR S,BOS H,FOKKINK W.Brief announcement:a shared disk on distributed storage[C]//Proceedings of the 29th ACM SIGACT-SIGOPS symposium on principles of distributed computing.Zürich,Switzerland:ACM,2010:79-80.
[19] SZELIGA B,NGUYEN T,SHI Weisong.DiSK:a distributed shared disk cache for HPC environments[C]//International conference on collaborative computing:networking,applications and worksharing.Washington D.C,USA:IEEE,2009:1-8.