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

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

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

  網(wǎng)絡(luò)文件系統(tǒng)(NFS)是文件系統(tǒng)之上的一個網(wǎng)絡(luò)抽象。他是 NFS 是在 UNIX 和 Linux 系統(tǒng)中***的網(wǎng)絡(luò)文件系統(tǒng),用來允許遠程客戶端以與本地文件系統(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 的簡短歷史開始,到它的起源,再到它如何演化。然后探索了 NFS架構(gòu)以及 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)標準,并演化為大家熟知的 NFSv2。作為一個標準,由于 NFS 與其他客戶端和服務器的互操作能力而發(fā)展快速。

  標準持續(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 定義),它增加了對跨越分布式服務器的并行訪問的支持(稱為 pNFS extension)。

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

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

  

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ǎng)絡(luò)設(shè)置中,虛擬化驅(qū)動存儲進入網(wǎng)絡(luò),來支持更多的移動虛擬機。NFS 甚至支持***的計算模型,來優(yōu)化虛擬的基礎(chǔ)設(shè)施。

二、NFS 架構(gòu)

  NFS 允許計算的客戶 — 服務器模型(見圖 2)。服務器實施共享文件系統(tǒng),以及客戶端所連接的存儲??蛻舳藢嵤┯脩艚涌趤砉蚕砦募到y(tǒng),并加載到本地文件空間當中。

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

  

NFS 的客戶端 — 服務器架構(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ā)送到合適的遠程對等級,然后管理并追蹤響應,提供給合適的請求者。

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

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

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

  圖 3. 客戶端和服務器 NFS 堆棧

  

客戶端和服務器 NFS 堆棧

 

  對于高延遲網(wǎng)絡(luò),NFSv4 實現(xiàn)稱為 compound procedure 的程序。這一程序從本質(zhì)上允許在單個請求中嵌入多個 RPC 調(diào)用,來最小化通過網(wǎng)絡(luò)請求的 transfer tax。它還為響應實現(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 請求對遠程服務器 RPC 調(diào)用),客戶端執(zhí)行 RPC mount 請求。這一請求發(fā)生在客戶端和負責 mount 協(xié)議(rpc.mountd)的特定守護進程之間。這一守護進程基于服務器當前導出文件系統(tǒng)來檢查客戶端請求;如果所請求的文件系統(tǒng)存在,并且客戶端已經(jīng)訪問了,一個 RPC mount 響應為文件系統(tǒng)建立了文件句柄??蛻舳诉@邊存儲具有本地加載點的遠程加載信息,并建立執(zhí)行 I/O 請求的能力。這一協(xié)議表示一個潛在的安全問題;因此,NFSv4 用內(nèi)部 RPC 調(diào)用替換這一輔助 mount 協(xié)議,來管理加載點。

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

  利用在遠程文件系統(tǒng)中指定的文件,客戶端能夠觸發(fā) READ RPC 請求。READ 包含文件句柄、狀態(tài)、偏移、和讀取計數(shù)??蛻舳瞬捎脿顟B(tài)來確定操作是否可執(zhí)行(那就是,文件是否被鎖定)。偏移指出是否開始讀取,而計數(shù)指出所讀取字節(jié)的數(shù)量。服務器可能返回或不返回所請求字節(jié)的數(shù)量,但是會指出在 READ RPC 回復中所返回(隨著數(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)風格類似的拆分數(shù)據(jù)/元數(shù)據(jù)架構(gòu)。如 圖 4 所展示的,pNFS 將生態(tài)系統(tǒng)拆分為三個部分:客戶端、服務器和存儲。您可看到存在兩個路徑:一個用于數(shù)據(jù),另一個用于控制。pNFS 將數(shù)據(jù)布局與數(shù)據(jù)本身拆分,允許雙路徑架構(gòu)。當客戶想要訪問文件時,服務器以布局響應。布局描述了文件到存儲設(shè)備的映射。當客戶端具有布局時,它能夠直接訪問存儲,而不必通過服務器(這實現(xiàn)了更大的靈活性和更優(yōu)的性能)。當客戶端完成文件操作時,它會提交數(shù)據(jù)(變更)和布局。如果需要,服務器能夠請求從客戶端返回布局。

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

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

  

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

 

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

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

五、NFS 的替代物

  雖然 NFS 是在 UNIX 和 Linux 系統(tǒng)中***的網(wǎng)絡(luò)文件系統(tǒ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. Linux NFS應用案例分析
  2. 詳談Linux NFS的問題
  3. Linux NFS服務器性能優(yōu)化
  4. Linux下NFS網(wǎng)絡(luò)文件系統(tǒng)設(shè)定及管理
  5. Linux網(wǎng)絡(luò)文件系統(tǒng)NFS的配置
  6. 如何從IIS應用程序訪問網(wǎng)絡(luò)文件
責任編輯:zhaolei 來源: IT專家網(wǎng)
相關(guān)推薦

2011-01-13 14:10:30

Linux文件系統(tǒng)

2020-07-22 14:53:06

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

2011-01-11 10:00:35

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

2021-06-06 16:55:22

Linux文件系統(tǒng)

2021-04-12 05:44:44

Linux文件系統(tǒng)

2017-04-25 15:50:02

sparse傳輸處理

2009-11-26 11:31:34

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

2009-12-25 09:58:46

linux劃分文件系統(tǒng)

2009-12-22 15:12:33

Linux擴展文件系統(tǒng)

2021-05-31 07:50:59

Linux文件系統(tǒng)

2021-11-01 13:38:55

Linux文件系統(tǒng)

2009-12-14 13:14:57

2018-08-24 10:10:25

Linux文件系統(tǒng)技術(shù)

2019-09-20 10:04:45

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

2009-12-22 09:43:13

Linux文件系統(tǒng)組織

2016-12-27 10:48:59

Linux命令磁盤與文件系統(tǒng)

2017-08-14 13:35:36

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

2021-01-22 10:40:08

Linux文件內(nèi)存

2023-08-08 09:52:13

系統(tǒng)端架構(gòu)NFS

2010-07-27 10:15:38

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

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