1
NFS簡(jiǎn)介
網(wǎng)絡(luò)文件系統(tǒng)(Network File System),通常我們都直接稱呼其名為NFS,它可以在計(jì)算機(jī)間共享文件系統(tǒng)。NFS對(duì)用戶幾乎是透明的,并且是“無(wú)狀態(tài)的”,這意味著當(dāng)NFS服務(wù)器崩潰時(shí)不會(huì)丟失任何信息??蛻魴C(jī)只是等著服務(wù)器恢復(fù)正常,然后就好像什么也沒有發(fā)生過一樣繼續(xù)工作。
2 NFS服務(wù)器
RPC(NFS服務(wù)需要依賴RPC服務(wù),這個(gè)比較重要)
要想了解NFS,必然要提到RPC這個(gè)服務(wù)。
因?yàn)镹FS支持的功能還是比較多的,并且不同的功能都會(huì)使用不同的程序來(lái)啟動(dòng)。每啟動(dòng)一個(gè)功能就會(huì)啟用一些端口來(lái)傳輸數(shù)據(jù),因此NFS的功能所對(duì)應(yīng)的端口才沒有固定,而是采用隨機(jī)取用一些未被使用的小于1024的端口來(lái)作為傳輸之用。但如此一來(lái)又造成客戶端要連接服務(wù)器時(shí)的困擾,因?yàn)榭蛻舳艘婪?wù)器端的相關(guān)端口才能夠聯(lián)機(jī),此時(shí)我們需要遠(yuǎn)程過程調(diào)用(RPC)的服務(wù)。
RPC最主要的功能就是指定每個(gè)NFS功能所對(duì)應(yīng)的端口號(hào),并且回報(bào)給客戶端,讓客戶端可以連接到正確的端口上。當(dāng)服務(wù)器在啟動(dòng)NFS時(shí)會(huì)隨機(jī)選用數(shù)個(gè)端口,并主動(dòng)地向RPC注冊(cè)。因此RPC可以知道每個(gè)端口對(duì)應(yīng)的NFS功能。然后RPC固定使用端口111來(lái)監(jiān)聽客戶端的請(qǐng)求并回報(bào)客戶端正確的端口,所以可以讓NFS的啟動(dòng)更為容易。
注意,啟動(dòng)NFS之前,要先啟動(dòng)RPC服務(wù);否則NFS無(wú)法向RPC注冊(cè)。另外,重新啟動(dòng)RPC時(shí)原本注冊(cè)的數(shù)據(jù)會(huì)不見,因此RPC重新啟動(dòng)后它管理的所有程序都需要重新啟動(dòng)以重新向RPC注冊(cè),比如NFS服務(wù)。
當(dāng)客戶端有NFS文件要存取請(qǐng)求時(shí),它向服務(wù)器端訪問數(shù)據(jù),有如下幾個(gè)步驟:
(1)客戶端會(huì)向服務(wù)器端的RPC(port 111)發(fā)出NFS文件存取功能的詢問請(qǐng)求。
(2)服務(wù)器端找到對(duì)應(yīng)的已注冊(cè)的NFS daemon端口后會(huì)回報(bào)給客戶端。
(3)客戶端了解正確的端口后,就可以直接與NFS守護(hù)進(jìn)程來(lái)聯(lián)機(jī),然后訪問數(shù)據(jù)。
其實(shí),我們可以簡(jiǎn)單的理解為:NFS當(dāng)作RPC服務(wù)中的一種,同時(shí)將RPC服務(wù)當(dāng)作NFS服務(wù)器與NFS客戶端的中間接口人,就是說(shuō)NFS客戶端訪問NFS服務(wù)器,必須經(jīng)過RPC這個(gè)接口人,才可以去訪問,否則就直接死翹翹了。
注:NFS使用TCP/IP提供的協(xié)議和服務(wù),并且位于OSI模型中的應(yīng)用層,具體如下:
層 數(shù)
名 稱
功 能
1
應(yīng)用層
NFS
2
表示層
XDR
3
會(huì)話層
RPC
4
傳輸層
UDP,TCP
5
網(wǎng)絡(luò)層
IP
6
數(shù)據(jù)鏈路層
7
物理層
Ethernet
3
安裝和配置NFS服務(wù)(只介紹SUSE版本的NFS的安裝)
3.1.1
安裝NFS服務(wù)
此步驟就直接跳過了,具體需要哪些包,可以到已經(jīng)安裝NFS服務(wù)的環(huán)境上面查看。
執(zhí)行命令即可查看:rpm -qa | grep nfs
配置NFS服務(wù),分為客戶端和服務(wù)端配置。
3.1.2
服務(wù)端配置,設(shè)定10.137.21.166為NFS服務(wù)器:
步驟如下:
1)服務(wù)端主要配置/etc/exports文件。
我們將需要共享出去的文件系統(tǒng)直接編輯到/etc/exports文件中,這樣當(dāng)NFS服務(wù)器重新啟動(dòng)時(shí),系統(tǒng)就會(huì)自動(dòng)讀取/etc/exports文件,從而告訴內(nèi)核要輸出的文件系統(tǒng)和相關(guān)的存取權(quán)限。
查看一個(gè)已經(jīng)配置好的exports文件,如下:
i2ksvr:~ # cat /etc/exports
/home/cabtimer/sharedisk/index/share 10.137.17.154(rw,async)
/home/impidx/sharedisk/searchidx *(rw,sync,anonuid=2900,all_squash)
注:下面介紹一些配置文件中常用的參數(shù)含義,以及客戶端的IP地址的格式。
rw:可讀寫權(quán)限。
ro:只讀權(quán)限。
no_root_squash:當(dāng)?shù)卿汵FS服務(wù)器主機(jī)使用共享目錄的使用者是root時(shí),其權(quán)限將被轉(zhuǎn)換成為匿名使用者,通常它的UID與GID都會(huì)變成nobody身份。
root_squash;如果登錄NFS主機(jī)使用共享目錄的使用者是root,那么對(duì)于這個(gè)共享的目錄來(lái)說(shuō),它具有root的權(quán)限,這樣會(huì)涉及到安全性的問題。
all_squash:忽略登錄NFS使用者的身份,其身份都會(huì)被轉(zhuǎn)換為匿名使用者,通常即nobody。
anonuid:通常為nobody,也可以自行設(shè)定這個(gè)UID的值,UID必須存在于/etc/passwd中。
anongid:同anonuid,但是變?yōu)镚roup ID。
sync:同步寫入資料到內(nèi)存與硬盤中。
async:資料會(huì)先暫存于內(nèi)存中,而非直接寫入硬盤。
共享給客戶端的主機(jī)的IP地址可以使用以下格式。
單個(gè)機(jī)器:一個(gè)全限定域名(能夠被服務(wù)器解析)、主機(jī)名(能夠被服務(wù)器解析)或IP地址。
使用通配符來(lái)指定的主機(jī)名或域名,使用 * 或 ?字符來(lái)指定一個(gè)字符串匹配。IP地址中不使用通配符。
IP網(wǎng)絡(luò):使用a.b.c.d/z,a.b.c.d是網(wǎng)絡(luò),z是子網(wǎng)掩碼中的位數(shù)(如192.168.0.0/24)。另一種可以接受的格式是a.b.c.d/netmask,a.b.c.d是網(wǎng)絡(luò),netmask是子網(wǎng)掩碼(如192.168.70.8/255.255.255.0)。
一般常用的是IP地址,或直接用*代替,共享給所有的機(jī)器。
如上面舉例的配置,一個(gè)指定了共享給固定IP的機(jī)器,另一個(gè)共享給所有的機(jī)器。
2)啟動(dòng)RPC服務(wù)
用法: /etc/init.d/portmap {start|stop|restart|force-reload|reload|status}
i2ksvr:~ # /etc/init.d/portmap start
Starting RPC portmap daemon done
(或直接執(zhí)行rcportmap start)
查看狀態(tài)
i2ksvr:~ # /etc/init.d/portmap status
Checking for RPC portmap daemon: running
查看111號(hào)端口是否處于監(jiān)聽狀態(tài)和詳細(xì)信息
i2ksvr:~ # netstat -utln | grep 111
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
udp 0 0 0.0.0.0:111 0.0.0.0:*
i2ksvr:~ # lsof -i :111
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
portmap 23048 nobody 3u IPv4 398290132 UDP *:sunrpc
portmap 23048 nobody 4u IPv4 398290133 TCP *:sunrpc (LISTEN)
可以看到會(huì)有TCP和UDP兩個(gè)協(xié)議,之前NFS一直使用UDP協(xié)議,后來(lái)默認(rèn)采用TCP協(xié)議了。
注:以上版本是SuSe 10或之前的版本,而SuSe 11版本開始有點(diǎn)不同,SuSe 11版本啟動(dòng)RPC服務(wù)的方式為/etc/init.d/rpcbind start
3)啟動(dòng)NFS Server服務(wù)
用法:/etc/init.d/nfsserver {start|stop|status|try-restart|restart|force-reload|reload}
i2ksvr:~ # /etc/init.d/nfsserver start
Starting kernel based NFS server done
(或直接執(zhí)行rcnfsserver start)
查看狀態(tài):
i2ksvr:~ # /etc/init.d/nfsserver status
Checking for kernel based NFS server: running
4)查看共享出去的文件
執(zhí)行showmount –e命令,查看共享的信息。查看本機(jī)時(shí),不需要指定IP地址,此命令主要用在NFS客戶端,用來(lái)查看NFS服務(wù)器共享出來(lái)的目錄資源:
i2ksvr:~ # showmount –e
Export list for i2ksvr:
/home/impidx/sharedisk/searchidx *
/home/cabtimer/sharedisk/index/share 10.137.17.154
或執(zhí)行
i2ksvr:~ # showmount -e 10.137.21.166
Export list for 10.137.21.166:
/home/impidx/sharedisk/searchidx *
/home/cabtimer/sharedisk/index/share 10.137.17.154
以上都說(shuō)明NFS服務(wù)器共享成功了。
5)介紹其他一些常用的命令和文件,有的很重要。
exportfs命令
exportfs [-aruv]
參數(shù)說(shuō)明如下:
-a:全部掛載(或卸載)/etc/exports文件內(nèi)的內(nèi)容。
-r:重新掛載/etc/exports中的設(shè)置,此外同步更新/var/lib/nfs/xtab文件中的內(nèi)容。
-u:卸載某一目錄。
-v:在export時(shí)將共享的目錄顯示在屏幕上。
比較常用的命令是:
exportfs –rv 使配置重新生效
如果修改了/etc/exports文件,執(zhí)行該exportfs命令重新讀取/etc/exports文件,從而就不需要重啟NFS服務(wù)了。
showmount命令:
showmount [-ae] hostname
參數(shù)說(shuō)明如下:
-a或-all:顯示客戶主機(jī)名和掛載點(diǎn)目錄。
-d或-directories:僅顯示被客戶掛載的目錄名。
-e或-exports:顯示NFS服務(wù)器的輸出清單。
-h或-help:顯示幫助信息。
-v或-version:顯示版本信息。
–no-headers:禁止輸出描述頭部的信息。
當(dāng)要掃描某一主機(jī)所提供的NFS共享的目錄時(shí),使用showmount -e IP(或主機(jī)名稱hostname)即可。
/var/lib/nfs/xtab和/var/lib/nfs/etab文件:
/var/lib/nfs/etab,主要記錄了NFS所分享出來(lái)的目錄的完整權(quán)限設(shè)定值;
/var/lib/nfs/xtab,記錄曾經(jīng)連接到此NFS主機(jī)的相關(guān)客戶端數(shù)據(jù)。
6)設(shè)置NFS Server開機(jī)自啟動(dòng)
查看nfsserver服務(wù)的開機(jī)自啟動(dòng)狀態(tài),默認(rèn)是任何啟動(dòng)狀態(tài)都沒有啟動(dòng)nfsserver的。
i2ksvr:~ # chkconfig --list nfsserver
nfsserver 0:off 1:off 2:off 3:off 4:off 5:off 6:off
設(shè)置nfsserver在開機(jī)為多用戶模式和圖形界面模式時(shí),自啟動(dòng)nfsserver服務(wù)
i2ksvr:~ # chkconfig --level 35 nfsserver on
i2ksvr:~ # chkconfig --list nfsserver
nfsserver 0:off 1:off 2:off 3:on 4:off 5:on 6:off
3.1.3
客戶端配置,設(shè)定10.137.17.154為NFS客戶端:
推薦客戶端使用mount命令來(lái)掛載,也可以直接編輯/etc/fstab文件的方法。
下面會(huì)介紹這兩種方法:
1)使用mount命令掛載
mount命令的格式如下:
mount[-t vfstype] [-o options] device dir
mount命令參數(shù)非常多,下面就只列些常用的參數(shù),紅色標(biāo)注的為重要部分:
(1)-a:把/etc/fstab中列出的路徑全部掛載。
(2)-t:需要mount的類型,如nfs等。
(3)-r:將mount的路徑定為read only。
(4)-v mount:過程的每一個(gè)操作都有message傳回到屏幕上。
(5)rsize=n:在NFS服務(wù)器讀取文件時(shí)NFS使用的字節(jié)數(shù),默認(rèn)值是1 024個(gè)字節(jié)。
(6)wsize=n:向NFS服務(wù)器寫文件時(shí)NFS使用的字節(jié)數(shù),默認(rèn)值是1 024個(gè)字節(jié)。
(7)timeo=n:從超時(shí)后到第1次重新傳送占用的1/7秒的數(shù)目,默認(rèn)值是7/7秒。
(8)retry=n:在放棄后臺(tái)mount操作之前可以嘗試的次數(shù),默認(rèn)值是7 000次。
(9)soft:使用軟掛載的方式掛載系統(tǒng),若Client的請(qǐng)求得不到回應(yīng),則重新請(qǐng)求并傳
錯(cuò)誤信息。
(10)hard:使用硬掛載的方式掛載系統(tǒng),該值是默認(rèn)值,重復(fù)請(qǐng)求直到NFS服務(wù)器回應(yīng)。
(11)intr:允許NFS中斷文件操作和向調(diào)用它的程序返回值,默認(rèn)不允許文件操作被中斷。
(12)fg:一直在提示符下執(zhí)行重復(fù)掛載,即前臺(tái)繼續(xù)執(zhí)行掛載。
(13)bg:如果第1次掛載文件系統(tǒng)失敗,繼續(xù)在后臺(tái)嘗試執(zhí)行掛載。
(14)tcp:對(duì)文件系統(tǒng)的掛載使用TCP,而不是默認(rèn)的UDP。
(15)-w:將mount的路徑定為read/write,這個(gè)是默認(rèn)的配置參數(shù)。
重點(diǎn)說(shuō)明一下軟掛載和硬掛載方式的不同:
對(duì)硬掛載文件系統(tǒng)來(lái)說(shuō),如果因?yàn)槟撤N原因遠(yuǎn)程系統(tǒng)的響應(yīng)失敗,比如NFS服務(wù)端掛掉等,則NFS客戶端將會(huì)持續(xù)地嘗試建立連接,這樣可能導(dǎo)致執(zhí)行df等命令出現(xiàn)掛死的現(xiàn)象。
而對(duì)軟掛載文件系統(tǒng)來(lái)說(shuō),同樣情況下,在指定的時(shí)間間隔后NFS客戶端將會(huì)放棄嘗試建立連接而發(fā)送一個(gè)錯(cuò)誤消息。
默認(rèn)采用硬掛載文件系統(tǒng),系統(tǒng)硬掛載嘗試失敗時(shí),對(duì)用戶輸入的響應(yīng)也會(huì)停止。正是因?yàn)檫@樣,有的用戶更喜歡采用軟掛載,它會(huì)使系統(tǒng)在嘗試掛載失敗后停止嘗試。
其實(shí),使用hard還是soft主要取決于訪問的信息。例如,要查看NFS服務(wù)器的視頻文件,不會(huì)希望由于一些意外的情況(如網(wǎng)絡(luò)速度變得很慢)而使系統(tǒng)輸出大量的錯(cuò)誤信息。如果此時(shí)使用hard方式,系統(tǒng)就會(huì)等待,直到能夠重新與NFS服務(wù)器建立連接傳輸信息。另外,如果是非關(guān)鍵數(shù)據(jù),也可以使用hard方式,如FTP一些數(shù)據(jù)等,這樣在遠(yuǎn)程機(jī)器暫時(shí)連接不上或關(guān)閉時(shí)就不會(huì)掛起會(huì)話過程。
mount掛載的示例:
mount -t nfs -o rw,soft,timeo=1,retry=1
10.137.21.166:/home/cabtimer/sharedisk/index/share /test
將NFS服務(wù)端的/home/cabtimer/sharedisk/index/share掛載到本地的/test目錄下。
umount命令執(zhí)行卸載的示例:
umount /test
注:如果umount掛載點(diǎn)時(shí),出現(xiàn)長(zhǎng)時(shí)間不返回,掛死的情況,如下解決:
通過lsof | grep /test找出哪個(gè)進(jìn)程在訪問掛載點(diǎn);
確定該掛載目錄不再訪問的情況下,使用kill -9命令清理前面找出的訪問掛載點(diǎn)的進(jìn)程,再重新執(zhí)行umount命令就可以了;
2)直接配置/etc/fstab文件
(1)編輯/etc/fstab文件,加入掛載NFS服務(wù)端的共享的目錄到本地目錄上,如下,加入了最下面的兩行共享內(nèi)容。
rcs_solution:~ # cat /etc/fstab
/dev/sda2 / reiserfs acl,user_xattr 1 1
/dev/sda5 /home reiserfs acl,user_xattr 1 2
/dev/sda6 /opt reiserfs acl,user_xattr 1 2
/dev/sda7 /var reiserfs acl,user_xattr 1 2
/dev/sda1 swap swap defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
usbfs /proc/bus/usb usbfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
shm /dev/shm tmpfs size=16348644K 0 0
10.137.21.166:/home/cabtimer/sharedisk/index/share /test nfs soft,timeo=1 0 0
(2)配置/etc/fstab文件后,直接啟動(dòng)NFS客戶端,即可掛載NFS服務(wù)器共享的目錄。
啟動(dòng)NFS Client:
/etc/init.d/nfs start
(或直接執(zhí)行rcnfs start啟動(dòng))
(3)執(zhí)行df -h查看掛載的信息:
rcs_solution:~ # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 61G 14G 47G 24% /
udev 16G 140K 16G 1% /dev
/dev/sda5 41G 21G 20G 51% /home
/dev/sda6 41G 35G 5.9G 86% /opt
/dev/sda7 11G 878M 9.2G 9% /var
shm 16G 6.3G 9.4G 41% /dev/shm
/dev/sda8 387G 25G 363G 7% /home1
10.137.21.166:/home/cabtimer/sharedisk/index/share
41G 21G 20G 51% /test
4
NFS的常見故障的解決方案
4.1.1
NFS如果出現(xiàn)了問題,可以從以下幾個(gè)方面去考慮:
(1)/etc/exports文件配置是否正確
(2)RPC和NFS服務(wù)是否啟動(dòng)正常
(3)mount命令和/etc/fstab中的參數(shù)是否正確
(4)服務(wù)端的IP地址是否正常,能否ping通。
(5)執(zhí)行rpcinfo命令查看系統(tǒng)的RPC相關(guān)的信息。
在服務(wù)端執(zhí)行命令,可以看到如下的信息:
2ksvr:~ # rpcinfo -p
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100024 1 udp 45347 status
100021 1 udp 45347 nlockmgr
100021 3 udp 45347 nlockmgr
100021 4 udp 45347 nlockmgr
100024 1 tcp 38193 status
100021 1 tcp 38193 nlockmgr
100021 3 tcp 38193 nlockmgr
100021 4 tcp 38193 nlockmgr
100005 1 udp 785 mountd
100005 1 tcp 786 mountd
100005 2 udp 785 mountd
100005 2 tcp 786 mountd
100005 3 udp 785 mountd
100005 3 tcp 786 mountd
在NFS客戶端,至少應(yīng)該有portmapper。
4.1.2
NFS中的一些錯(cuò)誤信息的具體含義:
錯(cuò)誤信息
具體描述
Too many levels of remote in path
試圖掛載一個(gè)存在的文件系統(tǒng)
Permission denied
客戶端沒有權(quán)限去掛載NFS服務(wù)器的共享目錄,也可能是因?yàn)橛脩粼诜?wù)器上不存在
No such file or directory
通常是訪問的目錄不存在
NFS server is not responding
通常是NFS已經(jīng)超過負(fù)載或者NFS已經(jīng)停止工作
Stale file handle
在NFS客戶端關(guān)閉之前客戶端訪問的文件被刪除
解決問題如下:
(1)如果啟動(dòng)NFS服務(wù)器失敗,如下
i2ksvr:~ # /etc/init.d/nfsserver start
Starting kernel based NFS serverCannot register service: RPC: Unable to receive; errno = Connection refused
startproc: exit status of parent of /usr/sbin/rpc.mountd: 1
failed
則說(shuō)明,RPC服務(wù)沒有啟動(dòng)。如果已經(jīng)啟動(dòng),則可能是被防火墻所屏蔽。
解決方案是:執(zhí)行/etc/init.d/portmap start后,再啟動(dòng)nfsserver即可。或者關(guān)閉防火墻。
(2)如果執(zhí)行如下的mount命令失敗,如下
i2ksvr:~# mount -t nfs 10.137.21.166:/home/cabtimer/sharedisk/index/share /test
rpcbind: server localhost not responding, timed out
RPC: failed to contact local rpcbind server (errno 5).
rpcbind: server localhost not responding, timed out
RPC: failed to contact local rpcbind server (errno 5).
解決方案是:在mount命令中加入-o nolock選項(xiàng)就可以了。
(3)當(dāng)在客戶端執(zhí)行mount掛載NFS服務(wù)器共享目錄時(shí),如果錯(cuò)誤信息是“Permission denied”,則表示NFS服務(wù)器不允許客戶機(jī)掛載。
解決方案是:更改服務(wù)端上的/etc/exports文件來(lái)解決問題,并使用exportfs-rv命令重新導(dǎo)出共享目錄。
(4)如果出現(xiàn)的錯(cuò)誤是“Program not registed”,則是NFS服務(wù)可能沒有啟動(dòng)或者運(yùn)行不正常。
解決方案是:重新啟動(dòng)NFS服務(wù)。
(5)掛載共享目錄的時(shí)候,如果客戶端沒有任何反應(yīng),則可能為客戶端沒有啟動(dòng)RPC服務(wù)。
解決方案是:?jiǎn)?dòng)portmap服務(wù),然后再執(zhí)行掛載的操作。
(6)顯示“設(shè)備正忙”無(wú)法卸載。
在使用umount命令卸載共享目錄時(shí),出現(xiàn)“device is busy”等卸載失敗消息。通??赡艿脑蚴怯幸粋€(gè)進(jìn)程仍然在使用這個(gè)目錄。
解決方案是:可以使用lsof命令來(lái)查看是否有進(jìn)程正在使用該共享目錄,然后執(zhí)行kill -9操作,殺掉這些進(jìn)程,最后再執(zhí)行umount操作。
(7)NFS請(qǐng)求掛起
如果客戶端正在執(zhí)行寫操作,而此時(shí)服務(wù)器無(wú)法響應(yīng)或者在網(wǎng)絡(luò)上變得不可訪問,那么在默認(rèn)情況下(使用hard選項(xiàng)進(jìn)行掛載)客戶端進(jìn)程將掛起直到寫操作完成。如果不中止寫操作,進(jìn)程就不能從請(qǐng)求中退出。
解決方案是:這個(gè)需要根據(jù)實(shí)際的應(yīng)用場(chǎng)合來(lái)考慮。一般情況下,為了避免NFS請(qǐng)求掛起,在網(wǎng)絡(luò)狀況不穩(wěn)定情況下可以在掛載目錄時(shí)指定soft選項(xiàng)以允許操作因超時(shí)而退出,或者指定intr選項(xiàng)以允許用戶在命令行上通過按下Ctrl+C組合鍵退出掛起的操作。
(8)NFS掛載在引導(dǎo)時(shí)掛起。
如果在/etc/fstab文件中設(shè)置了自動(dòng)掛載NFS,但在系統(tǒng)引導(dǎo)時(shí)NFS共享目錄暫時(shí)不可用,那么默認(rèn)情況下引導(dǎo)進(jìn)程將進(jìn)入等待狀態(tài),直到NFS目錄變得可用為止。如果所需等待的NFS目錄是系統(tǒng)必須的,那么這種等待可能還可以接受。然而在很多情況下,用戶只想讓系統(tǒng)把掛載請(qǐng)求放在后臺(tái)并繼續(xù)引導(dǎo)系統(tǒng)??梢园裝g選項(xiàng)添加到/etc/fstab文件中,這樣在首次掛載請(qǐng)求超時(shí)之后,掛載請(qǐng)求會(huì)轉(zhuǎn)入后臺(tái),系統(tǒng)繼續(xù)引導(dǎo)。當(dāng)需要在前臺(tái)掛載NFS共享目錄時(shí)可以將fg選項(xiàng)添加到/etc/fstab文件的掛載選項(xiàng)中。
5
NFS客戶端參數(shù)的優(yōu)化
在一些業(yè)務(wù)當(dāng)中,出現(xiàn)過因?yàn)镹FS服務(wù)器的IP地址down掉,或者異常等情況,導(dǎo)致了NFS客戶端訪問進(jìn)程的長(zhǎng)時(shí)間處于掛死的狀態(tài),沒有響應(yīng)。
查看了NFS的官方網(wǎng)站,里面介紹了一些優(yōu)化的參數(shù),比如說(shuō),客戶端需要加入
參數(shù):soft,timeo=1,retry=1,tcp(默認(rèn)就是采用tcp協(xié)議),其實(shí)就是采用軟連接的方式去掛載NFS服務(wù)器共享的目錄,這樣NFS客戶端就不會(huì)出現(xiàn)掛死的現(xiàn)象。
舉例:
mount -t nfs -o rw,soft,timeo=1,retry=1
10.137.21.166: /home/cabtimer/sharedisk/index/share /test
6
附錄:設(shè)置系統(tǒng)防火墻,開放portmap端口號(hào)
打開portmap的端口號(hào)
iptables -A INPUT -p TCP --dport 111 -j ACCEPT
iptables -A INPUT -P UDP --dport 111 -j ACCEPT
iptables-save > /etc/sysconfig/iptables
在文件/etc/hosts.allow文件中加入如下內(nèi)容,允許這些服務(wù)訪問:
portmap:ALL
nfsserver:ALL
nfs:ALL