歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> NFS——網絡文件系統

NFS——網絡文件系統

日期:2017/2/28 13:46:10   编辑:Linux教程

一、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

Copyright © Linux教程網 All Rights Reserved