首頁 > 軟體

NFS——網路檔案系統

2020-06-16 17:26:28

一、NFS概念:

  透過網路,讓不同的主機能“共用”檔案。通過NFS,使用者和程式可以像存取本地檔案一樣存取遠端系統上的檔案。


 

二、版本:

  共三個版本,NFSv2,NFSv3,NFSv4(包含4.0和4.1)。其中NFSv2和NFSv3由Sun公司起草。NFS4.0主要由NetApp。


 

三、版本特點
  V2:實現基本的網路共用及存取功能
  V3:修正了V2的一些bug。
  ——————V3與V2區別——————
  1.V2對每次讀寫操作中傳輸資料的最大長度限制:8192位元組,V3無限制
  2.V2對檔名長度限制:255位元組,V3無限制
  3.V2對檔案長度限制:0xFFFFFFF,V3無限制
  4.V2對檔案控制代碼長度固定為32B,V3中控制代碼長度上限為64位元組
  5.V2只支援同步寫,V3支援非同步寫操作。V3增加了commit請求,commit可以將伺服器快取中的資料重新整理到磁碟中。
*註:同步寫指當用戶端向伺服器端寫入資料時,伺服器必須將資料寫入磁碟中才能傳送應答訊息。非同步寫指伺服器只需要將資料寫入快取中就可以傳送應答訊息。
  6.V3增加了ACCESS請求
*註:ACCESS用來檢查使用者的存取許可權。因為伺服器端可能進行uid對映,一次用戶端的Uid和gid不能正確反映使用者的存取許可權。NFS2的處理方法是不管存取許可權,直接返送請求,如果沒有存取許可權就出錯。NFS3中增加了ACCESS請求,用戶端可以檢查是否有存取許可權。
  7.V3中一些請求調整了引數和返回資訊。
  ——————V4與V3區別——————
  1.V2和V3都是無狀態協定,即伺服器端不需要維護用戶端的狀態資訊。無狀態協定的優點是當伺服器出現問題後,用戶端只需要重複傳送失敗請求就可以了,直到收到伺服器的響應資訊。但某些操作必須需要狀態,如檔案鎖。如果用戶端申請了檔案鎖,但是伺服器重新啟動了,但NFSv3是無狀態的,用戶端再執行鎖操作可能會出錯。NFSv3需要NLM(Network Lock Manager)協助才能實現檔案鎖功能,但有時兩者的配合不夠協調。NFSv4設計成了一種有狀態的協定,自身實現了檔案鎖功能,從而不再需要NLM協定。 

  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 修改了檔案屬性的表示方法。
  ——————V4.1與V4.0區別——————
  NFSv4.1 支援並行儲存,伺服器由一台後設資料伺服器(MDS) 和多台資料伺服器(DS) 構成,後設資料伺服器只管理檔案在磁碟中的布局,資料傳輸在用戶端和資料伺服器之間直接進行。由於系統中包含多台資料伺服器,因此資料可以以並行方式存取,系統吞吐量迅速提升。


 

 四、Linux NFS相關檔案

  /etc/exports:

        NFS 的主組態檔有的linux 版本中預設不存在,需要手動建立.

  /usr/sbin/exportfs:

        在Server端 維護NFS 共用資源的命令。

  /usr/sbin/showmount:

        在Client端 來檢視NFS 共用的資源

  /var/lib/nfs/xtab:

        NFS 的記錄檔案,可以用戶端檢視連結伺服器的資訊


五、搭建NFS服務 【預設伺服器端口:2049】

Serve端:

:安裝軟體

  yum install nfs-utils.x86_64 -y

:啟動服務

  systemctl start nfs-server.service

  如果報錯請先開啟“rpcbind.service”後再開啟“nfs-server.service”

:檢查服務狀態

  systemctl status nfs-server.service

  netstat -lantu |grep 2049

:編輯組態檔

  /etc/exports:   /nfsserver     *(rw,sync)

  格式:  共用目錄path  允許的IP/hostname  (許可權)

:重新啟動服務

  systemctl restart nfs-server.service

 

Clinet端:

掛載方式分:手動、自動

手動掛載:

①:執行命令:  mount.nfs   nfs_server_ip:/共用目錄path /local/path

自動掛載:

①:利用 fstab 

  nfs_server_ip:/共用目錄path  /local/path  nfs  defaults 0 0

②:使用automount

  安裝軟體:yum install -y autofs

  啟動服務:systemctl start autofs  systemctl enable autofs

  檢查服務:systemctl status autofs

  新建組態檔:/etc/auto.master.d/xxxxxx.autofs(新建檔案)

      內容:/-  /etc/xxxxx.nfs(/- 指定組態檔)

  編輯組態檔:/etc/xxxxx.nfs(新建、製作組態檔)

      內容:/local/path  -type=nfs,rw,sync   nfs_server_ip:/共用目錄path

  重新啟動服務:systemctl restart autofs.servic

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-12/138135.htm


IT145.com E-mail:sddin#qq.com