詳談:pNFS增強(qiáng)文件系統(tǒng)架構(gòu)


通過(guò) NFS(由服務(wù)器、客戶機(jī)軟件和兩者之間的協(xié)議組成),一臺(tái)計(jì)算機(jī)就可以和同一網(wǎng)絡(luò)中的其他計(jì)算機(jī)共享物理文件系統(tǒng)。NFS 隱藏服務(wù)器的文件系統(tǒng)的實(shí)現(xiàn)和類型。對(duì)于在 NFS 客戶機(jī)上運(yùn)行的應(yīng)用程序,共享的文件系統(tǒng)看起來(lái)和本地存儲(chǔ)一樣。
下圖演示了在包含各種操作系統(tǒng)的網(wǎng)絡(luò)中部署 NFS 的一般方法。這些操作系統(tǒng)包括支持 NFS 標(biāo)準(zhǔn)的 Linux、Mac OS X 和 Windows (NFS 是 Internet Engineering Task Force 惟一支持的文件系統(tǒng))。
簡(jiǎn)單的NFS配置

在圖中,Linux 機(jī)器是 NFS 服務(wù)器,它共享或?qū)С?用 NFS 的話講)一個(gè)或多個(gè)物理附帶文件系統(tǒng)。Mac OS X 和 Windows 機(jī)器是 NFS 客戶機(jī)。它們分別使用或掛載 共享的文件系統(tǒng)。實(shí)際上,掛載 NFS 文件系統(tǒng)和掛載本地驅(qū)動(dòng)分區(qū)的結(jié)果是一樣的 — 在掛載時(shí),應(yīng)用程序僅根據(jù)訪問(wèn)控制讀寫(xiě)文件,而不注意持久化數(shù)據(jù)所需的技巧。
對(duì)于通過(guò) NFS 進(jìn)行共享的文件系統(tǒng),Read 和 Write 操作 — 由藍(lán)色陰影表示 — 從客戶機(jī)(這里是 Windows 機(jī)器)遍歷到服務(wù)器。這個(gè)服務(wù)器最終執(zhí)行獲取或持久化數(shù)據(jù)的請(qǐng)求或修改文件元數(shù)據(jù)的請(qǐng)求,比如權(quán)限或最后的修改時(shí)間。
NFS 的功能非常強(qiáng)大,從廣泛將它用作NAS就可以看出來(lái)。它可以在 TCP)和UDP上運(yùn)行,并且相對(duì)容易管理。此外,NFS 的最新許可版本是 NFS v4,它提高了安全性、增強(qiáng)了 Windows 和類 UNIX? 系統(tǒng)之間的互操作性,并且通過(guò)鎖租賃提供更好的排他性(NFSv4 于 2003 年首次獲得批準(zhǔn))。NFS 的基礎(chǔ)設(shè)施也不昂貴,因?yàn)樗ǔD茉谄胀ǖ?Ethernet 硬件上很好地運(yùn)行。NFS 能夠解決大部分的問(wèn)題。
不過(guò),NFS 處理高性能計(jì)算HPC一直不夠理想。高性能計(jì)算涉及到的數(shù)據(jù)文件非常龐大,并且 NFS 客戶機(jī)的數(shù)量可能達(dá)到幾千臺(tái)(想一想擁有數(shù)千個(gè)計(jì)算節(jié)點(diǎn)的計(jì)算集群或網(wǎng)格)。在這里,NFS 是一個(gè)負(fù)擔(dān),因?yàn)?NFS 服務(wù)器的局限性 — 比如帶寬、存儲(chǔ)容量和處理器速度 — 限制了總體計(jì)算性能。NFS 在這里成了瓶頸。或者,至少以前 是這樣。
NFS 的下一個(gè)修改版是 v4.1,包括一個(gè)擴(kuò)展 pNFS,它將普通 NFS 的優(yōu)勢(shì)和并行I/O的高傳輸率結(jié)合起來(lái)。使用 pNFS 時(shí),客戶機(jī)也像以前一樣可以從服務(wù)器共享文件系統(tǒng),但數(shù)據(jù)不經(jīng)過(guò) NFS 服務(wù)器。相反,客戶機(jī)系統(tǒng)將與數(shù)據(jù)存儲(chǔ)系統(tǒng)直接連接,為大型數(shù)據(jù)傳輸提供許多并行的高速數(shù)據(jù)路徑。在簡(jiǎn)短的初始化和握手過(guò)程之后,pNFS 服務(wù)器開(kāi)始退出 “舞臺(tái)”,不再阻礙傳輸速率。
圖 2 顯示一個(gè) pNFS 配置。頂部是計(jì)算集群的節(jié)點(diǎn),比如大量便宜的、基于 Linux 的刀片服務(wù)器群。左邊是 NFSv4.1 服務(wù)器(為了方便討論,我們稱之為 pNFS 服務(wù)器)。底部是一個(gè)大型的并行文件系統(tǒng)。
圖 2. pNFS 的概念組織結(jié)構(gòu)

