一、NFS概念: 透過網路,讓不同的主機能“共用”文件。通過NFS,用戶和程式可以像訪問本地文件一樣訪問遠端系統上的文件。 二、版本: 共三個版本,NFSv2,NFSv3,NFSv4(包含4.0和4.1)。其中NFSv2和NFSv3由Sun公司起草。NFS4.0主要由NetApp。 三、版本特點 V ...
一、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