NFS(Network File System),網(wǎng)絡(luò)文件系統(tǒng),他能使使用者訪問網(wǎng)絡(luò)上別處的文件就像在使用自己的計(jì)算機(jī)一樣杠输。
其實(shí)現(xiàn)主要是采用遠(yuǎn)程過程調(diào)用機(jī)制RPC(Remote Procedure Call Protocol),RPC基于C/S架構(gòu).
在NFS服務(wù)環(huán)境中,服務(wù)端是運(yùn)行著NFS服務(wù)和rpcbind兩個(gè)服務(wù)的双藕,NFS服務(wù)會開啟很多端口,他的端口除了2049是固定的阳仔,其他的都是隨機(jī)的忧陪。客戶端去和一個(gè)隨機(jī)的服務(wù)器端口建立鏈接驳概,就需要如下過程:
- 1.客戶端通過rpcbind服務(wù)赤嚼,向服務(wù)端的rpcbind服務(wù)請求服務(wù)端的NFS端口
- 2.服務(wù)端的rpcbind服務(wù)反饋NFS端口信息給客戶端。
- 3.客戶端通過獲取到的NFS端口來和服務(wù)端的NFS服務(wù)建立連接,之后就可以進(jìn)行數(shù)據(jù)傳輸了顺又。
實(shí)驗(yàn):
1.服務(wù)端安裝主程序包
[root ~]$yum -y install nfs-utils
2.設(shè)置共享目錄
共享目錄的配置文件為/etc/exports和/etc/exports.d/*.exports更卒,這里我們使用/etc/exports來設(shè)置
格式為:/dir 主機(jī)1(opt1,opt2) 主機(jī)2(opt1,opt2)...
主機(jī)格式有多種寫法:
- 單個(gè)主機(jī):ipv4,ipv6稚照,F(xiàn)QDN
- IP networks:兩種掩碼格式均支持
172.18.0.0/255.255.0.0
172.18.0.0/16 - wildcards:主機(jī)名通配蹂空,例如*.magedu.com,注意IP不可以使用通配
- netgroups:NIS域的主機(jī)組果录,@group_name
- anonymous:表示使用*通配所有客戶端
選項(xiàng):
默認(rèn)選項(xiàng):(ro,sync,root_squash,no_all_squash)
- ro,rw 只讀和讀寫
- async 異步上枕,數(shù)據(jù)變化后不立即寫磁盤,性能高
- sync(1.0.0后為默認(rèn))同步弱恒,數(shù)據(jù)在請求時(shí)立即寫入共享
- no_all_squash (默認(rèn))保留共享文件的UID和GID辨萍,只針對普通用戶
- all_squash 所有遠(yuǎn)程用戶(包括root)都變成nfsnobody
- root_squash (默認(rèn))遠(yuǎn)程root映射為nfsnobody,UID為65534,早期版本是4294967294 (nfsnobody)
- no_root_squash 遠(yuǎn)程root映射成root用戶
- anonuid和anongid 指明匿名用戶映射為特定用戶UID和組GID返弹,而非nfsnobody,可配合all_squash使用
[root ~]$mkdir /share #創(chuàng)建共享目錄
[root ~]$cd /share
[root ~]$touch haha
[root ~]$vim /etc/exports
添加如下內(nèi)容
/share 172.16.253.199(rw)
3.設(shè)置好配置文件后锈玉,啟動nfs服務(wù),這里有個(gè)服務(wù)端工具exportfs
,用他來管理nfs服務(wù)义起。注意拉背,根據(jù)上面所說的原理,nfs服務(wù)是依賴rpcbind服務(wù)的默终,端口為111椅棺,這個(gè)服務(wù)默認(rèn)是開啟的犁罩,如果啟動出錯,可以查看rpcbind服務(wù)是否在運(yùn)行.
[root ~]$ss -tunlp|grep rpcbind
udp UNCONN 0 0 *:111 *:* users:(("rpcbind",1504,6))
udp UNCONN 0 0 *:831 *:* users:(("rpcbind",1504,7))
udp UNCONN 0 0 :::111 :::* users:(("rpcbind",1504,9))
udp UNCONN 0 0 :::831 :::* users:(("rpcbind",1504,10))
tcp LISTEN 0 128 :::111 :::* users:(("rpcbind",1504,11))
tcp LISTEN 0 128 *:111 *:* users:(("rpcbind",1504,8))
[root ~]$service nfs start
[root ~]$exportfs -v
/share 172.16.253.199(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,root_squash,no_all_squash)
啟動服務(wù)后两疚,下次修改配置文件床估,就可以直接使用exportfs -r
來重讀配置文件了
4.服務(wù)端配置完成后,就可以在客戶端掛載了
注意鬼雀,如果不能掛載顷窒,可以檢查下服務(wù)端的防火墻規(guī)則和selinux
showmount工具為客戶端工具,可以查看服務(wù)端共享的目錄
[root@localhost ~]# showmount -e 172.16.251.34 #查看服務(wù)端的共享
Export list for 172.16.251.34:
/share 172.16.253.199
[root@localhost ~]# mkdir /nfsshare #創(chuàng)建本地目錄
[root@localhost ~]# mount 172.16.251.34:/share /nfsshare
[root@localhost ~]# cd /nfsshare
[root@localhost nfsshare]# ls
haha #進(jìn)入到共享目錄中源哩,看到服務(wù)端之前創(chuàng)建的文件鞋吉,掛載成功
使用autofs來自動掛載
客戶端還可以搭配autofs服務(wù)來實(shí)現(xiàn)需要用到的時(shí)候再去掛載NFS服務(wù)端,在空閑時(shí)自動卸載
在做這個(gè)實(shí)驗(yàn)之前励烦,先將之前掛載的/nfsshare目錄卸載
[root@localhost nfsshare]# cd
[root@localhost ~]# umount /nfsshare/
1.安裝autofs
[root@localhost ~]# yum -y install autofs
[root@localhost ~]# rpm -qc autofs
/etc/auto.master #設(shè)置自動掛載目錄的配置文件
/etc/auto.misc
/etc/auto.net
/etc/auto.smb
/etc/autofs.conf #各種參數(shù)的配置文件
/etc/autofs_ldap_auth.conf
/etc/sysconfig/autofs
2.修改配置文件
有兩種格式:
- 絕對路徑法:在主配置文件中寫
/- 子配置文件名
谓着,然后到子配置文件中寫掛載點(diǎn)完整路徑 要掛載的目錄
- 相對路徑法:在主配置文件中寫
掛載點(diǎn)目錄名 子配置文件名
,然后到子配置文件中寫掛載點(diǎn)基名 要掛載的目錄
相對路徑法在掛載跟下的目錄時(shí)坛掠,會出現(xiàn)問題赊锚,所以推薦使用絕對路徑法,下面配置使用絕對路徑法來配置:
[root@localhost ~]# vim /etc/auto.master
在前排添加如下
/- /etc/nfsauto
[root@localhost ~]# vim /etc/nfsauto
添加如下內(nèi)容
/nfsshare 172.16.251.34:/share
[root@localhost ~]# service autofs restart #重啟服務(wù)
掛載點(diǎn)和要掛載的目錄相同時(shí)屉栓,可以使用這種寫法:
\* server:/export/&
,*號和&號表示相同的內(nèi)容
3.驗(yàn)證
[root@localhost ~]# mount |grep "nfsshare" #使用mount命令查看舷蒲,看到現(xiàn)在/nfsshare目錄還沒有掛載
[root@localhost ~]#cd /nfsshare
[root@localhost nfsshare]# ls #到目錄中,ls 看到掛載點(diǎn)的內(nèi)容
haha
[root@localhost ~]# mount |grep "nfsshare" #mount命令看到掛載上了
172.16.251.34:/share on /nfsshare type nfs (rw,vers=4,addr=172.16.251.34,clientaddr=172.16.253.199)