像NFS 一樣,pNFS 服務(wù)器也導(dǎo)出文件系統(tǒng),并且保留和維護(hù)數(shù)據(jù)倉(cāng)庫(kù)中描述每個(gè)文件的標(biāo)準(zhǔn)元數(shù)據(jù)。pNFS 客戶機(jī)和 NFS 一樣 — 在這里是集群中的一個(gè)節(jié)點(diǎn) — 掛載服務(wù)器導(dǎo)出的文件系統(tǒng)。類似于 NFS,每個(gè)節(jié)點(diǎn)都將文件系統(tǒng)看作本地的物理附加文件系統(tǒng)。元數(shù)據(jù)的更改通過(guò)網(wǎng)絡(luò)傳回給 pNFS 服務(wù)器。然而,與 NFS 不同的是,pNFS 在 Read 或 Write 數(shù)據(jù)時(shí)是在節(jié)點(diǎn)和存儲(chǔ)系統(tǒng)之間直接 操作的,如圖 2 的底部所示。從數(shù)據(jù)事務(wù)中移除 pNFS 服務(wù)器為 pNFS 提供了明顯的性能優(yōu)勢(shì)。
因此,pNFS 保留了 NFS 的所有優(yōu)點(diǎn),并且改善了性能和可伸縮性。擴(kuò)展存儲(chǔ)系統(tǒng)的容量幾乎不會(huì)影響客戶機(jī)配置,同時(shí)還可以增加客戶機(jī)的數(shù)量以提高計(jì)算能力。您只需同步 pNFS 目錄和存儲(chǔ)系統(tǒng)。
pNFS 的具體細(xì)節(jié)
那么,它是如何工作的呢?如圖 3 所示,pNFS 是由 3 個(gè)協(xié)議構(gòu)成的。
圖 3. pNFS 的 3 個(gè)協(xié)議

