中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行nfs不同版本的掛載與解析

發布時間:2021-12-30 16:43:18 來源:億速云 閱讀:222 作者:柒染 欄目:云計算

如何進行nfs不同版本的掛載與解析,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

  •    NFS,是Network File System的簡寫,即網絡文件系統。網絡文件系統是FreeBSD支持的文件系統中的一種,也被稱為NFS.  NFS允許一個系統在網絡上與他人共享目錄和文件。通過使用NFS,用戶和程序可以像訪問本地文件一樣訪問遠端系統上的文件 。

  • 運行模式: C/S 
    版本異同:RHEL6.5以NFSv3作為默認版本,NFSv3使用TCP、UDP協議(端口號是2049),默認是UDP; RHEL7以NFSv4作為默認版本,NFSv4使用TCP協議(端口號是2049)和NFS服務器建立連接。

  • 原理示意圖:

如何進行nfs不同版本的掛載與解析

  • RHEL6.5環境:

  • 服務端配置安裝

  • 1、包安裝

  • # rpm -qa | grep nfs-utils
  • # yum install nfs-utils rpcbind
  • 要部署NFS服務,需要安裝上面兩個軟件包
      1.nfs-utils:NSF主程序
        包括rpc.nfsd,rpc.mountd等等
      2.rpcbind:rpc主程序
         NFS可以被視為一個RPC程序,在啟動任何一個RPC程序之前,需要做好端口映射工作,這個映射工作
         就是由rpcbind服務來完成的,因此必須先啟動rpcbind服務,再啟動nfs服務

2、NFS文件配置:

[root@test /]# vi /etc/exports 
#增加一行:
/tmp/test0920  11.11.165.0/24(rw,no_root_squash,no_all_squash,sync)

:x保存退出;

3、使配置生效:

[root@test /]# exportfs -r

注:配置文件說明:

/tmp/test0920  為共享的目錄,使用絕對路徑。

11.11.165.0/24

4、測試:

[root@localhost ~]# showmount -e 
Export list for test1:
/tmp/test0920  11.11.165.0/24

5、設置服務開機自啟
Chkconfig rpcbind on
   Chkconfig --level 345 rpcbind on
Chkconfig nfs on
   Chkconfig --level 345 nfs on


客戶端的配置:
1、yum -y install nfs-utils
2、mount -t nfs  11.11.165.115:/tmp/test0920   /data 
3、編輯/etc/fstab 
增加11.11.165.115:/tmp/test0920   /data      nfs  defaults     0 0

注意默認是nfs掛載
如果選擇nfs4掛載,則可以用以下語句
mount -t nfs4 11.11.165.115:/tmp/test0920   /data 
編輯/etc/fstab
則可以
11.11.165.115:/tmp/test0920   /data       nfs4  defaults        0 0
或者
11.11.165.115:/tmp/test0920   /data       nfs  defaults,v4       0 0

容易出現的問題:
在/etc/sysconfig/nfs文件里,將 
# Turn off v2 and v3 protocol support 
#RPCNFSDARGS="-N 2 -N 3" 
# v4 protocol support 
#RPCNFSDARGS="-N 4"  將這句的#去掉后
則出現
[root@testsj ~]# mount -t nfs 11.11.165.115:/tmp/test0920 /data
mount.nfs: Protocol not supported
[root@testsj ~]# mount -t nfs4 11.11.165.115:/tmp/test0920 /data
mount.nfs4: Protocol not supported
因為關閉了nfs4, 則nfs4和4以下的協議都不支持了
當你加上#號后,nfs4和nfs3都可以掛載了




RHEL7.3環境:
在/etc/sysconfig/nfs文件里
RPCNFSDARGS="-V 4.2"
編輯/etc/fstab
則可以
11.11.165.115:/tmp/test0920   /data        nfs4.2   defaults    0 0
或者
11.11.165.115:/tmp/test0920   /data    nfs   defaults,v4.2    0 0
服務和防火墻稍有差別
[root@linuxprobe ~]# systemctl start rpcbind
[root@linuxprobe ~]# systemctl enable rpcbind
[root@linuxprobe ~]# systemctl start nfs-server
[root@linuxprobe ~]# systemctl enable nfs-server

進站允許策略

# firewall-cmd --add-service=nfs --zone=internal --permanent
# firewall-cmd --add-service=mountd --zone=internal --permanent
# firewall-cmd --add-service=rpc-bind --zone=internal --permanent

加安全認證的配置
在desktop30上掛載來自于server30的NFS共享,要求
 1 /public掛載在目錄/mnt/nfsmount上
 2 /protected掛載在目錄/mnt/nfssecure,并使用安全的方式,秘鑰在http://ldap.example.com/pub/desktop30.keytab 
 3 這些文件系統在系統啟動時自動掛載
[root@desktop30 mnt]# systemctl enable nfs-server.service
[root@desktop30 mnt]# systemctl enable nfs-secure.service 
ln -s '/usr/lib/systemd/system/nfs-secure.service' '/etc/systemd/system/nfs.target.wants/nfs-secure.service'
[root@desktop30 mnt]# systemctl start nfs-secure.service
[root@desktop30 mnt]# mkdir nfsmount
[root@desktop30 mnt]# mkdir nfssecure
[root@desktop30 mnt]# wget -O /etc/krb5.keytab http://ldap.example.com/pub/desktop30.keytab
[root@desktop30 mnt]# vim /etc/fstab
172.16.30.130:/public   /mnt/nfsmount           nfs  ro      0  0
server30.example.com:/protected /mnt/nfssecure  nfs  rw,sec=krb5p   0 0

