NFS各個版本之間的比較

NFS是一種網絡文件系統,從1985年推出至今,共發佈了3個版本:NFSv2、NFSv3、NFSv4,NFSv4包含兩個次版本NFSv4.0和NFSv4.1。經過20多年發展,NFS發生了非常大的變化,最大的變化就是推動者從Sun變成了NetApp,NFSv2和NFSv3基本上是Sun起草的,NetApp從NFSv4.0參與進來,並且主導了NFSv4.1標準的制定過程,而Sun已經被Oracle收購了。

編號 版本 RFC 時間 頁數
1 NFSv2 rfc1094 1989年3月 27頁
2 NFSv3 rfc1813 1995年6月 126頁
3 NFSv4.0 rfc3530 2003年4月 275頁
4 NFSv4.1 rfc5661 2010年1月 617頁

1. NFSv2

NFSv2是第一個以RFC形式發佈的版本,實現了基本的功能。


2. NFSv3

NFSv3是1995年發佈的,這時NFSv2已經發布了6年了,NFSv3修正了NFSv2的一些bug。兩者有如下一些差別,但是感覺沒有本質的差別。

(1) NFSv2對每次讀寫操作中傳輸數據的最大長度進行了限制,上限值爲8192字節,NFSv3取消了這個限制。

(2) NFSv3對文件名稱長度進行了限制,上限值爲255字節,NFSv3取消了這個限制。

(3) NFSv2對文件長度進行了限制,上限值爲0x7FFFFFFF,NFSv3取消了這個限制。

(4) NFSv2中文件句柄長度固定爲32字節,NFSv3中文件句柄長度可變,上限值是64字節。

(5) NFSv2只支持同步寫,如果客戶端向服務器端寫入數據,服務器必須將數據寫入磁盤中才能發送應答消息。NFSv3支持異步寫操作,服務器只需要將數據寫入緩存中就可以發送應答信息了。NFSv3增加了COMMIT請求,COMMIT請求可以將服務器緩存中的數據刷新到磁盤中。

(6) NFSv3增加了ACCESS請求,ACCESS用來檢查用戶的訪問權限。因爲服務器端可能進行uid映射,因此客戶端的uid和gid不能正確反映用戶的訪問權限。NFSv2的處理方法是不管訪問權限,直接返送請求,如果沒有訪問權限就出錯。NFSv3中增加了ACCESS請求,客戶端可以檢查是否有訪問權限。

(7) 一些請求調整了參數和返回信息,畢竟NFSv3和NFSv2發佈的間隔有6年,經過長期運行可能覺得NFSv2某些請求參數和返回信息需要改進。


3. NFSv4.0

相比NFSv3,NFSv4發生了比較大的變化,最大的變化是NFSv4有狀態了。NFSv2和NFSv3都是無狀態協議,服務區端不需要維護客戶端的狀態信息。無狀態協議的一個優點在於災難恢復,當服務器出現問題後,客戶端只需要重複發送失敗請求就可以了,直到收到服務器的響應信息。但是某些操作必須需要狀態,如文件鎖。如果客戶端申請了文件鎖,但是服務器重啓了,由於NFSv3無狀態,客戶端再執行鎖操作可能就會出錯了。NFSv3需要NLM協助才能實現文件鎖功能,但是有的時候兩者配合不夠協調。NFSv4設計成了一種有狀態的協議,自身實現了文件鎖功能,就不需要NLM協議了。NFSv4和NFSv3的差別如下:

(1) NFSv4設計成了一種有狀態的協議,自身實現了文件鎖功能和獲取文件系統根節點功能,不需要NLM和MOUNT協議協助了。

(2) NFSv4增加了安全性,支持RPCSEC-GSS身份認證。

(3) NFSv4只提供了兩個請求NULL和COMPOUND,所有的操作都整合進了COMPOUND中,客戶端可以根據實際請求將多個操作封裝到一個COMPOUND請求中,增加了靈活性。

(4) NFSv4文件系統的命令空間發生了變化,服務器端必須設置一個根文件系統(fsid=0),其他文件系統掛載在根文件系統上導出。

(5) NFSv4支持delegation。由於多個客戶端可以掛載同一個文件系統,爲了保持文件同步,NFSv3中客戶端需要經常向服務器發起請求,請求文件屬性信息,判斷其他客戶端是否修改了文件。如果文件系統是隻讀的,或者客戶端對文件的修改不頻繁,頻繁向服務器請求文件屬性信息會降低系統性能。NFSv4可以依靠delegation實現文件同步。當客戶端A打開一個文件時,服務器會分配給客戶端A一個delegation。只要客戶端A具有delegation,就可以認爲與服務器保持了一致。如果另外一個客戶端B訪問同一個文件,則服務器會暫緩客戶端B的訪問請求,向客戶端A發送RECALL請求。當客戶端A接收到RECALL請求時將本地緩存刷新到服務器中,然後將delegation返回服務器,這時服務器開始處理客戶端B的請求。

(6) NFSv4修改了文件屬性的表示方法。由於NFS是Sun開發的一套文件系統,設計之出NFS文件屬性參考了UNIX中的文件屬性,可能Windows中不具備某些屬性,因此NFS對操作系統的兼容性不太好。NFSv4將文件屬性劃分成了三類:

        Mandatory Attributes: 這是文件的基本屬性,所有的操作系統必須支持這些屬性。

        Recommended Attributes: 這是NFS建議的屬性,如果可能操作系統儘量實現這些屬性。

        Named Attributes: 這是操作系統可以自己實現的一些文件屬性。


4. NFSv4.1

        與NFSv4.0相比,NFSv4.1最大的變化是支持並行存儲了。在以前的協議中,客戶端直接與服務器連接,客戶端直接將數據傳輸到服務器中。當客戶端數量較少時這種方式沒有問題,但是如果大量的客戶端要訪問數據時,NFS服務器很快就會成爲一個瓶頸,抑制了系統的性能。NFSv4.1支持並行存儲,服務器由一臺元數據服務器(MDS)和多臺數據服務器(DS)構成,元數據服務器只管理文件在磁盤中的佈局,數據傳輸在客戶端和數據服務器之間直接進行。由於系統中包含多臺數據服務器,因此數據可以以並行方式訪問,系統吞吐量迅速提升。


from :http://blog.csdn.net/ycnian/article/details/8515517

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章