![第29章 網(wǎng)絡(luò)文件系統(tǒng)NFS應(yīng)用_第1頁](http://file4.renrendoc.com/view/1fbf42e417a216db1c19fdeb719e6076/1fbf42e417a216db1c19fdeb719e60761.gif)
![第29章 網(wǎng)絡(luò)文件系統(tǒng)NFS應(yīng)用_第2頁](http://file4.renrendoc.com/view/1fbf42e417a216db1c19fdeb719e6076/1fbf42e417a216db1c19fdeb719e60762.gif)
![第29章 網(wǎng)絡(luò)文件系統(tǒng)NFS應(yīng)用_第3頁](http://file4.renrendoc.com/view/1fbf42e417a216db1c19fdeb719e6076/1fbf42e417a216db1c19fdeb719e60763.gif)
![第29章 網(wǎng)絡(luò)文件系統(tǒng)NFS應(yīng)用_第4頁](http://file4.renrendoc.com/view/1fbf42e417a216db1c19fdeb719e6076/1fbf42e417a216db1c19fdeb719e60764.gif)
![第29章 網(wǎng)絡(luò)文件系統(tǒng)NFS應(yīng)用_第5頁](http://file4.renrendoc.com/view/1fbf42e417a216db1c19fdeb719e6076/1fbf42e417a216db1c19fdeb719e60765.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第29章網(wǎng)絡(luò)文件系統(tǒng)NFS29.1NFS基本原理29.2配置NFS服務(wù)器29.3配置NFS客戶29.4NFS的性能、安全和故障排除習(xí)題
29.1NFS基本原理29.1.1什么是NFS(NetworkFileSystem)
在Windows主機(jī)之間可以通過共享文件夾來實(shí)現(xiàn)存儲(chǔ)遠(yuǎn)程主機(jī)上的文件,而在Linux系統(tǒng)間通過網(wǎng)絡(luò)文件系統(tǒng)(NFS)可以實(shí)現(xiàn)類似的功能。然而NFS和Windows的共享還是有差別的,它和Windows2000Server的分布式文件系統(tǒng)更為類似。我們先來看一個(gè)例子:Linux主機(jī)A有一個(gè)目錄/test,我們可以先把它導(dǎo)出(類似把它共享出來),然后我們在Linux主機(jī)B上把A:/test安裝(掛接)到安裝點(diǎn)/mnt/nfs下,這個(gè)掛接和掛接本地磁盤一樣。
這樣在主機(jī)B上的用戶就可以使用/mnt/nfs下的文件,而實(shí)際上用戶使用的是主機(jī)A上的目錄/test。也就是說,用戶可以以訪問本地文件的方式訪問遠(yuǎn)程主機(jī)上的文件。
NFS由SUN公司開發(fā),它最終被IETF所接受,納入RFC成為一種文件服務(wù)標(biāo)準(zhǔn),是分布式計(jì)算機(jī)系統(tǒng)的一個(gè)組成部分。網(wǎng)絡(luò)文件系統(tǒng)有以下優(yōu)點(diǎn):(1)被所有用戶訪問的數(shù)據(jù)可以存放在一臺(tái)中央的主機(jī)上,其他不同主機(jī)上的用戶可以通過NFS訪問同一中央主機(jī)上的數(shù)據(jù);
(2)客戶訪問遠(yuǎn)程主機(jī)上的文件是透明的,和訪問本地主機(jī)上的文件是一樣的;
(3)遠(yuǎn)程主機(jī)上文件的物理位置發(fā)生變化(如從一臺(tái)主機(jī)移動(dòng)到另一主機(jī)上)也不會(huì)影響客戶訪問方式的變化。
29.1.2NFS的工作原理
NFS是基于客戶/服務(wù)器模式的。NFS服務(wù)器是輸出一組文件的計(jì)算機(jī),而客戶是訪問文件的計(jì)算機(jī)。客戶和服務(wù)器通過遠(yuǎn)程過程調(diào)用(RPC,RemoteProcedureCall)通信,當(dāng)客戶主機(jī)上的應(yīng)用程序訪問遠(yuǎn)程文件時(shí),客戶主機(jī)內(nèi)核向遠(yuǎn)程服務(wù)器發(fā)送一個(gè)請求,客戶進(jìn)程被阻塞,等待服務(wù)器應(yīng)答,而服務(wù)器一直處于等待狀態(tài),如果接收到客戶請求,就處理請求并將結(jié)果返回客戶機(jī)。NFS服務(wù)器上的目錄如果可被遠(yuǎn)程用戶訪問,就稱為“導(dǎo)出”(export);客戶主機(jī)訪問服務(wù)器導(dǎo)出目錄的過程稱為“安裝”(mount),有時(shí)也稱“掛接”或“導(dǎo)入”。NFS由許多組件共同協(xié)作完成,如圖8-1所示。圖8-1NFS組件XDR(外部數(shù)據(jù)表示):在異構(gòu)機(jī)器組成的網(wǎng)絡(luò)上交換數(shù)據(jù)。
RPC協(xié)議:負(fù)責(zé)定義客戶機(jī)和服務(wù)器之間的信息格式,NFS請求是以RPC包的形式發(fā)送的。
locked:RPC鎖監(jiān)控程序,實(shí)現(xiàn)NFS鎖管理器(NLM,NFSLockManager)協(xié)議,NLM協(xié)議支持多個(gè)客戶通過NFS一致性地鎖定文件。rpciod:NFSI/O監(jiān)控程序。knfsd:是NFS系統(tǒng)的核心,監(jiān)聽遠(yuǎn)程主機(jī)的RPC請求、根據(jù)NFS協(xié)議進(jìn)行解釋,它用RPC將響應(yīng)返回客戶機(jī),并與NFS服務(wù)器上運(yùn)行的其他組件通信如rpciod、rpc.locked和rpc.statd。statd:NFS狀態(tài)監(jiān)控程序,利用網(wǎng)絡(luò)狀態(tài)監(jiān)視協(xié)議(NSM)維護(hù)NFS鎖的狀態(tài)。portmap:將RPC程序號與運(yùn)行服務(wù)的實(shí)際端口相對應(yīng)。mountd:處理客戶機(jī)的mount請求。rquotad:提供NFS系統(tǒng)中用戶的配額信息。由于NFS有明確的服務(wù)器和客戶角色之分,因此NFS的配置包括兩個(gè)部分:NFS服務(wù)器的配置和NFS客戶機(jī)的配置。29.2配置NFS服務(wù)器NFS服務(wù)器的配置步驟如下:
(1)安裝NFS軟件包。
(2)在/etc/exports文件中配置NFS服務(wù)器上要導(dǎo)出的文件系統(tǒng)或目錄。
(3)啟動(dòng)NFS服務(wù)。
(4)導(dǎo)出/etc/exports中配置的文件系統(tǒng)或目錄。29.2.1安裝NFS
要使用NFS服務(wù)器或安裝NFS服務(wù)軟件包,可以用紅旗3.0版的CD-ROM中的目錄/Redflag/RPMS下的軟件包“nfs-utils-0.3.1-8.i386.rpm”。安裝之前請用以下命令檢查該軟件包是否已經(jīng)安裝:
[root@redflag/root]#rpm–qa|grepnfs-utilsnfs-utils-0.3.1-8
以上命令表明軟件包已經(jīng)安裝,如果沒有安裝則用以下命令安裝軟件包(當(dāng)然要先把CD-ROMmount上)。[root@redflag/root]#mount/dev/cdrom[root@redflag/root]#cd/mnt/cdrom/RedFlag/RPMS[root@redflag/root]#rpm-ivhnfs-utils-0.3.1-8.i386.rpm29.2.2配置導(dǎo)出文件:/etc/exports/etc/exports文件是用來告訴Linux系統(tǒng)哪些文件系統(tǒng)或目錄將為NFS客戶導(dǎo)出,這個(gè)文件是一個(gè)文本文件,通常由管理員編輯。文件中以“#”號開頭的行被忽略,長行可以用“\”分解為多行。語法如下:
dir_namehost1(opt1,opt2,……)host2(opt1,opt2,……)\host3(opt2,……)
【實(shí)例29.1】/home(ro)/test*(rw)
在/etc/exports文件中的每個(gè)項(xiàng)目以目錄名開始,目錄名dir_name就是要導(dǎo)出給NFS客戶使用的目錄,目錄可以是某一文件系統(tǒng)的根,也可以不是文件系統(tǒng)的根。目錄名之后可以列出多個(gè)或零個(gè)用空格分隔開的導(dǎo)出指定項(xiàng)。每個(gè)導(dǎo)出指定項(xiàng)由兩個(gè)可選部分組成:主機(jī)指定部分(host)和導(dǎo)出選項(xiàng)部分(opt),這兩個(gè)部分都是可選的。如果只列出主機(jī)指定部分而沒有列出導(dǎo)出選項(xiàng)部分,則導(dǎo)出選項(xiàng)缺省為“ro”——只讀,即NFS客戶只能讀取這個(gè)目錄的文件而不能寫入目錄中的文件。如果只指定導(dǎo)出選項(xiàng)而沒有指定主機(jī),則主機(jī)缺省為所有主機(jī)。如果目錄后沒有指定任何導(dǎo)出項(xiàng),則以只讀選項(xiàng)導(dǎo)出目錄給所有主機(jī),相當(dāng)于*(ro)。
主機(jī)部分非常靈活,可以指定單個(gè)主機(jī),也可以指定多個(gè)主機(jī)。描述主機(jī)的方法有四種。
(1)單個(gè)主機(jī):可以列出短名、完全限定名或IP地址,如:linux2或或(2)主機(jī)網(wǎng)絡(luò):指定特定一個(gè)子網(wǎng)或幾個(gè)子網(wǎng)上的主機(jī),用address/netmask語法指定,如:
/表明導(dǎo)出文件系統(tǒng)或目錄給子網(wǎng)上的所有主機(jī)使用。(3)通配符主機(jī):可以使用“?”、“*”對主機(jī)名進(jìn)行匹配,如:“*.”可以匹配域中的所有主機(jī)。但是要注意的是通配符不匹配主機(jī)名中的“.”,因此“*.”不匹配。(4)網(wǎng)組:可以列出NFS網(wǎng)組映射中定義的整組主機(jī),網(wǎng)組以“@”開頭,例如:
@linuxgrp。導(dǎo)出選項(xiàng)列表用“.”分隔開,選項(xiàng)之間也不能包含空格。表8-1列出了導(dǎo)出選項(xiàng)的含義,導(dǎo)出選項(xiàng)分為性能選項(xiàng)和安全選項(xiàng)兩種類型。表8-1NFS導(dǎo)出選項(xiàng)選項(xiàng)是否缺省類型含義async是性能異步將數(shù)據(jù)寫入磁盤(不是在客戶機(jī)請求時(shí)寫入)sync否性能客戶機(jī)執(zhí)行寫操作時(shí)立即將數(shù)據(jù)寫入磁盤wdelay是性能延遲同步寫入,實(shí)現(xiàn)累積no_wdelay否性能不延遲同步寫入ro是安全允許對這個(gè)文件系統(tǒng)進(jìn)行只讀操作rw否安全允許對這個(gè)文件系統(tǒng)進(jìn)行讀寫操作root_squash是安全將UID=0的用戶(root)映射為用戶nobodyno_root_squash否安全不將UID=0的用戶(root)映射為用戶nobodyall_squash否安全將所有的用戶映射為用戶nobodyno_all_squash是安全不將所有的用戶映射為用戶nobodyanonuid=N-2安全將匿名賬戶nobody的UID設(shè)為Nanongid=N-2安全將匿名賬戶nobody的GID設(shè)為Nsecure是安全允許1024以下端口產(chǎn)生的請求insecure否安全允許1024以上端口產(chǎn)生的請求subtree_check是安全認(rèn)證文件句柄屬于整個(gè)文件系統(tǒng)的導(dǎo)出子樹no_subtree_check否安全不認(rèn)證文件句柄屬于整個(gè)文件系統(tǒng)的導(dǎo)出子樹hide是安全不導(dǎo)出這個(gè)目錄下掛接的其他文件系統(tǒng)nohide否安全導(dǎo)出這個(gè)目錄下掛接的其他文件系統(tǒng)【實(shí)例29.2】/home(ro)
將使得主機(jī)上的用戶對/home目錄有只讀權(quán)限。
【實(shí)例29.3】/test*.(rw)
將使得域上的主機(jī)上的用戶對/test目錄有讀寫權(quán)限。
導(dǎo)出目錄時(shí)將面臨一個(gè)問題:NFS服務(wù)器用戶和NFS客戶機(jī)上用戶的映射。假如在NFS服務(wù)器上導(dǎo)出/test目錄,該目錄由NFS服務(wù)器上的用戶user1和user2擁有,則NFS客戶機(jī)上要有同樣的用戶user1和user2才能使用導(dǎo)出的目錄。另外,我們可能不希望客戶機(jī)上的root用戶擁有NFS服務(wù)器上的root用戶對/test目錄的權(quán)限。這時(shí)我們可以使用導(dǎo)出選項(xiàng)控制NFS客戶機(jī)和NFS服務(wù)器的用戶映射,從而達(dá)到控制權(quán)限的目的?!皉oot_squash”選項(xiàng)(root用戶擠壓)是默認(rèn)選項(xiàng),該選項(xiàng)的作用是將客戶機(jī)上的root用戶映射到NFS服務(wù)器上的nobody用戶,這時(shí)NFS客戶機(jī)上的root用戶對NFS服務(wù)器上導(dǎo)出的目錄的權(quán)限只具有服務(wù)器上nobody用戶的權(quán)限?!緦?shí)例29.4】/test(anonuid=500,anongid=600)
本例中客戶機(jī)上的root用戶映射到服務(wù)器上UID=500的用戶,同時(shí)組GID=600,意味著客戶機(jī)上的root用戶具有服務(wù)器上UID=500的用戶和GID=600的組的權(quán)限?!癮ll_squash”和“no_all_squash”選項(xiàng)的含義和“root_squash”、“no_root_squash”選項(xiàng)的含義類似。只不過“all_squash”是將客戶機(jī)上的所有用戶映射到服務(wù)器上的nobody用戶,如果要映射成服務(wù)器上的其他用戶,同樣要使用anonuid和anongid選項(xiàng)?!皀o_all_squash”是缺省選項(xiàng),意味著缺省時(shí)客戶機(jī)上的用戶要和服務(wù)器上的用戶一一對應(yīng),才能訪問目錄?!緦?shí)例29.5】/test(all_squash,anonuid=400,anongid=700)本例中把客戶機(jī)上的所有用戶(含root用戶)映射到服務(wù)器上UID=400的用戶,GID=700的組。29.2.3激活NFSNFS服務(wù)的啟動(dòng)和停止是通過/etc/rc.d/init.d目錄下的腳本nfs來實(shí)現(xiàn)的,執(zhí)行該腳本必須用root用戶登錄。
【實(shí)例29.6】/etc/rc.d/init.d/nfsstartStartingNFSservices:[OK]StartingNFSquotas:[OK]StartingNFSmountd:[OK]StartingNFSdaemon:[OK]【實(shí)例29.7】/etc/rc.d/init.d/nfsstopShuttingdownNFSmountd:[OK]ShuttingdownNFSdaemon:[OK]ShuttingdownNFSservices:[OK]ShuttingdownNFSquotas:[OK]【提示】
也可以用servicenfsstart來啟動(dòng)NFS服務(wù)。如果想讓Linux系統(tǒng)在啟動(dòng)時(shí)同時(shí)也啟動(dòng)NFS服務(wù),可以使用ntsysv命令,如圖8-2所示。找到NFS服務(wù),用空格鍵在NFS處做標(biāo)記“*”,確認(rèn)“Ok”即可?!緦?shí)例29.8】[root@redflag/root]#ntsysv(見圖8-2)。圖8-2NFS的自動(dòng)啟動(dòng)【實(shí)例29.9】[root@redflag/root]#rpcinfo–pprogram vers proto port100000 2 tcp 111 portmapper100000 2 udp 111 portmapper100024 1 udp 32768 status100024 1 tcp 32768 status100011 1 udp 635 rquotad100011 2 udp 635 rquotad100005 1 udp 32775 mountd100005 1 tcp 32773mountd100005 2 udp 32775mountd100005 2 tcp 32773mountd100005 3 udp 32775 mountd100005 3 tcp 32773 mountd100003 2 udp 2049 nfs100003 3 udp 2049 nfs100021 1 udp 32776nlockmgr100021 3 udp 32776nlockmgr100021 4 udp 32776nlockmgr29.2.4導(dǎo)出目錄:exportfsNFS服務(wù)啟動(dòng)時(shí)會(huì)自動(dòng)導(dǎo)出/etc/exportfs文件中設(shè)定的文件系統(tǒng)或目錄,但是如果在NFS服務(wù)啟動(dòng)后修改了exports文件,要使用exportfs命令導(dǎo)出目錄。exportfs命令的用法如下:/usr/sbin/exportfs[-avi][-ooptions,..][client:/path..]/usr/sbin/exportfs-r[-v]/usr/sbin/exportfs[-av]-u[client:/path..]/usr/sbin/exportfs[-v]參數(shù)選項(xiàng):-a:對所有的目錄操作。-ooptions:指定目錄導(dǎo)出時(shí)的選項(xiàng),選項(xiàng)的定義和exports文件的定義相同。-i:忽略/etc/exports文件列出的信息,取命令行中指定的導(dǎo)出選項(xiàng)。-r:再次導(dǎo)出所有的目錄,用于重新初始化NFS服務(wù)器內(nèi)部的導(dǎo)出清單。-u:從NFS服務(wù)器中刪除導(dǎo)出的目錄。-v:顯示exportfs命令執(zhí)行時(shí)的信息。【實(shí)例29.10】[root@redflag/root]#cat/etc/exports/home*(ro)/test*(rw)[root@redflag/root]#exportfs-avexporting*:/testexporting*:/home導(dǎo)出所有目錄。【實(shí)例29.11】[root@redflag/root]#exportfs-rv
重新導(dǎo)出所有目錄,如果在/etc/exports文件中增加或刪除了某項(xiàng),可以使用該命令。這是用得最多的例子?!緦?shí)例29.12】[root@redflag/root]#exportfs-v-i-orw,no_root_squash*.:/test2exporting*.:/test
把NFS服務(wù)器上的/test2目錄導(dǎo)出給“*.”客戶機(jī)使用,導(dǎo)出權(quán)限為“rw,no_root_squash”。我們使用“-i”選項(xiàng)讓exportfs命令忽略/etc/exports文件。這通常用于臨時(shí)將一個(gè)目錄導(dǎo)出,而不將其加入到/etc/exports文件中。
【實(shí)例29.13】[root@redflag/root]#exportfs-vu*.:/testunexporting*.:/testunexporting*:/test取消/test目錄的導(dǎo)出?!緦?shí)例29.14】[root@redflag/root]#exportfs/home*/test*29.3配
置
NFS客
戶Linux下的NFS客戶配置非常容易,不需要加載任何新的或附加的軟件。惟一的要求是內(nèi)核必須編譯為支持NFS的功能或作為可裝入模塊。缺省情況下,紅旗Linux?3.0將NFS作為可裝入模塊,在需要時(shí)自動(dòng)裝入。也可以使用命令insmodnfs手工裝入模塊,裝入后可使用lsmod命令檢查。【實(shí)例29.15】[root@redflag/root]#lsmodModule ?SizeUsed byNottaintednfsd 772160 (autoclean)nfs 867160lockd 572800 [nfsdnfs]sunrpc 770760 [nfsdnfslockd]8139too 201281 (autoclean)usb-uhci 256360 (unused)usbcore 651841 [usb-uhci]如果輸出中有“nfs”項(xiàng)(注意:不是“nfsd”項(xiàng)),則說明“nfs”已經(jīng)作為可裝入模塊加載了。[root@redflag/root]#cat/proc/filesystemsnodevrootfsnodevbdevnodevprocnodevsockfsnodevtmpfsnodevshmnodevpipefsext2iso9660reiserfsnodevdevptsnodevusbdevfsnodevnfs輸出中也應(yīng)該有“nfs”項(xiàng)。NFS軟件包(nfs-utils-0.3.1-8.i386.rpm,我們前面已經(jīng)介紹過它,它是NFS服務(wù)器軟件包)帶有一個(gè)稱為showmount的程序,該程序能夠給出NFS服務(wù)器導(dǎo)出的目錄信息。showmount命令的格式如下:showmount[參數(shù)選項(xiàng)]NFS服務(wù)器主機(jī)名/IP地址參數(shù)選項(xiàng):
-e:顯示NFS服務(wù)器上導(dǎo)出的目錄?!緦?shí)例29.16】[root@redflag/root]#showmount-e5Exportlistfor5:/test*/home*
顯示NFS服務(wù)器5導(dǎo)出的目錄,當(dāng)然我們也可以在NFS服務(wù)器上執(zhí)行不帶任何參數(shù)的exportfs命令來查看導(dǎo)出的NFS目錄,結(jié)果是一樣的。
如果已經(jīng)知道了從NFS服務(wù)器上導(dǎo)出的目錄信息,就可以使用我們在文件系統(tǒng)這一章中已經(jīng)介紹過的mount命令手工安裝(掛接)NFS服務(wù)器上的目錄了。掛接NFS目錄時(shí),mount命令有幾個(gè)小的變化:文件系統(tǒng)的類型指定為“nfs”、分區(qū)為遠(yuǎn)程N(yùn)FS服務(wù)器上的導(dǎo)出目錄和有一些掛接選項(xiàng)。例如:mount-tnfs-ooptionsnfsserver:/dirdir_mountpoint【實(shí)例29.17】[root@redflag/root]#mount-tnfs-orw:/test/mnt/nfs
把NFS服務(wù)器上導(dǎo)出的目錄/test掛接在本機(jī)的/mnt/nfs目錄下,權(quán)限為讀寫。
NFS客戶機(jī)安裝NFS分區(qū)(目錄)時(shí)的選項(xiàng)很多,除了以前介紹mount命令時(shí)介紹的所有文件系統(tǒng)都具有的一般選項(xiàng)外,還有一些只適用于NFS分區(qū)的選項(xiàng)。
掛接NFS分區(qū)(目錄)時(shí),可以混合使用一般選項(xiàng)和NFS分區(qū)特有的選項(xiàng)。常用的NFS特有的選項(xiàng)見表8-2,其余的選項(xiàng)參見mannfs命令的輸出。表8-2NFS客戶特有的掛接選項(xiàng)選項(xiàng)缺省值含義bg關(guān)后臺(tái)掛接fg開前臺(tái)掛接intr關(guān)定義一個(gè)可中斷的掛接soft關(guān)軟掛接hard開硬掛接rsize=N1024從NFS服務(wù)器讀取數(shù)據(jù)的字節(jié)數(shù)wsize=N1024向NFS服務(wù)器寫入數(shù)據(jù)的字節(jié)數(shù)timeo=N7重傳RPC請求之前等待的1/10秒數(shù)retrans=N3RPC請求失敗前超時(shí)和重傳的次數(shù)
使用后臺(tái)掛接時(shí),如果第一次掛接失敗(例如NFS服務(wù)器宕機(jī)),掛接進(jìn)程就會(huì)在后臺(tái)處理,直到成功為止。采用“bg”選項(xiàng)可以避免NFS服務(wù)器宕機(jī)而使客戶機(jī)Linux系統(tǒng)懸掛在mount命令上。特別是在/etc/fstab文件中自動(dòng)掛接NFS分區(qū)時(shí),最好采用“bg”選項(xiàng),否則可能導(dǎo)致Linux系統(tǒng)無法啟動(dòng)。
如果服務(wù)器A在/etc/fstab掛接了服務(wù)器B的NFS分區(qū),同時(shí)服務(wù)器B也在/etc/fstab掛接了服務(wù)器A的NFS分區(qū),這時(shí)出現(xiàn)了“交叉掛接”,兩臺(tái)主機(jī)既是做為服務(wù)器為對方服務(wù),也同時(shí)是對方的客戶。交叉掛接會(huì)帶來一個(gè)問題:服務(wù)器A必須等到服務(wù)器B完成引導(dǎo)才能正常引導(dǎo),而服務(wù)器B也必須等到服務(wù)器A完成引導(dǎo)才能正常引導(dǎo),從而陷入一個(gè)死循環(huán)。這種情況下應(yīng)確保在兩臺(tái)主機(jī)的/etc/fstab文件中將NFS分區(qū)用“bg”選項(xiàng)來掛接。NFS客戶機(jī)掛接NFS分區(qū)時(shí),缺省采用“硬”掛接(即采用“hard”選項(xiàng)),即它們會(huì)無休止地嘗試連接NFS服務(wù)器直到連接上為止。這種做法并不總是最好的,在需要對整個(gè)系統(tǒng)進(jìn)行關(guān)機(jī)時(shí)可能會(huì)引起故障。如果NFS服務(wù)器關(guān)機(jī)比NFS客戶機(jī)關(guān)機(jī)早,客戶機(jī)的關(guān)機(jī)操作會(huì)無法正常進(jìn)行。這種情況下可以采用“軟”掛接(即采用“soft”選項(xiàng)),NFS客戶機(jī)在重試一定次數(shù)(用retrans=N參數(shù)設(shè)定重試次數(shù))后會(huì)終止連接。但是數(shù)據(jù)操作執(zhí)行完成之前不得把控制權(quán)交給應(yīng)用程序時(shí)(如電子郵件目錄),就不要使用“軟”掛接選項(xiàng)。
當(dāng)NFS客戶機(jī)上某個(gè)進(jìn)程進(jìn)行系統(tǒng)調(diào)用時(shí),內(nèi)核就會(huì)接過動(dòng)作,在內(nèi)核處理系統(tǒng)調(diào)用的時(shí)間里,原來的進(jìn)程對自己是沒有控制權(quán)的。如果內(nèi)核的存取操作出現(xiàn)問題,該進(jìn)程就必須繼續(xù)等待,直到內(nèi)核調(diào)用返回為止,進(jìn)程自己是不能放棄操作并退出運(yùn)行的?!癷ntr”選項(xiàng)給掛接加上一個(gè)可中斷的標(biāo)志,允許等待NFS操作的進(jìn)程放棄操作并退出。缺省時(shí)不使用“intr”選項(xiàng)。在NFS客戶機(jī)上掛接NFS服務(wù)器上的NFS分區(qū)同樣可以在/etc/fstab文件中配置,使得客戶機(jī)的Linux系統(tǒng)啟動(dòng)時(shí)自動(dòng)掛接服務(wù)器上的NFS分區(qū)。【實(shí)例29.18】
在/etc/fstab中添加:
:/test/mnt/nfsnfsrw,bg,intr,soft00自動(dòng)把NFS服務(wù)器上的導(dǎo)出目錄/test掛接在/mnt/nfs目錄下,掛接選項(xiàng)是:“rw”,“bg”,“intr”,“soft”。29.4NFS的性能、安全和故障排除29.4.1NFS的性能
NFS通過網(wǎng)絡(luò)訪問遠(yuǎn)程文件,因此速度比訪問本地磁盤慢。由于NFS有客戶機(jī)和服務(wù)器兩個(gè)部分,NFS的性能也就和雙方的參數(shù)配置都有關(guān)。1.?NFS服務(wù)器的性能選項(xiàng)首先要強(qiáng)調(diào)的是NFS性能和Linux內(nèi)核有很大的關(guān)系,調(diào)整內(nèi)核也可改善NFS服務(wù)器的性能,特別是把NFS編譯到內(nèi)核,而不是作為模塊裝入。有關(guān)內(nèi)核的編譯請參見有關(guān)Linux內(nèi)核的資料,我們這里主要介紹導(dǎo)出選項(xiàng)對NFS服務(wù)器性能的影響。NFS客戶機(jī)上的用戶執(zhí)行write系統(tǒng)調(diào)用時(shí),它希望系統(tǒng)調(diào)用順利返回時(shí)數(shù)據(jù)已經(jīng)寫入到NFS服務(wù)器上的磁盤,這樣可以保證數(shù)據(jù)的可靠性。如果write系統(tǒng)調(diào)用后NFS服務(wù)器崩潰,則已經(jīng)寫入到磁盤的數(shù)據(jù)還是安全的,這種方式稱為同步寫入。同步寫入會(huì)降低性能,因?yàn)橛脩暨M(jìn)程必須等待系統(tǒng)調(diào)用的返回。與之相反的另一種方法是NFS服務(wù)器并不立即把數(shù)據(jù)寫到磁盤而是放在緩沖區(qū),然后立即返回調(diào)用,這就是異步寫入。NFS服務(wù)器上的Linux系統(tǒng)在調(diào)用完成后的一段時(shí)間(5秒左右)內(nèi)把數(shù)據(jù)寫入磁盤,如果在這段時(shí)間里NFS服務(wù)器崩潰,將會(huì)導(dǎo)致數(shù)據(jù)的丟失?!皀fs”導(dǎo)出選項(xiàng)“sync”是同步寫入,“async”是異步寫入,缺省是“async”。NFS服務(wù)器還有另一個(gè)特性和可靠性、性能有關(guān)。Linux使用基于頁的虛擬內(nèi)存,它可以把同一物理數(shù)據(jù)頁的幾個(gè)小的寫入集合起來一次性寫入,以減少寫操作的次數(shù)。“wdelay”選項(xiàng)允許Linux系統(tǒng)延遲寫入,把幾次寫入操作集合起來?!皀owdelay”選項(xiàng)則不允許Linux系統(tǒng)延遲寫入,不允許集合操作。寫入延遲可以提高性能,但同樣也增加數(shù)據(jù)丟失的可能性,如果NFS服務(wù)器在把集合起來的數(shù)據(jù)寫入到磁盤之前崩潰,則所有這些數(shù)據(jù)全部丟失。“wdelay”選項(xiàng)是缺省值。2.?NFS客戶機(jī)的性能選項(xiàng)
NFS客戶機(jī)上的NFS性能是由掛接NFS文件系統(tǒng)時(shí)(mount或/etc/fstab)采用的選項(xiàng)控制的。NFS客戶機(jī)也有類似的“sync”和“async”選項(xiàng)(它們不是NFS特有的選項(xiàng)),注意它們不是用來控制NFS服務(wù)器的性能。NFS客戶機(jī)緩沖用戶進(jìn)程寫入的數(shù)據(jù)時(shí),是將這些數(shù)據(jù)保留在NFS客戶機(jī)的緩沖區(qū)中,即這個(gè)數(shù)據(jù)不從網(wǎng)絡(luò)立即傳送給NFS服務(wù)器。“async”是缺省值。NFS客戶機(jī)按固定最大長度的單元從網(wǎng)絡(luò)上讀取和寫入數(shù)據(jù),這分別是“rsize”和“wsize”選項(xiàng)指定的值。讀取和寫入長度越大,NFS系統(tǒng)的性能越好。但是NFS建立在RPC上,而RPC使用XDR,XDR又使用IP網(wǎng)絡(luò)組件。大的NFS傳輸單元會(huì)被分解成多個(gè)小組,通常是1500字節(jié)左右(在以太網(wǎng)上)。如果使用NFS和UDP,當(dāng)NFS傳輸單元中有一分組丟失時(shí),即使其他分組安全到達(dá),也會(huì)導(dǎo)致NFS重發(fā)整個(gè)單元,這樣就增加了網(wǎng)絡(luò)的負(fù)擔(dān)。如果線路的情況不好,可能出現(xiàn)反復(fù)重發(fā),加劇惡化網(wǎng)絡(luò)的通信狀況。因此需要平衡網(wǎng)絡(luò)的性能和NFS的性能,如果網(wǎng)絡(luò)快而穩(wěn)定,“rsize”和“wsize”的值可以加大,高達(dá)32?KB;如果網(wǎng)絡(luò)慢而不穩(wěn)定(如撥號網(wǎng)絡(luò)),“rsize”和“wsize”的值可降至1?KB、2?KB。29.4.2NFS的安全
1.?NFS服務(wù)器的安全保護(hù)NFS服務(wù)器是NFS服務(wù)安全的最重要部分,保護(hù)方式主要有兩種:RPC訪問安全和目錄的導(dǎo)出權(quán)限。
Linux的TCPWrapper根據(jù)兩個(gè)配置文件確定誰能訪問哪些服務(wù),這兩個(gè)文件是/etc/hosts.allow和/etc/hosts.deny。這兩個(gè)文件很相似,格式如下:服務(wù)1,服務(wù)2,……:主機(jī)名1,主機(jī)名2,……TCPWrapper程序在用戶訪問主機(jī)的服務(wù)時(shí),按以下的順序進(jìn)行操作:
(1)如果客戶機(jī)的主機(jī)名或IP地址匹配/etc/hosts.allow列出的服務(wù)名,則客戶的訪問被允許;
(2)如果客戶機(jī)的主機(jī)名或IP地址匹配/etc/hosts.deny列出的服務(wù)名,則客戶的訪問被拒絕;
(3)如果客戶機(jī)的主機(jī)名或IP地址在兩個(gè)文件均不匹配,則客戶的訪問被允許?!緦?shí)例29.19】[root@redflag/root]#cat/etc/hosts.denyALL:ALL[root@redflag/root]#cat/etc/hosts.allowportmap:192.168.0.lockd:192.168.0.nfsd:192.168.0.mountd,rquotad:192.168.0.stad:192.168.0.
以上例子除了開放NFS相關(guān)的服務(wù)給192.168.0.*的主機(jī)外,關(guān)閉了其他所有的服務(wù)(包括了Web、FTP、DNS等服務(wù))。這里采用的是先關(guān)閉所有的服務(wù)再一一開放允許的服務(wù),安全性較好,如果要開放某一服務(wù)可以在/etc/hosts.allow加入相應(yīng)的命令行。
NFS服務(wù)器的配置文件/etc/exports中有許多選項(xiàng)是用于控制安全性,我們已經(jīng)介紹了“root_squash”、“no_root_squash”、“all_squash”、“no_all_squash”、“anonuid”和“anongid”,這里補(bǔ)充其他的安全選項(xiàng)。NFS服務(wù)器缺省要求NFS客戶主機(jī)用1024以下的端口來發(fā)送請求,這些端口稱為安全端口,root用戶使用這些端口,非root用戶可能使用1024以上的端口(不安全端口)發(fā)出請求。因此可能需要用“insecure”選項(xiàng)使得NFS客戶可以使用NFS服務(wù),特別是非Linux系統(tǒng)的NFS客戶。NFS服務(wù)器導(dǎo)出某一目錄時(shí),這一目錄下可能還掛接著其他文件系統(tǒng)。為了在NFS客戶機(jī)上能夠使用這兩個(gè)目錄,通常會(huì)在NFS服務(wù)器上的/etc/exports文件分別有兩個(gè)目錄的導(dǎo)出指定項(xiàng),然后在NFS客戶機(jī)上分別掛接,如果只掛接上一級目錄,下一級目錄會(huì)被隱藏?!癶ide”選項(xiàng)和“nohide”選項(xiàng)可以控制導(dǎo)出目錄時(shí)其他文件系統(tǒng)是否一起導(dǎo)出。“hide”選項(xiàng)是缺省值,即不顯示被導(dǎo)出目錄下掛接的其他文件系統(tǒng),避免出現(xiàn)死循環(huán)。【實(shí)例29.20】/test目錄下有一目錄/test/win2000,它是Windows2000文件系統(tǒng)的掛接點(diǎn),如果我們導(dǎo)出目錄時(shí)采用:
/test*(ro)/test/win2000*(ro)
在NFS客戶機(jī)上只掛接/test,這時(shí)無法在/test目錄下看到/test/win2000目錄的內(nèi)容。我們可以使用“nohide”選項(xiàng)導(dǎo)出:
/test*(ro)/test/win2000*(ro,nohide)
在NFS客戶機(jī)上只掛接/test,這時(shí)在/test目錄下就可以看到/test/win2000目錄的內(nèi)容了?!皊ubtree_check”選項(xiàng)用于控制NFS服務(wù)器證明文件句柄確實(shí)屬于所導(dǎo)出的文件系統(tǒng),防止客戶機(jī)創(chuàng)建偽NFS文件句柄。假設(shè)LinuxNFS服務(wù)器有一個(gè)文件系統(tǒng)安裝在/test,其下有目錄/test/proj。我們將/test/proj用“subtree_check”選項(xiàng)導(dǎo)出,每次NFS客戶機(jī)向NFS服務(wù)器發(fā)送NFS操作時(shí),服務(wù)器保證收到的文件句柄屬于/test/proj目錄或其子目錄。如果客戶主機(jī)偽造NFS文件句柄(該句柄實(shí)際上是指向/test/doc/hetong1.doc)后發(fā)送請求給服務(wù)器,NFS服務(wù)器會(huì)檢查句柄并拒絕服務(wù)?!皊ubtree_check”選項(xiàng)是缺省值,“no_subtree_check”選項(xiàng)可以關(guān)掉子樹檢查。如果導(dǎo)出整個(gè)文件系統(tǒng),可以采用“no_subtree_check”選項(xiàng)加速對文件系統(tǒng)的訪問,因?yàn)槲募到y(tǒng)不會(huì)有其他的部分被訪問的危險(xiǎn)。2.?NFS客戶機(jī)的安全性在NFS客戶機(jī)掛接NFS分區(qū)時(shí),“rw”和“ro”選項(xiàng)可以控制NFS文件系統(tǒng)的訪問權(quán)限。缺省時(shí),NFS客戶機(jī)掛接分區(qū)時(shí)采用“rw”,而NFS服務(wù)器導(dǎo)出目錄時(shí)缺省采用的是“ro”。因此如果所有的選項(xiàng)保持缺省值,則NFS服務(wù)器不讓寫入導(dǎo)出卷,當(dāng)NFS客戶機(jī)想寫入導(dǎo)出卷時(shí)會(huì)出現(xiàn)錯(cuò)誤。當(dāng)然如果NFS服務(wù)器上以“rw”選項(xiàng)導(dǎo)出目錄,NFS客戶機(jī)以“ro”選項(xiàng)掛接NFS分區(qū),最終NFS客戶機(jī)上的用戶也只具有讀的權(quán)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公室房屋租賃合同范本
- 制作買賣合同范本
- 2025年度建筑模板工程承包及綠色建材應(yīng)用合同
- 加工輔料采購合同范本
- 勞務(wù)合同范本辦理流程
- 2025年度建筑工程施工材料供應(yīng)承包協(xié)議
- 2025年中國魚肝油市場供需預(yù)測及投資戰(zhàn)略研究咨詢報(bào)告
- 2025年度文化創(chuàng)意產(chǎn)業(yè)園區(qū)工裝設(shè)計(jì)施工一體化合同
- 2025年度智慧家居安裝勞務(wù)分包合同個(gè)人版
- 2025年度新能源汽車研發(fā)借款合同范本
- 中國主要蜜源植物蜜源花期和分布知識
- 電化學(xué)免疫傳感器的應(yīng)用
- (2024年)面神經(jīng)炎課件完整版
- 數(shù)據(jù)中心基礎(chǔ)知識培訓(xùn)-2024鮮版
- 第4課+中古時(shí)期的亞洲(教學(xué)設(shè)計(jì))-【中職專用】《世界歷史》(高教版2023基礎(chǔ)模塊)
- 保障性住房建設(shè)資金來源與運(yùn)作機(jī)制
- 金點(diǎn)子活動(dòng)總結(jié)匯報(bào)
- 原料驗(yàn)收標(biāo)準(zhǔn)知識培訓(xùn)課件
- 江蘇春節(jié)風(fēng)俗 南京夫子廟、鹽水鴨與昆曲
- Unit4MyfamilyStorytime(課件)人教新起點(diǎn)英語三年級下冊
- 物流運(yùn)作管理-需求預(yù)測
評論
0/150
提交評論