自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

探析網(wǎng)絡(luò)文件系統(tǒng)的演化與發(fā)展

系統(tǒng) Linux
網(wǎng)絡(luò)文件系統(tǒng)(NFS)是文件系統(tǒng)之上的一個網(wǎng)絡(luò)抽象。從1984 年問世以來持續(xù)演變,并已成為分布式文件系統(tǒng)的基礎(chǔ)。本文從NFS的簡短歷史開始,到它的起源,再到它如何演化。然后探索了NFS架構(gòu)以及NFS的走向。

網(wǎng)絡(luò)文件系統(tǒng)(NFS)是文件系統(tǒng)之上的一個網(wǎng)絡(luò)抽象,來允許遠程客戶端以與本地文件系統(tǒng)類似的方式,來通過網(wǎng)絡(luò)進行訪問。雖然 NFS 不是***個此類系統(tǒng),但是它已經(jīng)發(fā)展并演變成 UNIX® 系統(tǒng)中***大最廣泛使用的網(wǎng)絡(luò)文件系統(tǒng)。NFS 允許在多個用戶之間共享公共文件系統(tǒng),并提供數(shù)據(jù)集中的優(yōu)勢,來最小化所需的存儲空間。

NFS:與以往一樣有用并在不斷演變

網(wǎng)絡(luò)文件系統(tǒng)(NFS)從1984 年問世以來持續(xù)演變,并已成為分布式文件系統(tǒng)的基礎(chǔ)。當(dāng)前,NFS(通過 pNFS 擴展)通過網(wǎng)絡(luò)對分布的文件提供可擴展的訪問。探索分布式文件系背后的理念,特別是,最近 NFS 文件進展。

NFS 的簡短歷史

***個網(wǎng)絡(luò)文件系統(tǒng) — 稱為 File Access Listener — 由 Digital Equipment Corporation(DEC)在 1976 年開發(fā)。Data Access Protocol(DAP)的實施,這是 DECnet 協(xié)議集的一部分。比如 TCP/IP,DEC 為其網(wǎng)絡(luò)協(xié)議發(fā)布了協(xié)議規(guī)范,包括 DAP。

NFS 是***個現(xiàn)代網(wǎng)絡(luò)文件系統(tǒng)(構(gòu)建于 IP 協(xié)議之上)。在 20 世紀 80 年代,它首先作為實驗文件系統(tǒng),由 Sun Microsystems 在內(nèi)部完成開發(fā)。NFS 協(xié)議已歸檔為 Request for Comments(RFC)標(biāo)準,并演化為大家熟知的 NFSv2。作為一個標(biāo)準,由于 NFS 與其他客戶端和服務(wù)器的互操作能力而發(fā)展快速。

標(biāo)準持續(xù)地演化為 NFSv3,在 RFC 1813 中有定義。這一新的協(xié)議比以前的版本具有更好的可擴展性,支持大文件(超過 2GB),異步寫入,以及將 TCP 作為傳輸協(xié)議,為文件系統(tǒng)在更廣泛的網(wǎng)絡(luò)中使用鋪平了道路。在 2000 年,RFC 3010(由 RFC 3530 修訂)將 NFS 帶入企業(yè)設(shè)置。Sun 引入了具有較高安全性,帶有狀態(tài)協(xié)議的 NFSv4(NFS 之前的版本都是無狀態(tài)的)。今天,NFS 是版本 4.1(由 RFC 5661 定義),它增加了對跨越分布式服務(wù)器的并行訪問的支持(稱為 pNFS extension)。

NFS 的時間表,包括記錄其特性的特定 RFC ,都在圖 1 中有展示。

 

NFS 協(xié)議的時間表

 

圖 1. NFS 協(xié)議的時間表

令人驚訝的是,NFS 已經(jīng)歷了幾乎 30 年的開發(fā)。 它代表了一個非常穩(wěn)定的(及可移植)網(wǎng)絡(luò)文件系統(tǒng),它可擴展、高性能、并達到企業(yè)級質(zhì)量。由于網(wǎng)絡(luò)速度的增加和延遲的降低,NFS 一直是通過網(wǎng)絡(luò)提供文件系統(tǒng)服務(wù)具有吸引力的選擇。甚至在本地網(wǎng)絡(luò)設(shè)置中,虛擬化驅(qū)動存儲進入網(wǎng)絡(luò),來支持更多的移動虛擬機。NFS 甚至支持***的計算模型,來優(yōu)化虛擬的基礎(chǔ)設(shè)施。

NFS 架構(gòu)

NFS 允許計算的客戶 — 服務(wù)器模型(見圖 2)。服務(wù)器實施共享文件系統(tǒng),以及客戶端所連接的存儲。客戶端實施用戶接口來共享文件系統(tǒng),并加載到本地文件空間當(dāng)中。

 