pNFS 協(xié)議在 pNFS 服務(wù)器和客戶機(jī)節(jié)點(diǎn)之間傳輸文件元數(shù)據(jù)(正式名稱是布局)??梢詫⒉季窒胂蟪傻貓D,它描述如何在數(shù)據(jù)倉(cāng)庫(kù)之間分配文件。另外,布局還包含許可和其他文件屬性。布局捕捉到元數(shù)據(jù)并在 pNFS 服務(wù)器中持久化這些數(shù)據(jù)之后,存儲(chǔ)系統(tǒng)僅需執(zhí)行 I/O。
存儲(chǔ)訪問(wèn)協(xié)議 指定客戶機(jī)從數(shù)據(jù)倉(cāng)庫(kù)訪問(wèn)數(shù)據(jù)的方式??梢圆碌?,每個(gè)存儲(chǔ)訪問(wèn)協(xié)議都定義自己的布局形式,因?yàn)樵L問(wèn)協(xié)議和數(shù)據(jù)組織必須保持一致。
控制協(xié)議同步元數(shù)據(jù)服務(wù)器和數(shù)據(jù)服務(wù)器之間的狀態(tài)。同步是對(duì)客戶機(jī)隱藏的,比如重新組織介質(zhì)上的文件。此外,NFSv4.1 并沒(méi)有規(guī)定控制協(xié)議;因此它有多種形式,這在性能、成本和特性方面的競(jìng)爭(zhēng)為供應(yīng)商提供了靈活性。有了這些協(xié)議之后,您就可以實(shí)踐以下客戶機(jī)訪問(wèn)流程:
客戶機(jī)為當(dāng)前的文件請(qǐng)求一個(gè)布局。
客戶機(jī)通過(guò)打開(kāi)元數(shù)據(jù)服務(wù)器上的文件獲得訪問(wèn)權(quán)。
客戶機(jī)獲得授權(quán)和布局之后,就可以直接從數(shù)據(jù)服務(wù)器訪問(wèn)信息。根據(jù)存儲(chǔ)類型所需的存儲(chǔ)訪問(wèn)協(xié)議,訪問(wèn)繼續(xù)進(jìn)行。(后面還對(duì)此進(jìn)行論述)。
如果客戶機(jī)更改了這個(gè)文件,則會(huì)相應(yīng)地更改布局的客戶機(jī)實(shí)例,并且將所有更改提交回到元數(shù)據(jù)服務(wù)器。
當(dāng)客戶機(jī)不再需要這個(gè)文件時(shí),它將提交剩余的更改,并將布局副本返回給元數(shù)據(jù)服務(wù)器,然后關(guān)閉文件。
尤其需要注意的是,Read 操作是由一系列協(xié)議操作組成的:
客戶機(jī)向 pNFS 服務(wù)器發(fā)送一個(gè) LOOKUP+OPEN 請(qǐng)求。服務(wù)器會(huì)返回一個(gè)文件句柄和狀態(tài)信息。
客戶機(jī)通過(guò) LAYOUTGET 命令請(qǐng)求從服務(wù)器獲取一個(gè)布局。服務(wù)器將返回所需的文件布局。
客戶機(jī)向存儲(chǔ)設(shè)備發(fā)出一個(gè) READ 請(qǐng)求,該請(qǐng)求同時(shí)初始化多個(gè) Read 操作。
當(dāng)客戶機(jī)完成讀操作時(shí),它以 LAYOUTRETURN 表示操作結(jié)束。
如果與客戶機(jī)共享的布局因?yàn)榉蛛x活動(dòng)而過(guò)時(shí),服務(wù)器將發(fā)出 CB_LAYOUTRECALL,表明該布局無(wú)效,必須清除和/或重新獲取。
Write 操作類似于 Read 操作,不同的地方是客戶機(jī)必須在 LAYOUTRETURN 將文件更改 “發(fā)布” 到 pNFS 服務(wù)器之前發(fā)出 LAYOUTCOMMIT。
布局可以緩存到每個(gè)客戶機(jī),這進(jìn)一步提升了性能。如果一個(gè)客戶機(jī)不再使用時(shí),它會(huì)自動(dòng)放棄從服務(wù)器獲取布局。服務(wù)器還能限制 Write 布局的字節(jié)范圍,以避免配額限制或減少分配開(kāi)銷等等。
為了避免緩存過(guò)期,元數(shù)據(jù)服務(wù)器將收回不準(zhǔn)確的布局。收回發(fā)生之后,每個(gè)關(guān)聯(lián)的客戶機(jī)必須停止 I/O,并且必須重新獲取布局或從普通的 NFS 訪問(wèn)文件。在服務(wù)器嘗試管理文件(比如遷移或重新劃分)之前必須執(zhí)行回收過(guò)程。
如前所述,每個(gè)存儲(chǔ)訪問(wèn)協(xié)議都定義一個(gè)布局類型,并且可以隨意添加新的訪問(wèn)協(xié)議和布局。為了使 pNFS 可以獨(dú)立使用,pNFS 的供應(yīng)商和研究人員已經(jīng)定義了 3 種存儲(chǔ)技巧:文件、塊 和對(duì)象 存儲(chǔ):
文件存儲(chǔ) 通常是由傳統(tǒng)的 NFS 服務(wù)器實(shí)現(xiàn)的,比如由 Network Appliance 生成的服務(wù)器。存儲(chǔ)群是由一組 NFS 服務(wù)器組成的,并且每個(gè)文件都跨越所有服務(wù)器或服務(wù)器的子集,從而使客戶機(jī)能夠同時(shí)獲取文件的各個(gè)部分。在這里,布局枚舉持有文件片段的服務(wù)器、每個(gè)服務(wù)器上文件片段的大小,以及每個(gè)片段的 NFS 文件句柄。
塊存儲(chǔ) 通常是使用由許多磁盤或 RAID 陣列組成的存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)來(lái)實(shí)現(xiàn)的。許多供應(yīng)商都提供 SAN 解決方案,包括 IBM 和 EMC。有了塊存儲(chǔ)之后,文件可以被劃分為塊并分布到不同的驅(qū)動(dòng)器中。塊存儲(chǔ)布局將文件塊映射到物理存儲(chǔ)塊。存儲(chǔ)訪問(wèn)協(xié)議就是 SCSI 塊命令集。
對(duì)象存儲(chǔ) 類似于文件存儲(chǔ),但有一點(diǎn)不同,這里使用的是對(duì)象 ID 而不是文件句柄,并且文件分割功能更加復(fù)雜強(qiáng)大。發(fā)起 pNFS 開(kāi)發(fā)的 Panasas 公司(pNFS 基于該公司的 DirectFLOW 架構(gòu))是 pNFS 對(duì)象實(shí)現(xiàn)的主要?jiǎng)?chuàng)造者。
不管布局的類型是什么,pNFS 都使用通用的模式來(lái)引用服務(wù)器。引用服務(wù)器時(shí)使用的是惟??的 ID,而不是主機(jī)名或卷名。這個(gè) ID 被映射到特定于訪問(wèn)協(xié)議的服務(wù)器引用。
對(duì)于這些存儲(chǔ)技術(shù),哪個(gè)最好呢?答案是 “依情況而定”。應(yīng)該采用哪種存儲(chǔ)技術(shù)由預(yù)算、速度、伸縮性、簡(jiǎn)單性等因素共同決定。
我們來(lái)看看pNFS 的現(xiàn)狀,截至 2008 年 11 月撰寫(xiě)此文為止,NFSv4.1 的 Request for Comments (RFC) 草案已經(jīng)進(jìn)入最后階段。這個(gè)階段有兩個(gè)月的時(shí)間,主要任務(wù)是在發(fā)布 RFC 使其經(jīng)受全行業(yè)的檢驗(yàn)之前收集和評(píng)估意見(jiàn)。發(fā)布之后,RFC 的正式審核期是一年。
除了對(duì)公眾公開(kāi)以外,這個(gè)草案采用的 RFC 標(biāo)準(zhǔn)為實(shí)際產(chǎn)品開(kāi)發(fā)打下堅(jiān)實(shí)的基礎(chǔ)。因?yàn)樵趯?lái)的審核期只可以對(duì)這些標(biāo)準(zhǔn)進(jìn)行小的改動(dòng),所以供應(yīng)商現(xiàn)在就可以設(shè)計(jì)和構(gòu)建可行的、有市場(chǎng)價(jià)值的解決方案。許多供應(yīng)商的產(chǎn)品將于明年上市。
可以這樣說(shuō),在幾個(gè)月之內(nèi),您可以找到 pNFS 的開(kāi)源實(shí)現(xiàn)。Panasas 和密歇根大學(xué)信息技術(shù)集成中心(CITI)是開(kāi)發(fā) NFSv4.1 和 pNFS for Linux 的領(lǐng)先者。當(dāng)它們發(fā)布時(shí),早期采用者可以通過(guò)構(gòu)建簡(jiǎn)單的 pNFS 網(wǎng)絡(luò)來(lái)探索該軟件。
實(shí)際上,pNFS 的前身和基礎(chǔ)技術(shù)已經(jīng)投入使用,雖然受到限制但表現(xiàn)不俗。世界上最快的超級(jí)計(jì)算機(jī)(在Top 500調(diào)查中排名第一),同時(shí)也是第一臺(tái)達(dá)到一個(gè)Petaflop 的計(jì)算機(jī)使用 Panasas 構(gòu)建的并行文件系統(tǒng),該系統(tǒng)是 pNFS 標(biāo)準(zhǔn)的核心。這個(gè)運(yùn)行 Linux 的龐大系統(tǒng)位于 Los Alamos National Laboratory,擁有 12,960 個(gè)處理器,它被授予稱號(hào)Roadrunner,并且是第一臺(tái)使用不同類型處理器的超級(jí)計(jì)算機(jī),AMD Opteron X64 處理器和 IBM 的 Cell Broadband Engine都提升了計(jì)算能力。
在 2006 年,使用 Panasas 早期并行文件系統(tǒng)的 Roadrunner 的傳輸速率峰值是 1.6 GB 每秒。在 2008 年,Roadrunner 并行存儲(chǔ)系統(tǒng)能夠維持?jǐn)?shù)百 GB每秒的速率。相比之下,傳統(tǒng)的 NFS 的峰值一般是幾百兆字節(jié)每秒。
NFSv4.1標(biāo)準(zhǔn)和pNFS是NFS 標(biāo)準(zhǔn)的巨大改進(jìn),它是對(duì)一個(gè)擁有 20 多年歷史的老技術(shù)的最大改動(dòng),該技術(shù)由 Sun Microsystems 的 Bill Joy 在 20 世紀(jì) 80 年代發(fā)明。經(jīng)過(guò) 5 年的開(kāi)發(fā),NFSv4.1 和 pNFS 現(xiàn)在已經(jīng)準(zhǔn)備好為超級(jí)計(jì)算機(jī)提供超級(jí)存儲(chǔ)速度。
推薦閱讀
②存儲(chǔ)知識(shí):為什么NVMe-OF很重要?

轉(zhuǎn)載申明:轉(zhuǎn)載本號(hào)文章請(qǐng)注明作者和來(lái)源,本號(hào)發(fā)布文章若存在版權(quán)等問(wèn)題,請(qǐng)留言聯(lián)系處理,謝謝。
推薦閱讀
更多架構(gòu)相關(guān)技術(shù)知識(shí)總結(jié)請(qǐng)參考“架構(gòu)師技術(shù)全聯(lián)盟書(shū)店”相關(guān)電子書(shū)(35本技術(shù)資料打包匯總詳情可通過(guò)“閱讀原文”獲取)。
內(nèi)容持續(xù)更新,現(xiàn)下單“架構(gòu)師技術(shù)全店打包匯總(全)”,后續(xù)可享全店內(nèi)容更新“免費(fèi)”贈(zèng)閱,格僅收188元(原總價(jià)270元)。
溫馨提示:
掃描二維碼關(guān)注公眾號(hào),點(diǎn)擊閱讀原文鏈接獲取“架構(gòu)師技術(shù)全店資料打包匯總(全)”電子書(shū)資料詳情。

