nfs——網絡文件系統
1、說明:允許一個系統在網絡上與他人共享目錄和文件
2、好處:通過nfs服務,就可以讓這個機器訪問遠程的文件,像訪問自己的文件一樣,屬於cs通信
3、原理說明:假設有A,B,C 三台機器,在A上搭建nfs服務,然后把A上的一個目錄(例如mnt)同時共享給B 和 C,接着B和C把A共享的目錄放在自己本地上(掛載,類似磁盤掛載)。 這樣,在用戶看來,A,B,C同時存在一個相同的目錄,有着相同的文件,。只要去改動任意一台機器且在該目錄下的文件,其他兩台機器都會相應同步變化。
傳統不共享的做法,不但浪費磁盤空間,而且也浪費帶寬資源。
一、nfs部署
前期准備工作:
1、准備2台機器
(1)服務器端master:192.168.131.110
安裝兩個包:(a)nfs-utils
(b)rpcbind(CentOS6開始叫rpcbind,之前的CentOs 叫portmap包)
簡單說說rpcbind(后面會用到 /etc/init.d/
rpcbind start)
rpc服務,主要是在nfs共享時負責通知客戶端、服務端的nfs端口號;簡單理解rpc就是一個中介服務。
(2)客戶端slave:192.168.131.131
僅需要安裝: nfs-utils
2、master端
(1)編輯配置文件 /etc/exports, 把mnt目錄共享出去
格式: 共享目錄 允許訪問的主機(ip/IP網段) 權限選項(可讀ro, 可寫rw, sync等)
寫入:
/mnt 192.168.131.131 (rw, sync)
權限選項部分說明:
sync:同步模式,內存中數據時時寫入磁盤
async:不同步,內存中數據定期寫入磁盤
no_root_squash: root用戶對共享目錄擁有至高的權限控制,就像是對本機的目錄操作一樣。(不安全,不建議使用)
all_squash:不管使用NFS的用戶是誰,他的身份都會被限定成為一個指定的普通用戶身份(nfsnobody)
anonuid/anongid:要和root_squash及all_squash一同使用,用於指定使用NFS的用戶限定后的uid和gid(前提:主機的/etc/passwd 中存在這個uid和gid)
(2)啟動rpc服務: /etc/init.d/rpcbind start
(3)啟動nfs服務: /etc/init.d/nfs start
3、slave端
(1)查看master端共享出來的目錄
showmount -e 192.168.131.110
(ps:showmount 命令是nfs-utils這個包所帶的)
(2)掛載NFS,到opt下
mount -t nfs 192.168.131.110:/mnt /opt
df -h 可以查看NFS共享出來的目錄mnt

4、測試
(1)master查看mnt權限(755)


對slave端來說並不可寫(權限不夠)
所以 master 需要授權掛載的目錄mnt
(2)master 授權掛載目錄mnt
chmod 777 /mnt/
(3)slave 端 touch 1.txt ——》 屬主屬組為 nfsnobody
二、nfs優化
背景:slave 端創建文件時並不想顯示nfsnobody
1、slave端查看要映射的user
cat /etc/passwd
假設我們要映射屬主屬組號都為500的用戶(user111)

2、master端修改配置文件 /etc/exports
/mnt 192.168.131.131 (rw, sync, all_squash,anonuid=500,anongid=500)
3、master端重新加載(重啟也行,但不建議)
exportfs -arv
參數說明:
-a:全部掛載或卸載
-r:重新掛載
-v:顯示共享的目錄
4、slave端卸載並重新掛載
(1)umount -l /opt/
-l:即使當前在 opt 目錄下,都能夠順利卸載,且解決“device is busy” 的錯誤
(2)重新掛載(一定要加上nfsvers=3這個參數)
mount -t nfs -onolock,
nfsvers=3 192.168.131.110:/mnt /opt
參數說明:
-t: 指定掛載類型
-o: 后跟掛載選項
nolock: 掛載 nfs 服務時,不加鎖
nfsvers=3:避免權限混亂。指定使用nfsvers 的3版本,不加默認使用nfsvers,
且會導致slave端創建文件時,屬主屬組還是nfsnobody)
以上優化是把root都映射為500,如果不對root映射?——看補充
三、補充
(1)master: vim /etc/exports
改成:
no_root_squash


exportfs -arv
(2)slave端
umount /opt/
mount -t nfs -onolock,nfsvers=3 192.168.131.110:/mnt /opt
cd /opt/ 創建文件,文件所屬主和組都為root