NFS 的客戶端 — 服務(wù)器架構(gòu)

 

圖 2. NFS 的客戶端 — 服務(wù)器架構(gòu)

在 Linux® 中,虛擬文件系統(tǒng)交換(VFS)提供在一個主機上支持多個并發(fā)文件系統(tǒng)的方法(比如 CD-ROM 上的 International Organization for Standardization [ISO] 9660,以及本地硬盤上的 ext3fs )。VFS 確定需求傾向于哪個存儲,然后使用哪些文件系統(tǒng)來滿足需求。由于這一原因,NFS 是與其他文件系統(tǒng)類似的可插拔文件系統(tǒng)。對于 NFS 來說,唯一的區(qū)別是輸入/輸出(I/O)需求無法在本地滿足,而是需要跨越網(wǎng)絡(luò)來完成。

一旦發(fā)現(xiàn)了為 NFS 指定的需求,VFS 會將其傳遞給內(nèi)核中的 NFS 實例。 NFS 解釋 I/O 請求并將其翻譯為 NFS 程序(OPEN、ACCESS、CREATE、READ、CLOSE、REMOVE 等等)。這些程序,歸檔在特定 NFS RFC 中,指定了 NFS 協(xié)議中的行為。一旦從 I/O 請求中選擇了程序,它會在遠程程序調(diào)用(RPC)層中執(zhí)行。正如其名稱所暗示的,RPC 提供了在系統(tǒng)間執(zhí)行程序調(diào)用的方法。它將封送 NFS 請求,并伴有參數(shù),管理將它們發(fā)送到合適的遠程對等級,然后管理并追蹤響應(yīng),提供給合適的請求者。

進一步來說,RPC 包括重要的互操作層,稱為外部數(shù)據(jù)表示(XDR),它確保當(dāng)涉及到數(shù)據(jù)類型時,所有 NFS 參與者使用相同的語言。當(dāng)給定架構(gòu)執(zhí)行請求時,數(shù)據(jù)類型表示可能不同于滿足需求的目標(biāo)主機上的數(shù)據(jù)類型。XDR 負責(zé)將類型轉(zhuǎn)換為公共表示(XDR),便于所有架構(gòu)能夠與共享文件系統(tǒng)互操作。XDR 指定類型字節(jié)格式(比如 float)和類型的字節(jié)排序(比如修復(fù)可變長數(shù)組)。雖然 XDR 以其在 NFS 中的使用而聞名,當(dāng)您在公共應(yīng)用程序設(shè)置中處理多個架構(gòu)時,它是一個有用的規(guī)范。

一旦 XDR 將數(shù)據(jù)轉(zhuǎn)換為公共表示,需求就通過網(wǎng)絡(luò)傳輸給出傳輸層協(xié)議。早期 NFS 采用 Universal Datagram Protocol(UDP),但是,今天 TCP 因為其優(yōu)越的可靠性而更加通用。

在服務(wù)器端,NFS 以相似的風(fēng)格運行。需求到達網(wǎng)絡(luò)協(xié)議棧,通過 RPC/XDR(將數(shù)據(jù)類型轉(zhuǎn)換為服務(wù)器架構(gòu)) 然后到達 NFS 服務(wù)器。NFS 服務(wù)器負責(zé)滿足需求。需求向上提交給 NFS 守護進程,它為需求標(biāo)示出目標(biāo)文件系統(tǒng)樹,并且 VFS 再次用于在本地存儲中獲取文件系統(tǒng)。整個流程在圖 3 中有展示。注意,服務(wù)器中的本地文件系統(tǒng)是典型的 Linux 文件系統(tǒng)(比如 ext4fs)。因此,NFS 不是傳統(tǒng)意義上的文件系統(tǒng),而是訪問遠程文件系統(tǒng)的協(xié)議。

 

客戶端和服務(wù)器 NFS 堆棧

 

圖 3. 客戶端和服務(wù)器 NFS 堆棧

對于高延遲網(wǎng)絡(luò),NFSv4 實現(xiàn)稱為 compound procedure 的程序。這一程序從本質(zhì)上允許在單個請求中嵌入多個 RPC 調(diào)用,來最小化通過網(wǎng)絡(luò)請求的 transfer tax。它還為響應(yīng)實現(xiàn)回調(diào)模式。

NFS 協(xié)議

