server端安裝
- 下載
yum -y install nfs-utils rpcbind
#centos7自帶了rpcbind,rpc監聽在111端口。
- 配置
#創建配置文件
vim /etc/exports
[root@node4 ~]# cat /etc/exports
/data/hab_data 172.16.230.0/24(rw,no_root_squash,async,fsid=0)
#/data/hab_data 為共享目錄
#再次修改后,執行exportfs –rv讓配置立即生效
- 啟動server端
#啟動順序一定是rpcbind->nfs
# systemctl start rpcbind.service
# systemctl enable rpcbind.service
# systemctl start nfs.service
# systemctl enable nfs.service
client安裝
- 下載
yum install -y nfs-utils rpcbind
# 此處nfs-utils 只安裝不啟動,方便執行查看命令。
- 啟動
systemctl start rpcbind
systemctl enable rpcbind
- 掛載
1,直接掛載
# mount -t nfs 172.16.230.17:/data/hab_data data
也可將掛載配置寫入fstab文件中,與普通磁盤掛載一樣,掛載時同樣可以指定權限,只是類型為nfs。
2,autofs掛載
# yum -y install autofs
# vi /etc/auto.master
#添加一行
/- /etc/auto.mount
# vi /etc/auto.mount
#添加一行
/data -fstype=nfs,rw 172.16.230.17:/data/hab_data
#啟動服務
# systemctl start autofs
# systemctl enable autofs
故障
1、nfs只能掛載為nobody
同時修改服務端、客戶端/etc/idmapd.conf中的Domain為一樣的值,隨后重啟rpcidmapd服務,或重啟所有服務
2、客戶端無法卸載nfs目錄
umount.nfs4: /var/nfs: device is busy
執行fuser -km /var/nfs/,然后再執行umount
3,卸載
sudo fuser -m -v -i -k /app/file
sudo umount /app/file
# 直接使用 umount /app/file 可能會報“Device is busy”錯誤。
權限說明
- 1、普通用戶
當設置all_squash時:訪客時一律被映射為匿名用戶(nfsnobody)
當設置no_all_squash時:訪客被映射為服務器上相同uid的用戶,因此在客戶端應建立與服務端uid一致的用戶,否則也映射為nfsnobody。root除外,因為root_suqash為默認選項,除非指定了no_root_squash
- 2、root用戶
當設置root_squash時:訪客以root用戶訪問NFS服務端時,被映射為nfsnobody用戶
當設置no_root_squash時:訪客以root用戶訪問NFS服務端時,被映射為root用戶。以其他用戶訪問時同樣映射為對應uid的用戶,因為no_all_squash是默認選項
選項說明
ro:共享目錄只讀
rw:共享目錄可讀可寫
all_squash:所有訪問用戶都映射為匿名用戶或用戶組
no_all_squash(默認):訪問用戶先與本機用戶匹配,匹配失敗后再映射為匿名用戶或用戶組
root_squash(默認):將來訪的root用戶映射為匿名用戶或用戶組
no_root_squash:來訪的root用戶保持root帳號權限
anonuid=
anongid=
secure(默認):限制客戶端只能從小於1024的tcp/ip端口連接服務器
insecure:允許客戶端從大於1024的tcp/ip端口連接服務器
sync:將數據同步寫入內存緩沖區與磁盤中,效率低,但可以保證數據的一致性
async:將數據先保存在內存緩沖區中,必要時才寫入磁盤
wdelay(默認):檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率
no_wdelay:若有寫操作則立即執行,應與sync配合使用
subtree_check(默認) :若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限
no_subtree_check :即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率
以nfsuser(uid=1000)創建共享目錄,參數默認rw
# mkdir /var/nfs
# chown nfsuser. -R /var/nfs
# vim /etc/exports
/var/nfs 192.168.1.0/24(rw)
# exportfs -r #重載exports配置
# exportfs -v #查看共享參數
/var/nfs 192.168.1.0/24(rw,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)
- exportfs參數說明
-a 全部掛載或卸載 /etc/exports中的內容
-r 重新讀取/etc/exports 中的信息 ,並同步更新/etc/exports、/var/lib/nfs/xtab
-u 卸載單一目錄(和-a一起使用為卸載所有/etc/exports文件中的目錄)
-v 輸出詳細的共享參數