您好,登錄后才能下訂單哦!
11.1、NFS簡介
NFS是Network File System的縮寫,中文名為網(wǎng)絡(luò)文件系統(tǒng),它是一種能使安裝了不同操作系統(tǒng)的計算機之間通過網(wǎng)絡(luò)進行共享的網(wǎng)絡(luò)協(xié)議。由于NFS可以快速地進行文件共享,有效地提供資源的利用率,節(jié)省本地磁盤空間,方便集中管理,所以應(yīng)用廣泛。
NFS采用C/S工作模式,NFS服務(wù)器設(shè)置好共享文件目錄后,其他的NFS客戶端就可以把這個由遠端服務(wù)器共享出來的目錄到本地系統(tǒng)上的某個自行定義的掛載點,并進行使用。
NFS支持的功能很多,而不同的功能由不同的程序來實現(xiàn),每啟動一個功能就需要打開一些端口進行數(shù)據(jù)傳輸。所以與其他大部分的C/S結(jié)構(gòu)不同,NFS并不是監(jiān)聽一些固定端口,而是隨機采用一些未被使用的小于1024的端口作為數(shù)據(jù)傳輸。但是客戶端需要連接服務(wù)器時首先必須知道服務(wù)端程序提供服務(wù)的端口,而NFS端口的隨機性為客戶端連接帶來了麻煩,為此NFS使用了遠程過程調(diào)用RPC(Remote Procedure Call)來解決。
當(dāng)NFS啟動時,它會隨機地使用服務(wù)器上未被使用的小于1024的端口來為服務(wù)端口,然后會把端口號、進程ID和監(jiān)聽IP等信息在RPC服務(wù)中注冊。這樣一來,RPC服務(wù)就知道各個NFS功能對應(yīng)的服務(wù)端口,當(dāng)客戶端通過固定端口111連接上RPC服務(wù)后,RPC就會把NFS各個功能所對應(yīng)的端口號返回給客戶端。至此,客戶端就可以通過這些端口直接與NFS進行通信。
11.2、NFS服務(wù)器安裝與配置
NFS服務(wù)器主要設(shè)計的軟件有rpcbind和nfs-utils,它們分別是RPC和NFS主程序,關(guān)于這兩個軟件包,其作用分別為:
rpcbind:監(jiān)聽端口111/tcp, 111/udp,最主要的功能就是在指定每個NFS功能所對應(yīng)的端口號,并且匯報給客戶端,讓客戶端可以連結(jié)到正確的端口上去。 nfs-utils:NFS的主程序,監(jiān)聽端口2049/tcp, 2049/udp,包括提供NFS服務(wù)所需要的rpc.nfsd和rpc.mountd兩個守護進程和其他相關(guān)配置文件。 |
[root@localhost home]# yum install -y rpcbind nfs-utils #yum安裝軟件包 [root@localhost home]# rpm -ql rpcbind #查看文件的具體安裝路徑 /etc/rc.d/init.d/rpcbind #rpcbind自動啟動腳本 /sbin/rpcbind #主程序 /usr/sbin/rpcinfo /usr/share/doc/rpcbind-0.2.0 #文檔 /usr/share/doc/rpcbind-0.2.0/AUTHORS /usr/share/doc/rpcbind-0.2.0/ChangeLog /usr/share/doc/rpcbind-0.2.0/README /usr/share/man/man8/rpcbind.8.gz #幫助文件 /usr/share/man/man8/rpcinfo.8.gz /var/cache/rpcbind #啟動NFS服務(wù)時,先啟動rpcbind,后啟動nfs服務(wù) [root@localhost home]# service rpcbind start #啟動rpcbind Starting rpcbind: [ OK ] [root@localhost home]# service nfs start #啟動nfs Starting NFS services: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ] #關(guān)閉NFS服務(wù)時,先關(guān)閉nfs服務(wù),后關(guān)閉rpcbind服務(wù) [root@localhost home]# service nfs stop Shutting down NFS daemon: [ OK ] Shutting down NFS mountd: [ OK ] Shutting down RPC idmapd: [ OK ] [root@localhost home]# service rpcbind stop Stopping rpcbind: [ OK ]
NFS服務(wù)端的配置文件通過/etc/exports配置文件來實現(xiàn),更改配置文件后需要通過exports命令使更改后的配置生效。
exports配置文件
/etc/exports文件是NFS主要的配置文件,該文件用于設(shè)置服務(wù)器的共享目錄,以及目錄允許訪問的主機、訪問權(quán)限等信息。NFS安裝后會在/etc目錄下創(chuàng)建一個空白的exports文件,即沒有任何的共享目錄,用戶需要進行手工編輯。文件每一行定義了一個共享目錄,其格式為:
共享目錄 [客戶端1(選項1,選項2 ...)] [客戶端2(選項1,選項2 ...)] ...
共享目錄與各客戶端之間以空格進行分隔,除了共享目錄以外,其他內(nèi)容可選。
共享目錄:提供NFS客戶端使用的目錄 客戶端:可以訪問共享目錄的計算機,可以通過IP地址和主機名進行指定,也可以使用子網(wǎng)掩碼指定網(wǎng)段或者使用通配符'*'或'?'進行模糊指定。 選項:指定該共享目錄的訪問權(quán)限,如果不指定,則NFS使用默認選項。 |
客戶端示例:
客戶端 | 說明 |
Demoserver | 主機名為Demoserver的計算機 |
10.0.0.71 | IP地址為10.0.0.71的計算機 |
192.168.2.0/24 | 子網(wǎng)192.168.2.0中的所有計算機 |
host?.example.com | ?表示任意字符 |
*.example.com | .example.com域中的所有計算機 |
* | 所有計算機 |
客戶端常用選項:
客戶端選項 | 說明 |
ro | 客戶端只能以只讀方式訪問共享目錄中的文件,不能寫入 |
rw | 對共享目錄可讀寫 |
sync | 將數(shù)據(jù)同步寫入內(nèi)存與硬盤中 |
async | 異步IO方式,數(shù)據(jù)會先暫存在內(nèi)存中,待需要時再寫入硬盤 |
secure | 限制NFS服務(wù)只能使用小于1024端口號進行數(shù)據(jù)傳輸 |
insecure | 使用大于1024端口 |
wdelay | 如果多個客戶端要對同一目錄進行讀寫,則將這些操作集中執(zhí)行 |
no_wdelay | 有寫操作則立即寫入,當(dāng)設(shè)置了async選項時,該選項無效 |
hide | 共享目錄時,不共享目錄中的子目錄 |
no_hide | 共享子目錄 |
subtree_check | 強制NFS檢查共享目錄父目錄的權(quán)限 |
no_subtree_check | 不檢查父目錄權(quán)限 |
all_squash | 不管登錄NFS的使用者是什么身份,都把他的UID和GID映射為匿名用戶和用戶組 |
no_all_squash | 保留用戶原來的UID和GID,不進行映射 |
anonuid | 指定NFS服務(wù)器使用/etc/passwd文件中UID為該值的用戶作為匿名用戶,應(yīng)該盡量保持客戶端和服務(wù)器端用戶UID的一致性 |
anongid | 指定NFS服務(wù)器使用/etc/group文件中GID為該值的用戶作為匿名用戶組 |
root_squash | 如果登錄NFS服務(wù)器使用共享目錄的使用者是root,則把這個使用者的權(quán)限映射為匿名用戶 |
no_root_squash | 如果登錄NFS服務(wù)器使用共享目錄的使用者是root,保留它的root權(quán)限,這可能會導(dǎo)致嚴(yán)重的安全問題 |
exportfs命令:輸出共享目錄
NFS服務(wù)啟動時,會讀取/etc/exports配置文件的內(nèi)容,把文件中設(shè)置的共享目錄輸出,供客戶端使用。在NFS服務(wù)啟動后,如果要對/etc/exports進行更改,需要通過exportfs對共享目錄進行輸出,其命令格式為:
/usr/sbin/exportfs [-avi] [-o options,..] [client:/path ..] /usr/sbin/exportfs -r [-v] /usr/sbin/exportfs [-av] -u [client:/path ..] /usr/sbin/exportfs [-v] /usr/sbin/exportfs -f
常用選項:
-a:全部輸出或取消輸出所有的共享目錄 -i:忽略/etc/exports配置文件,而使用默認或命令行中指定的選項 -o:指定輸出的客戶端選項 -r:重新讀取/etc/exports中的配置,并同步/var/lib/nfs/xtab與/etc/exports的內(nèi)容 -u:取消一個或多個共享目錄的輸出 -v:如果不跟其他選項一起使用,則顯示當(dāng)前共享的所有目錄及他們的選項設(shè)置,如果輸出或取消輸出共享目錄,則顯示進行了那些操作 |
11.3、NFS客戶端配置
要在NFS客戶端上使用服務(wù)器的共享目錄,需要在本地主機上啟動rpcbind服務(wù),然后使用showmount命令查看NFS服務(wù)器共享的目錄有哪些,使用mkdir命令在本地建立共享目錄的掛載點,最后使用mount命令掛載共享目錄到本地。
showmount命令格式為:
showmount [選項] [主機IP或名稱]
常用選項:
-a:一般在NFS服務(wù)器上使用,用于顯示已經(jīng)掛載服務(wù)器共享目錄的客戶端及他們使用的共享目錄 -d:與-a類似,但只顯示目錄,不顯示具體客戶端 -e:顯示指定NFS服務(wù)器輸出的共享目錄列表 -h:顯示幫助信息 -v:顯示版本信息 --no-headers:不輸出標(biāo)題信息 |
掛載點可以由用戶自行指定,創(chuàng)建掛載點后,就可以掛載共享目錄,掛載共享目錄使用的命令與掛載本地文件系統(tǒng)的命令一樣,使用mount命令,其格式為:
mount [選項] NFS服務(wù)器IP或主機名:共享目錄 掛載點
常用選項:
選項 | 說明 |
-t nfs | 指定要掛載的文件系統(tǒng)類型為NFS |
-o ro | 只讀掛載的文件系統(tǒng)為只讀 |
-o rw | 可讀寫 |
-o rsize=n | 指定NFS服務(wù)器上讀文件時NFS使用的塊大小,單位字節(jié) |
-o wsize=n | 指定NFS服務(wù)器上寫文件時NFS使用的塊大小,單位字節(jié) |
-o timeo=n | 指定超時后重新發(fā)送請求的延時時間,單位十分之一秒 |
-o retrans=n | 指定放棄掛載前嘗試的次數(shù) |
-o acregmin=n | 指定文件在緩沖中存放的最小時間,單位秒 |
-o acregmax=n | 指定文件在緩沖中存放的最大時間,單位秒 |
-o acdirmin=n | 指定目錄在緩沖中存放的最小時間,單位秒 |
-o acdirmax=n | 指定目錄在緩沖中存放的最大時間,單位秒 |
-o actime=n | 該選項值代替acregmin,acregmax,acdirmin,acdirmax,把這四個值設(shè)為一樣 |
-o retry=n | 指定放棄掛載前嘗試的時間,單位分鐘 |
-o port=n | 指定連接NFS服務(wù)器使用的端口號 |
-o proto=n | 指定掛載NFS文件系統(tǒng)時使用的網(wǎng)絡(luò)協(xié)議 |
-o fg | 使用前臺方式完成掛載工作 |
-o bg | 使用后臺方式完成掛載工作 |
-o hard | 如果超時,則在控制臺顯示server not responding的錯誤信息并重復(fù)嘗試連接,直到恢復(fù)為止 |
-o soft | 如果連接超時,則返回I/O錯誤給請求的程序 |
-o intr | 如果NFS文件操作超時,而使用了hard方式掛載,允許中斷文件操作 |
-o noac | 禁止緩存,強制進行同步寫 |
-o fsc | 啟動本地磁盤緩存 |
11.4、使用autofs按需掛載共享目錄
傳統(tǒng)NFS共享目錄使用方式中,客戶端要掛載共享目錄一般是通過手工執(zhí)行mount命令或在fstab文件中配置開機自動掛在這兩種方式完成。但是,NFS客戶端與服務(wù)器之間不是永久連接,而NFS一個缺點是當(dāng)客戶端和服務(wù)器連接后,任何一方離線都可能導(dǎo)致另一方不斷等待超時。同時,可能很多用戶掛載了共享目錄,但實際沒有使用,導(dǎo)致NFS服務(wù)器資源的消耗,為了解決這些問題,一般做法是使用autofs服務(wù),僅在訪問時動態(tài)掛載共享目錄。
autofs是一個按需掛載文件系統(tǒng)的程序,可以直接使用yum安裝。
[root@localhost ~]# yum install -y autofs [root@localhost ~]# service autofs start Loading autofs4: [ OK ] Starting automount: [ OK ]
/etc/auto.master是autofs的主配置文件,配置格式為:
掛載點頂層目錄 映射文件
掛載點頂層目錄: 例如要把共享目錄掛在到/nfs/public目錄下,那么這里的值就設(shè)置為/nfs, 而/nfs/public不需要手工創(chuàng)建 映射文件:該文件是由用戶自行指定并創(chuàng)建,在該文件中設(shè)置的NFS系統(tǒng)應(yīng)該如何掛載 |
映射文件格式:
掛載點 [-掛載選項] NFS服務(wù)器名或IP:共享目錄
其中,掛載點是基于auto.master文件中所設(shè)置的'掛載點頂層目錄'的相對路徑。配置文件更改后需要重啟autofs服務(wù)式配置生效,也可以使用reload重載。
配置實例
假設(shè)NFS服務(wù)器nfsserver所輸出的共享目錄有4個,/tmp,/sharefiles/public, /sharefiles/private,/media/cdrom,exports文件具體內(nèi)容為:
[root@localhost ~]# cat /etc/exports /tmp 192.168.191.*(rw,no_root_squash) /sharefiles/public 192.168.191.*(rw,all_squash,anonuid=40,anongid=40) /sharefiles/private 192.168.191.*(rw) /media/cdrom 192.168.191.*(ro)
要通過autofs服務(wù)把這些目錄都掛載到本地
/nfs/tmp /nfs/public /nfs/private /nfs/cdrom
創(chuàng)建掛載點頂層目錄
[root@localhost ~]# mkdir /nfs
編輯/etc/automaster文件,添加如下內(nèi)容:
/nfs /etc/auto.nfs
編輯/etc/auto.nfs映射文件:
[root@localhost ~]# cat /etc/auto.nfs tmp - 192.168.191.128:/tmp public - 192.168.191.128:/sharefiles/public private - 192.168.191.128:/sharefiles/private cdrom - 192.168.191.128:/media/cdrom
重啟autofs服務(wù):
[root@localhost nfs]# service autofs reload Reloading maps [root@localhost home]# cd /nfs/ #進入nfs目錄,目錄為空 [root@localhost nfs]# ls [root@localhost nfs]# ls /nfs/cdrom #訪問各掛載的目錄 cdrom.txt [root@localhost nfs]# ls /nfs/private private [root@localhost nfs]# ls /nfs/public public [root@localhost nfs]# ls /nfs/tmp yum.log [root@localhost nfs]# ls #當(dāng)訪問時,掛載的目錄才出現(xiàn) cdrom private public tmp
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。