從客戶端的角度來說,NFS 中的***個操作稱為 mount。 Mount 代表將遠程文件系統(tǒng)加載到本地文件系統(tǒng)空間中。該流程以對 mount(Linux 系統(tǒng)調(diào)用)的調(diào)用開始,它通過 VFS 路由到 NFS 組件。確認了加載端口號之后(通過 get_port 請求對遠程服務(wù)器 RPC 調(diào)用),客戶端執(zhí)行 RPC mount 請求。這一請求發(fā)生在客戶端和負責(zé) mount 協(xié)議(rpc.mountd)的特定守護進程之間。這一守護進程基于服務(wù)器當(dāng)前導(dǎo)出文件系統(tǒng)來檢查客戶端請求;如果所請求的文件系統(tǒng)存在,并且客戶端已經(jīng)訪問了,一個 RPC mount 響應(yīng)為文件系統(tǒng)建立了文件句柄??蛻舳诉@邊存儲具有本地加載點的遠程加載信息,并建立執(zhí)行 I/O 請求的能力。這一協(xié)議表示一個潛在的安全問題;因此,NFSv4 用內(nèi)部 RPC 調(diào)用替換這一輔助 mount 協(xié)議,來管理加載點。

要讀取一個文件,文件必須首先被打開。在 RPC 內(nèi)沒有 OPEN 程序;反之,客戶端僅檢查目錄和文件是否存在于所加載的文件系統(tǒng)中??蛻舳艘詫δ夸浀?GETATTR RPC 請求開始,其結(jié)果是一個具有目錄屬性或者目錄不存在指示的響應(yīng)。接下來,客戶端發(fā)出 LOOKUP RPC 請求來查看所請求的文件是否存在。如果是,會為所請求的文件發(fā)出 GETATTR RPC 請求,為文件返回屬性?;谝陨铣晒Φ?GETATTRs 和 LOOKUPs,客戶端創(chuàng)建文件句柄,為用戶的未來需求而提供的。

利用在遠程文件系統(tǒng)中指定的文件,客戶端能夠觸發(fā) READ RPC 請求。READ 包含文件句柄、狀態(tài)、偏移、和讀取計數(shù)。客戶端采用狀態(tài)來確定操作是否可執(zhí)行(那就是,文件是否被鎖定)。偏移指出是否開始讀取,而計數(shù)指出所讀取字節(jié)的數(shù)量。服務(wù)器可能返回或不返回所請求字節(jié)的數(shù)量,但是會指出在 READ RPC 回復(fù)中所返回(隨著數(shù)據(jù))字節(jié)的數(shù)量。

NFS 中的創(chuàng)新

NFS 的兩個***版本(4 和 4.1)對于 NFS 來說是最有趣和最重要的。讓我們來看一下 NFS 創(chuàng)新最重要的一些方面。

在 NFSv4 之前,存在一定數(shù)量的輔助協(xié)議用于加載、鎖定、和文件管理中的其他元素。NFSv4 將這***程簡化為一個協(xié)議,并將對 UDP 協(xié)議的支持作為傳輸協(xié)議移除。NFSv4 還集成支持 UNIX 和基于 Windows® 的文件訪問語義,將本地集成 NFS 擴展到其他操作系統(tǒng)中。

NFSv4.1 介紹針對更高擴展性和更高性能的并行 NFS(pNFS)的概念。 要支持更高的可擴展性,NFSv4.1 具有腳本,與集群化文件系統(tǒng)風(fēng)格類似的拆分數(shù)據(jù)/元數(shù)據(jù)架構(gòu)。如 圖 4 所展示的,pNFS 將生態(tài)系統(tǒng)拆分為三個部分:客戶端、服務(wù)器和存儲。您可看到存在兩個路徑:一個用于數(shù)據(jù),另一個用于控制。pNFS 將數(shù)據(jù)布局與數(shù)據(jù)本身拆分,允許雙路徑架構(gòu)。當(dāng)客戶想要訪問文件時,服務(wù)器以布局響應(yīng)。布局描述了文件到存儲設(shè)備的映射。當(dāng)客戶端具有布局時,它能夠直接訪問存儲,而不必通過服務(wù)器(這實現(xiàn)了更大的靈活性和更優(yōu)的性能)。當(dāng)客戶端完成文件操作時,它會提交數(shù)據(jù)(變更)和布局。如果需要,服務(wù)器能夠請求從客戶端返回布局。

pNFS 實施多個新協(xié)議操作來支持這一行為。LayoutGet 和 LayoutReturn 分別從服務(wù)器獲取發(fā)布和布局,而 LayoutCommit 將來自客戶端的數(shù)據(jù)提交到存儲庫,以便于其他用戶使用。服務(wù)器采用 LayoutRecall 從客戶端回調(diào)布局。布局跨多個存儲設(shè)備展開,來支持并行訪問和更高的性能。

 

NFSv4.1 的 pNFS 架構(gòu)

 

圖 4. NFSv4.1 的 pNFS 架構(gòu)

數(shù)據(jù)和元數(shù)據(jù)都存儲在存儲區(qū)域中??蛻舳丝赡軋?zhí)行直接 I/O ,給出布局的回執(zhí),而 NFSv4.1 服務(wù)器處理元數(shù)據(jù)管理和存儲。雖然這一行為不一定是新的,pNFS 增加功能來支持對存儲的多訪問方法。當(dāng)前,pNFS 支持采用基于塊的協(xié)議(光纖通道),基于對象的協(xié)議,和 NFS 本身(甚至以非 pNFS 形式)。

