2021-05-12 14:32:11
NFS——網路檔案系統
一、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
相關文章