非常全面的LINUX NFS文檔
超全的NFS文檔(FOR LINUX)
上海 天俊
歡迎大家和我交流網(wǎng)絡(luò)方面的技術(shù)問(wèn)題
msn:bcst@citiz.net qq:11300242
如果要轉(zhuǎn)載的話請(qǐng)保留以上信息,謝謝配合
一、NFS簡(jiǎn)介
NFS-Network FileSystem的縮寫(xiě),NFS是由Sun開(kāi)發(fā)并發(fā)展起來(lái)的一項(xiàng)用于在不同機(jī)器,不同操作系統(tǒng)之間通過(guò)網(wǎng)絡(luò)互相分享各自的文件。NFS server也可以看作是一個(gè)FILE SERVER,它可以讓你的PC通過(guò)網(wǎng)絡(luò)將遠(yuǎn)端得NFS SERVER共享出來(lái)的檔案MOUNT到自己的系統(tǒng)中,在CLIENT看來(lái)使用NFS的遠(yuǎn)端文件就象是在使用本地文件一樣。
NFS協(xié)議從誕生到現(xiàn)在為止,已經(jīng)有多個(gè)版本,如NFS V2(rfc1094),NFS V3(rfc1813)(最新的版本是V4(rfc3010)。
二、各NFS協(xié)議版本的主要區(qū)別
V3相對(duì)V2的主要區(qū)別:
1、文件尺寸
V2最大只支持32BIT的文件大小(4G),而NFS V3新增加了支持64BIT文件大小的技術(shù)。
2、文件傳輸尺寸
V3沒(méi)有限定傳輸尺寸,V2最多只能設(shè)定為8k,可以使用-rsize and -wsize 來(lái)進(jìn)行設(shè)定。
3、完整的信息返回
V3增加和完善了許多錯(cuò)誤和成功信息的返回,對(duì)于服務(wù)器的設(shè)置和管理能帶來(lái)很大好處。
4、增加了對(duì)TCP傳輸協(xié)議的支持
V2只提供了對(duì)UDP協(xié)議的支持,在一些高要求的網(wǎng)絡(luò)環(huán)境中有很大限制,V3增加了對(duì)TCP協(xié)議的支持
*5、異步寫(xiě)入特性
6、改進(jìn)了SERVER的mount性能
7、有更好的I/O WRITES 性能。
9、更強(qiáng)網(wǎng)絡(luò)運(yùn)行效能,使得網(wǎng)絡(luò)運(yùn)作更為有效。
10、更強(qiáng)的災(zāi)難恢復(fù)功能。
異步寫(xiě)入特性(v3新增加)介紹:
NFS V3 能否使用異步寫(xiě)入,這是可選擇的一種特性。NFS V3客戶端發(fā)發(fā)送一個(gè)異步寫(xiě)入請(qǐng)求到服務(wù)器,在給客戶端答復(fù)之前服務(wù)器并不是必須要將數(shù)據(jù)寫(xiě)入到存儲(chǔ)器中(穩(wěn)定的)。服務(wù)器能確定何時(shí)去寫(xiě)入數(shù)據(jù)或者將多個(gè)寫(xiě)入請(qǐng)求聚合到一起并加以處理,然后寫(xiě)入??蛻舳四鼙3忠粋€(gè)數(shù)據(jù)的copy以防萬(wàn)一服務(wù)器不能完整的將數(shù)據(jù)寫(xiě)入。當(dāng)客戶端希望釋放這個(gè)copy的時(shí)候,它會(huì)向服務(wù)器通過(guò)這個(gè)操作過(guò)程,以確保每個(gè)操作步驟的完整。異步寫(xiě)入能夠使服務(wù)器去確定最好的同步數(shù)據(jù)的策略。使數(shù)據(jù)能盡可能的同步的提交何到達(dá)。與V2比較來(lái)看,這樣的機(jī)制能更好的實(shí)現(xiàn)數(shù)據(jù)緩沖和更多的平行(平衡)。而NFS V2的SERVER在將數(shù)據(jù)寫(xiě)入存儲(chǔ)器之前不能再相應(yīng)任何的寫(xiě)入請(qǐng)求。
V4相對(duì)V3的改進(jìn):
1:改進(jìn)了INTERNET上的存取和執(zhí)行效能
2:在協(xié)議中增強(qiáng)了安全方面的特性
3:增強(qiáng)的跨平臺(tái)特性
三、CLIENT和SERVER的具體操作和設(shè)置
在講NFS SERVER的運(yùn)作之前先來(lái)看一些與NFS SERVER有關(guān)的東西:
RPC(Remote Procedure Call)
NFS本身是沒(méi)有提供信息傳輸?shù)膮f(xié)議和功能的,但NFS卻能讓我們通過(guò)網(wǎng)絡(luò)進(jìn)行資料的分享,這是因?yàn)镹FS使用了一些其它的傳輸協(xié)議。而這些傳輸協(xié)議勇士用到這個(gè)RPC功能的。可以說(shuō)NFS本身就是使用RPC的一個(gè)程序?;蛘哒f(shuō)NFS也是一個(gè)RPC SERVER.所以只要用到NFS的地方都要啟動(dòng)RPC服務(wù),不論是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過(guò)RPC來(lái)實(shí)現(xiàn)PROGRAM PORT的對(duì)應(yīng)??梢赃@么理解RPC和NFS的關(guān)系:NFS是一個(gè)文件系統(tǒng),而RPC是負(fù)責(zé)負(fù)責(zé)信息的傳輸。
NFS需要啟動(dòng)的DAEMONS
pc.nfsd:主要復(fù)雜登陸權(quán)限檢測(cè)等。
rpc.mountd:負(fù)責(zé)NFS的檔案系統(tǒng),當(dāng)CLIENT端通過(guò)rpc.nfsd登陸SERVER后,對(duì)clinet存取server的文件進(jìn)行一系列的管理
NFS SERVER在REDHAT LINUX平臺(tái)下一共需要兩個(gè)套件:nfs-utils和PORTMAP
nfs-utils:提供rpc.nfsd 及 rpc.mountd這兩個(gè)NFS DAEMONS的套件
portmap:NFS其實(shí)可以被看作是一個(gè)RPC SERVER PROGRAM,而要啟動(dòng)一個(gè)RPC SERVER PROGRAM,都要做好PORT的對(duì)應(yīng)工作,而且這樣的任務(wù)就是由PORTMAP來(lái)完成的。通俗的說(shuō)PortMap就是用來(lái)做PORT的mapping的。
一:服務(wù)器端的設(shè)定(以LINUX為例)
服務(wù)器端的設(shè)定都是在/etc/exports這個(gè)文件中進(jìn)行設(shè)定的,設(shè)定格式如下:
欲分享出去的目錄 主機(jī)名稱1或者IP1(參數(shù)1,參數(shù)2) 主機(jī)名稱2或者IP2(參數(shù)3,參數(shù)4)
上面這個(gè)格式表示,同一個(gè)目錄分享給兩個(gè)不同的主機(jī),但提供給這兩臺(tái)主機(jī)的權(quán)限和參數(shù)是不同的,所以分別設(shè)定兩個(gè)主機(jī)得到的權(quán)限。
可以設(shè)定的參數(shù)主要有以下這些:
rw:可讀寫(xiě)的權(quán)限;
ro:只讀的權(quán)限;
no_root_squash:登入到NFS主機(jī)的用戶如果是ROOT用戶,他就擁有ROOT的權(quán)限,此參數(shù)很不安全,建議不要使用。
root_squash:在登入 NFS 主機(jī)使用分享之目錄的使用者如果是 root 時(shí),那麼這個(gè)使用者的權(quán)限將被壓縮成為匿名使用者,通常他的 UID 與 GID 都會(huì)變成 nobody 那個(gè)身份;
all_squash:不管登陸NFS主機(jī)的用戶是什么都會(huì)被重新設(shè)定為nobody。
anonuid:將登入NFS主機(jī)的用戶都設(shè)定成指定的user id,此ID必須存在于/etc/passwd中。
anongid:同 anonuid ,但是變成 group ID 就是了!
sync:資料同步寫(xiě)入存儲(chǔ)器中。
async:資料會(huì)先暫時(shí)存放在內(nèi)存中,不會(huì)直接寫(xiě)入硬盤(pán)。
insecure 允許從這臺(tái)機(jī)器過(guò)來(lái)的非授權(quán)訪問(wèn)。
例如可以編輯/etc/exports為:
/tmp *(rw,no_root_squash)
/home/public 192.168.0.*(rw) *(ro)
/home/test 192.168.0.100(rw)
/home/linux *.the9.com(rw,all_squash,anonuid=40,anongid=40)
設(shè)定好后可以使用以下命令啟動(dòng)NFS:
/etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是默認(rèn)啟動(dòng)的)
/etc/rc.d/init.d/nfs start
exportfs命令:
如果我們?cè)趩?dòng)了NFS之后又修改了/etc/exports,是不是還要重新啟動(dòng)nfs呢?這個(gè)時(shí)候我們就可以用exportfs命令來(lái)使改動(dòng)立刻生效,該命令格式如下:
exportfs [-aruv]
-a :全部mount或者unmount /etc/exports中的內(nèi)容
-r :重新mount /etc/exports中分享出來(lái)的目錄
-u :umount 目錄
-v :在 export 的時(shí)候,將詳細(xì)的信息輸出到屏幕上。
具體例子:
[root @test root]# exportfs -rv ==全部重新 export 一次!
exporting 192.168.0.100:/home/test
exporting 192.168.0.*:/home/public
exporting *.the9.com:/home/linux
exporting *:/home/public
exporting *:/tmp
reexporting 192.168.0.100:/home/test to kernel
exportfs -au ==全部都卸載了。
客戶段的操作:
1、showmout命令對(duì)于NFS的操作和查錯(cuò)有很大的幫助,所以我們先來(lái)看一下showmount的用法
showmout
-a :這個(gè)參數(shù)是一般在NFS SERVER上使用,是用來(lái)顯示已經(jīng)mount上本機(jī)nfs目錄的cline機(jī)器。
-e :顯示指定的NFS SERVER上export出來(lái)的目錄。
例如:
showmount -e 192.168.0.30
Export list for localhost:
/tmp *
/home/linux *.linux.org
/home/public (everyone)
/home/test 192.168.0.100
2、mount nfs目錄的方法:
mount -t nfs hostname(orIP):/directory /mount/point
具體例子:
Linux: mount -t nfs 192.168.0.1:/tmp /mnt/nfs
Solaris:mount -F nfs 192.168.0.1:/tmp /mnt/nfs
BSD: mount 192.168.0.1:/tmp /mnt/nfs
3、mount nfs的其它可選參數(shù):
HARD mount和SOFT MOUNT:
HARD: NFS CLIENT會(huì)不斷的嘗試與SERVER的連接(在后臺(tái),不會(huì)給出任何提示信息,在LINUX下有的版本仍然會(huì)給出一些提示),直到MOUNT上。
SOFT:會(huì)在前臺(tái)嘗試與SERVER的連接,是默認(rèn)的連接方式。當(dāng)收到錯(cuò)誤信息后終止mount嘗試,并給出相關(guān)信息。
例如:mount -F nfs -o hard 192.168.0.10:/nfs /nfs
對(duì)于到底是使用hard還是soft的問(wèn)題,這主要取決于你訪問(wèn)什么信息有關(guān)。例如你是想通過(guò)NFS來(lái)運(yùn)行X PROGRAM的話,你絕對(duì)不會(huì)希望由于一些意外的情況(如網(wǎng)絡(luò)速度一下子變的很慢,插拔了一下網(wǎng)卡插頭等)而使系統(tǒng)輸出大量的錯(cuò)誤信息,如果此時(shí)你用的是HARD方式的話,系統(tǒng)就會(huì)等待,直到能夠重新與NFS SERVER建立連接傳輸信息。另外如果是非關(guān)鍵數(shù)據(jù)的話也可以使用SOFT方式,如FTP數(shù)據(jù)等,這樣在遠(yuǎn)程機(jī)器暫時(shí)連接不上或關(guān)閉時(shí)就不會(huì)掛起你的會(huì)話過(guò)程。
rsize和wsize:
文件傳輸尺寸設(shè)定:V3沒(méi)有限定傳輸尺寸,V2最多只能設(shè)定為8k,可以使用-rsize and -wsize 來(lái)進(jìn)行設(shè)定。這兩個(gè)參數(shù)的設(shè)定對(duì)于NFS的執(zhí)行效能有較大的影響
bg:在執(zhí)行mount時(shí)如果無(wú)法順利mount上時(shí),系統(tǒng)會(huì)將mount的操作轉(zhuǎn)移到后臺(tái)并繼續(xù)嘗試mount,直到mount成功為止。(通常在設(shè)定/etc/fstab文件時(shí)都應(yīng)該使用bg,以避免可能的mount不上而影響啟動(dòng)速度)
fg:和bg正好相反,是默認(rèn)的參數(shù)
nfsvers=n:設(shè)定要使用的NFS版本,默認(rèn)是使用2,這個(gè)選項(xiàng)的設(shè)定還要取決于server端是否支持NFS VER 3
mountport:設(shè)定mount的端口
port:根據(jù)server端export出的端口設(shè)定,例如如果server使用5555端口輸出NFS,那客戶端就需要使用這個(gè)參數(shù)進(jìn)行同樣的設(shè)定
timeo=n:設(shè)置超時(shí)時(shí)間,當(dāng)數(shù)據(jù)傳輸遇到問(wèn)題時(shí),會(huì)根據(jù)這個(gè)參數(shù)嘗試進(jìn)行重新傳輸。默認(rèn)值是7/10妙(0.7秒)。如果網(wǎng)絡(luò)連接不是很穩(wěn)定的話就要加大這個(gè)數(shù)值,并且推薦使用HARD MOUNT方式,同時(shí)最好也加上INTR參數(shù),這樣你就可以終止任何掛起的文件訪問(wèn)。
intr 允許通知中斷一個(gè)NFS調(diào)用。當(dāng)服務(wù)器沒(méi)有應(yīng)答需要放棄的時(shí)候有用處。
udp:使用udp作為nfs的傳輸協(xié)議(NFS V2只支持UDP)
tcp:使用tcp作為nfs的傳輸協(xié)議
namlen=n:設(shè)定遠(yuǎn)程服務(wù)器所允許的最長(zhǎng)文件名。這個(gè)值的默認(rèn)是255
acregmin=n:設(shè)定最小的在文件更新之前cache時(shí)間,默認(rèn)是3
acregmax=n:設(shè)定最大的在文件更新之前cache時(shí)間,默認(rèn)是60
acdirmin=n:設(shè)定最小的在目錄更新之前cache時(shí)間,默認(rèn)是30
acdirmax=n:設(shè)定最大的在目錄更新之前cache時(shí)間,默認(rèn)是60
actimeo=n:將acregmin、acregmax、acdirmin、acdirmax設(shè)定為同一個(gè)數(shù)值,默認(rèn)是沒(méi)有啟用。
retry=n:設(shè)定當(dāng)網(wǎng)絡(luò)傳輸出現(xiàn)故障的時(shí)候,嘗試重新連接多少時(shí)間后不再嘗試。默認(rèn)的數(shù)值是10000 minutes
noac:關(guān)閉cache機(jī)制。
同時(shí)使用多個(gè)參數(shù)的方法:mount -t nfs -o timeo=3,udp,hard 192.168.0.30:/tmp /nfs
請(qǐng)注意,NFS客戶機(jī)和服務(wù)器的選項(xiàng)并不一定完全相同,而且有的時(shí)候會(huì)有沖突。比如說(shuō)服務(wù)器以只讀的方式導(dǎo)出,客戶端卻以可寫(xiě)的方式mount,雖然可以成功mount上,但嘗試寫(xiě)入的時(shí)候就會(huì)發(fā)生錯(cuò)誤。一般服務(wù)器和客戶端配置沖突的時(shí)候,會(huì)以服務(wù)器的配置為準(zhǔn)。
4、/etc/fstab的設(shè)定方法
/etc/fstab的格式如下:
fs_spec fs_file fs_type fs_options fs_dump fs_pass
fs_spec:該字段定義希望加載的文件系統(tǒng)所在的設(shè)備或遠(yuǎn)程文件系統(tǒng),對(duì)于nfs這個(gè)參數(shù)一般設(shè)置為這樣:192.168.0.1:/NFS
fs_file:本地的掛載點(diǎn)
fs_type:對(duì)于NFS來(lái)說(shuō)這個(gè)字段只要設(shè)置成nfs就可以了
fs_options:掛載的參數(shù),可以使用的參數(shù)可以參考上面的mount參數(shù)。
fs_dump - 該選項(xiàng)被dump命令使用來(lái)檢查一個(gè)文件系統(tǒng)應(yīng)該以多快頻率進(jìn)行轉(zhuǎn)儲(chǔ),若不需要轉(zhuǎn)儲(chǔ)就設(shè)置該字段為0
fs_pass - 該字段被fsck命令用來(lái)決定在啟動(dòng)時(shí)需要被掃描的文件系統(tǒng)的順序,根文件系統(tǒng)/對(duì)應(yīng)該字段的值應(yīng)該為1,其他文件系統(tǒng)應(yīng)該為2。若該文件系統(tǒng)無(wú)需在啟動(dòng)時(shí)掃描則設(shè)置該字段為0 。
5、與NFS有關(guān)的一些命令介紹
nfsstat:
查看NFS的運(yùn)行狀態(tài),對(duì)于調(diào)整NFS的運(yùn)行有很大幫助
rpcinfo:
查看rpc執(zhí)行信息,可以用于檢測(cè)rpc運(yùn)行情況的工具。
四、NFS調(diào)優(yōu)
調(diào)優(yōu)的步驟:
1、測(cè)量當(dāng)前網(wǎng)絡(luò)、服務(wù)器和每個(gè)客戶端的執(zhí)行效率。
2、分析收集來(lái)的數(shù)據(jù)并畫(huà)出圖表。查找出特殊情況,例如很高的磁盤(pán)和CPU占用、已經(jīng)高的磁盤(pán)使用時(shí)間
3、調(diào)整服務(wù)器
4、重復(fù)第一到第三步直到達(dá)到你渴望的性能
與NFS性能有關(guān)的問(wèn)題有很多,通??梢砸紤]的有以下這些選擇:
WSIZE,RSIZE參數(shù)來(lái)優(yōu)化NFS的執(zhí)行效能
WSIZE、RSIZE對(duì)于NFS的效能有很大的影響。
wsize和rsize設(shè)定了SERVER和CLIENT之間往來(lái)數(shù)據(jù)塊的大小,這兩個(gè)參數(shù)的合理設(shè)定與很多方面有關(guān),不僅是軟件方面也有硬件方面的因素會(huì)影響這兩個(gè)參數(shù)的設(shè)定(例如LINUX KERNEL、網(wǎng)卡,交換機(jī)等等)。
下面這個(gè)命令可以測(cè)試NFS的執(zhí)行效能,讀和寫(xiě)的效能可以分別測(cè)試,分別找到合適的參數(shù)。對(duì)于要測(cè)試分散的大量的數(shù)據(jù)的讀寫(xiě)可以通過(guò)編寫(xiě)腳本來(lái)進(jìn)行測(cè)試。在每次測(cè)試的時(shí)候最好能重復(fù)的執(zhí)行一次MOUNT和unmount。
time dd if=/dev/zero of=/mnt/home/testfile bs=16k count=16384
用于測(cè)試的WSIZE,RSIZE最好是1024的倍數(shù),對(duì)于NFS V2來(lái)說(shuō)8192是RSIZE和WSIZE的最大數(shù)值,如果使用的是NFS V3則可以嘗試的最大數(shù)值是32768。
如果設(shè)置的值比較大的時(shí)候,應(yīng)該最好在CLIENT上進(jìn)入mount上的目錄中,進(jìn)行一些常規(guī)操作(LS,VI等等),看看有沒(méi)有錯(cuò)誤信息出現(xiàn)。有可能出現(xiàn)的典型問(wèn)題有LS的時(shí)候文件不能完整的列出或者是出現(xiàn)錯(cuò)誤信息,不同的操作系統(tǒng)有不同的最佳數(shù)值,所以對(duì)于不同的操作系統(tǒng)都要進(jìn)行測(cè)試。
設(shè)定最佳的NFSD的COPY數(shù)目。
linux中的NFSD的COPY數(shù)目是在/etc/rc.d/init.d/nfs這個(gè)啟動(dòng)文件中設(shè)置的,默認(rèn)是8個(gè)NFSD,對(duì)于這個(gè)參數(shù)的設(shè)置一般是要根據(jù)可能的CLIENT數(shù)目來(lái)進(jìn)行設(shè)定的,和WSIZE、RSIZE一樣也是要通過(guò)測(cè)試來(lái)找到最近的數(shù)值。
UDP and TCP
可以手動(dòng)進(jìn)行設(shè)置,也可以自動(dòng)進(jìn)行選擇。
mount -t nfs -o sync,tcp,noatime,rsize=1024,wsize=1024 EXPORT_MACHINE:/EXPORTED_DIR /DIR
UDP有著傳輸速度快,非連接傳輸?shù)谋憬萏匦裕荱DP在傳輸上沒(méi)有TCP來(lái)的穩(wěn)定,當(dāng)網(wǎng)絡(luò)不穩(wěn)定或者黑客入侵的時(shí)候很容易使NFS的 Performance 大幅降低甚至使網(wǎng)絡(luò)癱瘓。所以對(duì)于不同情況的網(wǎng)絡(luò)要有針對(duì)的選擇傳輸協(xié)議。nfs over tcp比較穩(wěn)定,nfs over udp速度較快。在機(jī)器較少網(wǎng)絡(luò)狀況較好的情況下使用UDP協(xié)議能帶來(lái)較好的性能,當(dāng)機(jī)器較多,網(wǎng)絡(luò)情況復(fù)雜時(shí)推薦使用TCP協(xié)議(V2只支持UDP協(xié)議)。在局域網(wǎng)中使用UDP協(xié)議較好,因?yàn)榫钟蚓W(wǎng)有比較穩(wěn)定的網(wǎng)絡(luò)保證,使用UDP可以帶來(lái)更好的性能,在廣域網(wǎng)中推薦使用TCP協(xié)議,TCP協(xié)議能讓NFS在復(fù)雜的網(wǎng)絡(luò)環(huán)境中保持最好的傳輸穩(wěn)定性??梢詤⒖歼@篇文章:http://www.hp.com.tw/ssn/unix/0212/unix021204.asp
版本的選擇
V3作為默認(rèn)的選擇(RED HAT 8默認(rèn)使用V2,SOLARIS 8以上默認(rèn)使用V3),可以通過(guò)vers= mount option來(lái)進(jìn)行選擇。
LINUX通過(guò)mount option的nfsvers=n進(jìn)行選擇。
五、NFS故障解決
1、NFSD沒(méi)有啟動(dòng)起來(lái)
首先要確認(rèn) NFS 輸出列表存在,否則 nfsd 不會(huì)啟動(dòng)。可用 exportfs 命令來(lái)檢查,如果 exportfs 命令沒(méi)有結(jié)果返回或返回不正確,則需要檢查 /etc/exports 文件。
2、mountd 進(jìn)程沒(méi)有啟動(dòng)
mountd 進(jìn)程是一個(gè)遠(yuǎn)程過(guò)程調(diào)用 (RPC) ,其作用是對(duì)客戶端要求安裝(mount)文件系統(tǒng)的申請(qǐng)作出響應(yīng)。mountd進(jìn)程通過(guò)查找 /etc/xtab文件來(lái)獲知哪些文件系統(tǒng)可以被遠(yuǎn)程客戶端使用。另外,通過(guò)mountd進(jìn)程,用戶可以知道目前有哪些文件系統(tǒng)已被遠(yuǎn)程文件系統(tǒng)裝配,并得知遠(yuǎn)程客戶端的列表。查看mountd是否正常啟動(dòng)起來(lái)可以使用命令rpcinfo進(jìn)行查看,在正常情況下在輸出的列表中應(yīng)該象這樣的行:
100005 1 udp 1039 mountd
100005 1 tcp 1113 mountd
100005 2 udp 1039 mountd
100005 2 tcp 1113 mountd
100005 3 udp 1039 mountd
100005 3 tcp 1113 mountd
如果沒(méi)有起來(lái)的話可以檢查是否安裝了PORTMAP組件。
rpm -qa|grep portmap
3、fs type nfs no supported by kernel
kernel不支持nfs文件系統(tǒng),重新編譯一下KERNEL就可以解決。
4、can't contact portmapper: RPC: Remote system error - Connection refused
出現(xiàn)這個(gè)錯(cuò)誤信息是由于SEVER端的PORTMAP沒(méi)有啟動(dòng)。
5、mount clntudp_create: RPC: Program not registered
NFS沒(méi)有啟動(dòng)起來(lái),可以用showmout -e host命令來(lái)檢查NFS SERVER是否正常啟動(dòng)起來(lái)。
6、mount: localhost:/home/test failed, reason given by server: Permission denied
這個(gè)提示是當(dāng)client要mount nfs server時(shí)可能出現(xiàn)的提示,意思是說(shuō)本機(jī)沒(méi)有權(quán)限去mount nfs server上的目錄。解決方法當(dāng)然是去修改NFS SERVER咯。
7、被防火墻阻擋
這個(gè)原因很多人都忽視了,在有嚴(yán)格要求的網(wǎng)絡(luò)環(huán)境中,我們一般會(huì)關(guān)閉linux上的所有端口,當(dāng)需要使用哪個(gè)端口的時(shí)候才會(huì)去打開(kāi)。而NFS默認(rèn)是使用111端口,所以我們先要檢測(cè)是否打開(kāi)了這個(gè)端口,另外也要檢查T(mén)CP_Wrappers的設(shè)定。
六、NFS安全
NFS的不安全性主要體現(xiàn)于以下4個(gè)方面:
1、新手對(duì)NFS的訪問(wèn)控制機(jī)制難于做到得心應(yīng)手,控制目標(biāo)的精確性難以實(shí)現(xiàn)
2、NFS沒(méi)有真正的用戶驗(yàn)證機(jī)制,而只有對(duì)RPC/Mount請(qǐng)求的過(guò)程驗(yàn)證機(jī)制
3、較早的NFS可以使未授權(quán)用戶獲得有效的文件句柄
4、在RPC遠(yuǎn)程調(diào)用中,一個(gè)SUID的程序就具有超級(jí)用戶權(quán)限.
加強(qiáng)NFS安全的方法:
1、合理的設(shè)定/etc/exports中共享出去的目錄,最好能使用anonuid,anongid以使MOUNT到NFS SERVER的CLIENT僅僅有最小的權(quán)限,最好不要使用root_squash。
2、使用IPTABLE防火墻限制能夠連接到NFS SERVER的機(jī)器范圍
iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p TCP -s 140.0.0.0/8 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 140.0.0.0/8 --dport 111 -j ACCEPT
3、為了防止可能的Dos攻擊,需要合理設(shè)定NFSD 的COPY數(shù)目。
4、修改/etc/hosts.allow和/etc/hosts.deny達(dá)到限制CLIENT的目的
/etc/hosts.allow
portmap: 192.168.0.0/255.255.255.0 : allow
portmap: 140.116.44.125 : allow
/etc/hosts.deny
portmap: ALL : deny
5、改變默認(rèn)的NFS 端口
NFS默認(rèn)使用的是111端口,但同時(shí)你也可以使用port參數(shù)來(lái)改變這個(gè)端口,這樣就可以在一定程度上增強(qiáng)安全性。
6、使用Kerberos V5作為登陸驗(yàn)證系統(tǒng)
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論