通過 2010 年 9 月發(fā)布的對 NFSv2 的請求,繼續(xù)開展 NFS 工作。其中以新的提升定位了虛擬環(huán)境中存儲的變化。例如,數(shù)據(jù)復(fù)制與在虛擬機環(huán)境中非常類似(很多操作系統(tǒng)讀取/寫入和緩存相同的數(shù)據(jù))。由于這一原因,存儲系統(tǒng)從整體上理解復(fù)制發(fā)生在哪里是很可取的。這將在客戶端保留緩存空間,并在存儲端保存容量。NFSv4.2 建議用共享塊來處理這一問題。因為存儲系統(tǒng)已經(jīng)開始在后端集成處理功能,所以服務(wù)器端復(fù)制被引入,當(dāng)服務(wù)器可以高效地在存儲后端自己解決數(shù)據(jù)復(fù)制時,就能減輕內(nèi)部存儲網(wǎng)絡(luò)的負荷。其他創(chuàng)新出現(xiàn)了,包括針對 flash 存儲的子文件緩存,以及針對 I/O 的客戶端提示 (潛在地采用 mapadvise 作為路徑)。

NFS 的替代物

雖然 NFS 是在 UNIX 和 Linux 系統(tǒng)中***的網(wǎng)絡(luò)文件系統(tǒng),但它當(dāng)然不是唯一的選擇。在 Windows® 系統(tǒng)中,ServerMessage Block [SMB](也稱為 CIFS)是最廣泛使用的選項(如同 Linux 支持 SMB一樣,Windows 也支持 NFS)。

***的分布式文件系統(tǒng)之一,在 Linux 中也支持,是 Ceph。Ceph 設(shè)計為容錯的分布式文件系統(tǒng),它具有 UNIX 兼容的 Portable Operating System Interface(POSIX)。您可在 參考資料 中深入了解 Ceph。

其他例子包括 OpenAFS,是 Andrew 分布式文件系統(tǒng)的開源版(來自 Carnegie Mellon 和 IBM),GlusterFS,關(guān)注于可擴展存儲的通用分布式文件系統(tǒng),以及 Lustre,關(guān)注于集群計算的大規(guī)模并行分布式文件系統(tǒng)。所有都是用于分布式存儲的開源軟件解決方案。

更進一步

NFS 持續(xù)演變,并與 Linux 的演變類似(支持低端、嵌入式、和高端性能),NFS 為客戶和企業(yè)實施可擴展存儲解決方案。關(guān)注 NFS 的未來可能會很有趣,但是根據(jù)歷史和近期的情況看,它將會改變?nèi)藗儾榭春褪褂梦募鎯Φ姆椒ā?/p>

【編輯推薦】

  1. 基礎(chǔ)詳解:NFS 網(wǎng)絡(luò)文件系統(tǒng)
  2. NFS網(wǎng)絡(luò)文件系統(tǒng)概念初解
  3. NFS網(wǎng)絡(luò)文件系統(tǒng)的優(yōu)點

 

責(zé)任編輯:黃丹 來源: IBMDW
相關(guān)推薦

2011-01-13 13:18:38

Linux網(wǎng)絡(luò)文件

2010-08-06 12:42:23

NFS網(wǎng)絡(luò)文件系統(tǒng)

2010-07-27 10:15:38

NFS網(wǎng)絡(luò)文件系統(tǒng)

2020-07-22 14:53:06

Linux系統(tǒng)虛擬文件

2010-08-03 11:32:30

NFS網(wǎng)絡(luò)文件系統(tǒng)

2013-05-27 14:46:06

文件系統(tǒng)分布式文件系統(tǒng)

2010-04-30 17:03:44

Unix文件系統(tǒng)

2017-08-14 13:35:36

Linux共享內(nèi)存tmpfs文件系統(tǒng)

2010-04-30 15:51:48

Unix系統(tǒng)

2017-04-25 15:50:02

sparse傳輸處理

2011-01-13 14:10:30

Linux文件系統(tǒng)

2011-07-26 14:53:01

數(shù)據(jù)庫發(fā)展

2012-09-19 13:48:33

pNFS文件系統(tǒng)

2009-06-10 18:08:14

2014-08-22 15:50:52

WindowsLinux

2018-09-29 11:02:52

WindowsLinux互訪

2010-05-10 19:03:00

Unix文件

2009-04-08 15:36:46

LinuxLustre集群文件系統(tǒng)

2020-01-15 09:10:13

LinuxWindowsmacOS

2010-05-19 15:23:51

Linux 2.6.3Ceph分布式文件系統(tǒng)
點贊
收藏

51CTO技術(shù)棧公眾號