王景德,付喜春,董 一,陳建寧,李克臣
(東方地球物理勘探有限責(zé)任公司大慶物探研究院 黑龍江 大慶 163357)
在一個大規(guī)模數(shù)據(jù)中心,有4套PC集群系統(tǒng)(726個運算節(jié)點),配置了45套不同廠家、多種架構(gòu)的異構(gòu)存儲系統(tǒng),總物理容量18PB,劃分了150個數(shù)據(jù)文件系統(tǒng)。根據(jù)地震資料處理解釋應(yīng)用軟件的實際需要,每個運算節(jié)點都需要掛載100個以上的文件系統(tǒng),全部節(jié)點掛載文件系統(tǒng)總量達(dá)到數(shù)萬個。在實際生產(chǎn)中,集群運算節(jié)點必須掛載生產(chǎn)項目需要的全部文件系統(tǒng)才能夠正常運行作業(yè)。而節(jié)點本身的存儲容量遠(yuǎn)遠(yuǎn)無法滿足工作需求,需要將高性能、大容量外部存儲的文件系統(tǒng)作為本地磁盤使用,才能保障節(jié)點訪問到所需的項目數(shù)據(jù)。當(dāng)部分運算節(jié)點無法正常訪問文件系統(tǒng)時,便會影響全局的并行作業(yè)進(jìn)度。用戶分發(fā)作業(yè)前查詢所需要的文件系統(tǒng)如果沒有全部掛載,就無法正常讀寫地震數(shù)據(jù)導(dǎo)致作業(yè)運行失敗。因此,集群運算節(jié)點文件系統(tǒng)的高效、及時、準(zhǔn)確掛載,對地震資料處理解釋生產(chǎn)的影響巨大。對于集群節(jié)點文件系統(tǒng)掛載在日常運維管理方面存在以下問題:
1)在集群管理中,超級用戶的正確使用是保證系統(tǒng)安全的非常重要的因素。而傳統(tǒng)模式存儲文件系統(tǒng)的掛載需要超級用戶的權(quán)限完成,使系統(tǒng)安全存在不可預(yù)知的風(fēng)險。
2)對于不同廠家、多種架構(gòu)的異構(gòu)存儲文件系統(tǒng),在集群節(jié)點上的掛載方式、命令和服務(wù)器地址均不相同,系統(tǒng)運維管理人員需要正確記憶大量的信息,才能快速完成海量文件系統(tǒng)掛載工作。
3)傳統(tǒng)方式需手動輸入與各個文件系統(tǒng)匹配的命令完成掛載,速度慢且容易出現(xiàn)錯誤,很大程度影響生產(chǎn)工作效率。
針對海量異構(gòu)存儲文件系統(tǒng)掛載存在的技術(shù)問題,通過對系統(tǒng)級優(yōu)化、文件系統(tǒng)管理、文件系統(tǒng)查詢3個方面進(jìn)行技術(shù)研究,研發(fā)存儲文件系統(tǒng)管理新技術(shù),大幅度提高生產(chǎn)工作效率。
面對多套大規(guī)模PC集群系統(tǒng),對于系統(tǒng)運維管理人員來說保證系統(tǒng)的安全和穩(wěn)定是工作的重中之重[1],因此對文件系統(tǒng)管理的技術(shù)研究要在系統(tǒng)安全穩(wěn)定的前提下進(jìn)行。傳統(tǒng)模式文件系統(tǒng)的掛載和卸載,必須使用超級用戶的權(quán)限才能進(jìn)行,而頻繁的使用超級用戶工作,使系統(tǒng)安全存在不可預(yù)知的風(fēng)險[2]。通過系統(tǒng)配置優(yōu)化,實現(xiàn)普通用戶擁有超級用戶的部分功能,替代完成文件系統(tǒng)掛載、卸載等工作。
sudo是一個允許普通用戶執(zhí)行部分或者全部超級用戶命令的工具[3]。對sudo工具相應(yīng)的配置文件進(jìn)行優(yōu)化,設(shè)定指定的普通用戶獲得超級用戶才能夠進(jìn)行的掛載、卸載文件系統(tǒng)的權(quán)限[4]。
通過對/etc/sudoers文件進(jìn)行配置優(yōu)化,設(shè)定系統(tǒng)運維管理人員獲取特定的超級用戶權(quán)限,實現(xiàn)普通用戶可以創(chuàng)建和刪除目錄,使用掛載、卸載命令對文件系統(tǒng)科學(xué)管理,最大程度保證系統(tǒng)的安全性和穩(wěn)定性[5]。
面對數(shù)據(jù)中心多套集群、多節(jié)點、多存儲文件系統(tǒng)的現(xiàn)狀,不同架構(gòu)、不同類型的異構(gòu)存儲文件系統(tǒng)掛載方式、命令以及掛載服務(wù)器IP地址均不相同,需要運維管理人員手動輸入與各個文件系統(tǒng)匹配的掛載命令。4套集群按照每個運算節(jié)點平均掛載120個文件系統(tǒng)計算,使用傳統(tǒng)方式手動批量掛載全部文件系統(tǒng)大約需要3小時。而且還需要詳細(xì)準(zhǔn)確了解文件系統(tǒng)匹配的掛載服務(wù)器IP地址、掛載命令才能正確執(zhí)行。完成這項工作占用了大量的系統(tǒng)時間,還容易產(chǎn)生人為錯誤[6]。
此外,個別集群運算節(jié)點在重新啟動后,需要恢復(fù)啟動前掛載的全部文件系統(tǒng)才能交付用戶使用,而單獨節(jié)點通過命令行手動掛載全部文件系統(tǒng)所需工作量和時間,與整套集群的掛載基本相同。文件系統(tǒng)掛載速度決定了用戶的工作效率。因此,針對這些問題開發(fā)了文件系統(tǒng)管理軟件fsmgr(以下簡稱fsmgr軟件)。
fsmgr軟件使用shell語言開發(fā)。為了提高軟件的可讀性和易修改性[7],編寫了多個具有不同功能的子程序腳本文件,通過主程序軟件fsmgr對子程序腳本的調(diào)用,實現(xiàn)軟件的全部功能[8]。同時由于每套集群都有各自的管理節(jié)點、計算節(jié)點、IO節(jié)點,每套集群安裝的軟件、使用的用戶也各不相同,因此針對不同集群的存儲系統(tǒng),開發(fā)了相應(yīng)的fsmgr軟件和子程序腳本文件。
基于fsmgr軟件,開發(fā)了兩類子程序腳本文件,分別是運維管理賬號腳本文件和文件系統(tǒng)掛載命令腳本文件(簡稱“mtfs”)。在運維管理賬號腳本文件中,添加允許使用fsmgr管理軟件的普通用戶賬號,以此規(guī)范使用該軟件的用戶。在“mtfs”腳本文件中,記錄當(dāng)前全部文件系統(tǒng)的名稱和掛載命令。通過此腳本進(jìn)行文件系統(tǒng)掛載,無需記住相應(yīng)的掛載命令及文件系統(tǒng)對應(yīng)的服務(wù)器IP地址,并且當(dāng)有新增文件系統(tǒng)需要掛載時,只需要在“mtfs”腳本中新增對應(yīng)的文件系統(tǒng)名稱和掛載命令,即可實現(xiàn)動態(tài)、高效的統(tǒng)一管理存儲文件系統(tǒng)[9]。
fsmgr主程序軟件由三部分功能組成:①運算節(jié)點關(guān)機(jī)之前記錄所掛載的文件系統(tǒng)信息;②開機(jī)后對要掛載的文件系統(tǒng)進(jìn)行恢復(fù);③完成日常工作中的文件系統(tǒng)掛載任務(wù)。fsmgr工作原理如圖1所示。
圖1 文件系統(tǒng)管理軟件fsmgr功能框圖
使用fsmgr軟件時首先判斷當(dāng)前用戶是否為運維管理賬號腳本中定義的用戶,如果不是則提示無權(quán)限使用。針對fsmgr軟件的3種功能,編程設(shè)計了相應(yīng)的3個參數(shù)選項:-b、-r、-m。執(zhí)行“fsmgr -b”命令,在運算節(jié)點關(guān)機(jī)之前對所掛載的文件系統(tǒng)進(jìn)行記錄,獲取需要備份的節(jié)點掛載的所有文件系統(tǒng)名稱,并將獲得的文件系統(tǒng)名稱保存在“fsnamelist.XXX”的文件中;執(zhí)行“fsmgr -r”命令,開機(jī)后對要掛載的文件系統(tǒng)進(jìn)行恢復(fù),讀取之前保存的備份文件“fsnamelist.XXX”,再調(diào)用子程序腳本“mtfs”自動進(jìn)行節(jié)點上文件系統(tǒng)的掛載;執(zhí)行“fsmgr -m”命令,完成日常工作中的文件系統(tǒng)掛載,可以同時對多節(jié)點并行操作,輸入需要掛載的節(jié)點范圍、文件系統(tǒng)名稱,調(diào)用 “mtfs” 腳本文件,在相應(yīng)節(jié)點上完成文件系統(tǒng)的掛載。若使用中未添加參數(shù)或參數(shù)出現(xiàn)錯誤,軟件將顯示相應(yīng)的提示信息,提示用戶進(jìn)行正確的操作。
在實際工作中,經(jīng)常出現(xiàn)部分運算節(jié)點的文件系統(tǒng)沒有全部正常掛載的情況,生產(chǎn)用戶運行并行作業(yè)或者多節(jié)點批量提交作業(yè),一旦遇到某個文件系統(tǒng)未掛載的情況,導(dǎo)致作業(yè)無法正常運行進(jìn)而影響全局的并行作業(yè)進(jìn)度。針對這個問題,使用shell語言開發(fā)了文件系統(tǒng)掛載查詢軟件(以下簡稱fslist軟件)。
fslist軟件也是基于集群分組編寫,與fsmgr軟件配合使用。在運維管理賬號腳本文件定義的用戶使用fslist軟件時,可以通過相應(yīng)的參數(shù),查詢節(jié)點文件系統(tǒng)狀態(tài)后直接將缺失的自動掛載[10]。沒有定義的其他用戶僅可以使用該軟件查詢指定的文件系統(tǒng)是否全部掛載到相應(yīng)節(jié)點上。
fslist軟件為不同的功能設(shè)計了相應(yīng)參數(shù): ①不帶參數(shù)。獲取用戶輸入的節(jié)點組及需要查詢的文件系統(tǒng)名稱,通過mount命令得到當(dāng)前節(jié)點掛載的所有文件系統(tǒng)信息,查詢其中是否包含正在查找的文件系統(tǒng),若包含則返回“節(jié)點名+文件系統(tǒng)名+OK”的信息,若沒有則返回“節(jié)點名+文件系統(tǒng)名+not mounted”信息。②已定義的運維管理用戶,通過-m參數(shù)可以在完成上述功能基礎(chǔ)上,將缺失的文件系統(tǒng)重新掛載到相應(yīng)節(jié)點上。
軟件開發(fā)完成后,對軟件進(jìn)行測試及應(yīng)用。
fsmgr、fslist軟件可在安裝linux操作系統(tǒng)的集群上免安裝使用。目前已應(yīng)用于數(shù)據(jù)中心4套PC集群中。
fsmgr軟件主要應(yīng)用于集群運算節(jié)點關(guān)機(jī)、重啟后,應(yīng)用效果包括:
1)使用運維管理賬號輸入命令“fsmgr -b node1”,對node1節(jié)點當(dāng)前掛載文件系統(tǒng)信息進(jìn)行備份,生成fsnamelist.XXX文件,存放節(jié)點當(dāng)前掛載的所有文件系統(tǒng)名稱,如圖2所示:
圖2 運算節(jié)點當(dāng)前已掛載文件系統(tǒng)備份
2)重啟node1節(jié)點并對該節(jié)點掛載文件系統(tǒng)進(jìn)行恢復(fù)時,使用運維管理賬號輸入命令“fsmgr -r node1”,即可按照備份文件fsnamelist.XXX,恢復(fù)掛載。該命令可以同時并行恢復(fù)多個節(jié)點的文件系統(tǒng)。
3)若需要完成日常工作中的文件系統(tǒng)掛載任務(wù),使用運維管理賬號輸入命令“fsmgr-m node1-node FS1 FS2”,即可通過fsmgr軟件,對node1-nodeX范圍的運算節(jié)點,自動掛載FS1、FS2等文件系統(tǒng)。
fslist軟件主要應(yīng)用于運算節(jié)點掛載文件系統(tǒng)的查詢、缺失文件系統(tǒng)的掛載。應(yīng)用效果包括:
1)輸入命令“fslist node1 FS1 FS2”,使用未定義的普通用戶檢查文件系統(tǒng)掛載情況,效果如圖3所示。
圖3 普通用戶查詢文件系統(tǒng)掛載情況
圖4 運維管理用戶輸入文件系統(tǒng)名稱查詢并掛載文件系統(tǒng)
2)在安裝Geoeast軟件的集群上,輸入命令“fslist-pnode1 projname”,普通用戶通過項目名和節(jié)點名稱,檢查每一個運算節(jié)點上生產(chǎn)項目需要的文件系統(tǒng)掛載情況。
3)輸入命令“fslist-m node1 FS1 FS2”,運維管理用戶通過相應(yīng)參數(shù)在查詢文件系統(tǒng)掛載情況的同時,將缺失的文件系統(tǒng)重新掛載到運算節(jié)點,如4所示;輸入命令“fslist-pm node1 projname”,通過項目名查詢文件系統(tǒng)并掛載項目需要的文件系統(tǒng)。
在擁有70節(jié)點的曙光集群上對fsmgr軟件及fslist軟件進(jìn)行應(yīng)用及效果檢查。
在日常工作中平均每個節(jié)點需要掛載120個文件系統(tǒng),當(dāng)整個集群關(guān)機(jī)重啟后,用傳統(tǒng)方式手動輸入120次批量掛載文件系統(tǒng)的命令,大約需要50 min才能完成文件系統(tǒng)掛載,使用fsmgr軟件,軟件能夠自動將所有需要的文件系統(tǒng)掛載到節(jié)點上,大約需要6 min。重啟一個節(jié)點使用傳統(tǒng)方式掛載文件系統(tǒng)大約需要30 min,使用fsmgr軟件大約需要3 min。
fslist軟件在日常工作中使用時能自動地根據(jù)文件系統(tǒng)名稱、項目名稱等方式查詢節(jié)點上有哪些需要的文件系統(tǒng)未掛載,并將未掛載的文件系統(tǒng)自動掛載到節(jié)點上。與傳統(tǒng)的用戶手動的通過輸入大量的命令、文件系統(tǒng)名稱來查詢再掛載相比極大的提高了工作效率。以查詢5個文件系統(tǒng)掛載情況進(jìn)行測試,使用傳統(tǒng)方式查詢并掛載文件系統(tǒng)大約需要16 min,使用fslist軟件大約需要5 min。
通過大量測試得出結(jié)論,在4套集群上使用fsmgr軟件掛載文件系統(tǒng)比傳統(tǒng)方式提高工作效率約6.4倍,備份、恢復(fù)掛載文件系統(tǒng)準(zhǔn)確率100%,自動掛載節(jié)點文件系統(tǒng)準(zhǔn)確率100%。使用fslist軟件查詢并掛載文件系統(tǒng)比傳統(tǒng)方式提高工作效率約2.3倍,自動查詢節(jié)點漏掛文件系統(tǒng)準(zhǔn)確率100%,補掛載文件系統(tǒng)準(zhǔn)確率100%。
研發(fā)了異構(gòu)存儲文件系統(tǒng)管理新技術(shù),實現(xiàn)了快速、準(zhǔn)確、高效地自動批量掛載、查詢文件系統(tǒng),節(jié)省了大量的人工操作時間,減少了人為操作失誤,為海量異構(gòu)存儲文件系統(tǒng)進(jìn)行科學(xué)統(tǒng)一管理提供了新的技術(shù)工具,極大地提高了地震處理解釋系統(tǒng)運行效率。新技術(shù)方法可在同行業(yè)大規(guī)模數(shù)據(jù)中心異構(gòu)存儲文件系統(tǒng)管理中應(yīng)用,具有非常廣闊的前景。