協議版本解析:
NFS協議到現在經歷了V1,V2,V3,V4版本,但是它有一個缺點就是協議沒有用戶認證機制,而且數據在網絡上傳送的時候是明文傳送,所以安全性極差,一般只能在局域網中使用。
NFSv3是1995年發布的,相比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: 這是操作系統可以自己實現的一些文件屬性。
(7)服務器端拷貝:
如果客戶需要從一個NFS服務器拷貝數據到另外一個NFS服務器,nfsv4可以讓兩臺NFS服務器之間直接拷貝數據,不需要經過客戶端。
(8)資源預留和回收:
NFSv4為虛擬分配提供的新特性。隨著存儲虛擬分配功能的普及使用,nfsv4可以為預留固定大小的存儲空間;同樣在文件系統上刪除文件后,也能夠在存儲上面釋放相應空間。
(9)國際化支持:
NFSv4文件名、目錄、鏈接、用戶與組可以使用 UTF-8字符集,UTF-8兼容ASCII碼,使得NFSv4支持更多語言。
(10)RPC合并調用:
NFSv4允許將多個請求合并為一個rpc引用,在NFSv3每個請求對應一個rpc調用。WAN環境中,NFSv4合并rpc調用可以顯著降低延遲。
(11)安全性:
NFSv4用戶驗證采用“用戶名+域名”的模式,與Windows  AD驗證方式類似,NFSv4強制使用Kerberos驗證方式。(Kerberos與Windows  AD都遵循相同RFC1510標準),這樣方便windows和*nix環境混合部署。
(12)pNFS
并行NFS文件系統,元數據服務器負責用戶請求調度、數據服務器負責客戶請求處理。pNFS需要NFS服務器和客戶端協同支持

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



補充:
nfs4掛載的fsid問題
問題現象:
掛載nfs4時,報錯:reason given by server :No such file or directory

背景知識:
NFSv4將所有共享使用一個虛擬文件系統展示給客戶端。偽文件系統根目錄(/)使用fsid=0標示,只有一個共享可以是fsid=0。客戶端需要使用“nfs server ip:/”掛載偽文件系統,偽文件系統一般使用RO方式共享,其他共享可以通過mount –bind選項在偽文件系統目錄下掛載。客戶端掛載過程需要通過mount –t nfs4指定NFS版本為4,默認采用nfsv3。

解決:
以下是我的配置文件,我想掛在/datapool/nfs目錄
/  *(rw,fsid=0,insecure,no_root_squash)
/datapool/nfs   *(rw,fsid=1000,insecure,no_root_squash

然后mount -t nfs4 ip:/datapool/nfs   /mnt/nfs/



nfs配置參數選項說明:
ro:共享目錄只讀;
rw:共享目錄可讀可寫;
all_squash:所有訪問用戶都映射為匿名用戶或用戶組;
no_all_squash(默認):訪問用戶先與本機用戶匹配,匹配失敗后再映射為匿名用戶或用戶組;
root_squash(默認):將來訪的root用戶映射為匿名用戶或用戶組;
no_root_squash:來訪的root用戶保持root帳號權限;
anonuid=<UID>:指定匿名訪問用戶的本地用戶UID,默認為nfsnobody(65534);
anongid=<GID>:指定匿名訪問用戶的本地用戶組GID,默認為nfsnobody(65534);
secure(默認):限制客戶端只能從小于1024的tcp/ip端口連接服務器;
insecure:允許客戶端從大于1024的tcp/ip端口連接服務器;
sync:將數據同步寫入內存緩沖區與磁盤中,效率低,但可以保證數據的一致性;
async:將數據先保存在內存緩沖區中,必要時才寫入磁盤;
wdelay(默認):檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率;
no_wdelay:若有寫操作則立即執行,應與sync配合使用;
subtree_check(默認) :若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限;
no_subtree_check :即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率;

Troubleshooting

1、在上面的操作過程中,如果你不幸遇到下面這個問題的話,可以嘗試更新 Linux kernel 或通過打開 IPv6 來解決這個問題,這是1個 bug:

# mount -t nfs4 172.16.20.1:/ /home/vpsee/bak/
mount.nfs4: Cannot allocate memory

2、如果遇到如下問題,可能是因為你的 mount -t nfs 使用的是 nfsv3 協議,需要明確指出使用 nfsv4 協議掛載 mount -t nfs4:

# mount -t nfs 172.16.20.1:/ /home/vpsee/bak/
mount: mount to NFS server '172.16.20.1' failed: RPC Error: Program not registered.

# mount -t nfs4 172.16.20.1:/ /home/vpsee/bak/

如果網絡不穩定

NFS默認是用UDP協議,換成TCP協議掛載即可:

mount -t nfs 11.11.165.115:/tmp/test0920   /data  -o proto=tcp -o nolock

VMware ESXi5.5主機無法掛載RHEL6.5 NFS存儲

看完上述內容,你們掌握如何進行nfs不同版本的掛載與解析的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

nfs
AI

湟中县| 安徽省| 仲巴县| 永春县| 沙田区| 临汾市| 舟山市| 旬邑县| 共和县| 喀什市| 深泽县| 任丘市| 嘉义市| 雷州市| 抚顺县| 子长县| 大名县| 富顺县| 嵊州市| 鹿泉市| 长兴县| 巫溪县| 安塞县| 台东市| 梨树县| 达拉特旗| 广西| 汉源县| 师宗县| 如皋市| 新河县| 上虞市| 常州市| 中阳县| 迭部县| 嘉荫县| 孙吴县| 八宿县| 衡阳市| 盈江县| 淳安县|