NFS網(wǎng)絡(luò)文件結(jié)構(gòu)
在Linux系統(tǒng)中,我們通常討論NFS組建的使用。這里我們來(lái)了解一下NFS網(wǎng)絡(luò)文件的一些知識(shí)。包括他的系統(tǒng)和結(jié)構(gòu)。如果在Red Hat Enterprise Linux 5安裝時(shí)已經(jīng)默認(rèn)安裝了NFS組件,接下來(lái)的工作主要是配置相關(guān)文件使服務(wù)器提供NFS服務(wù),步驟如下。
(1)設(shè)定某臺(tái)計(jì)算機(jī)為NFS服務(wù)器,并在后臺(tái)啟動(dòng)相關(guān)的守護(hù)進(jìn)程(在"服務(wù)配置"中啟動(dòng))。一般來(lái)說(shuō),如果NFS服務(wù)器要提供服務(wù),必須啟動(dòng)inet、portmap、nfs和mount這4個(gè)守護(hù)進(jìn)程并保持在后臺(tái)運(yùn)行。
(2)規(guī)劃服務(wù)器分區(qū),從安全等方面定義哪些分區(qū)作為要共享的文件系統(tǒng)。
(3)在客戶端列表中定義每一臺(tái)客戶機(jī)的參數(shù)。
(4)修改/etc/exports。
(5)重新啟動(dòng)NFS服務(wù)器,啟動(dòng)方法可采用命令行的方式,即/etc/rc.d/init.d/nfs restart。服務(wù)器端文件系統(tǒng)的共享設(shè)置有3種方法,一是直接修改/etc/exports文件;二是用exports命令來(lái)增加和刪除目錄;三是圖形化的配置方法。
1、 了解NFS網(wǎng)絡(luò)文件的系統(tǒng)結(jié)構(gòu)
NFS網(wǎng)絡(luò)文件的系統(tǒng)結(jié)構(gòu)包括如下目錄結(jié)構(gòu):
1./etc/exports
這個(gè)文件是NFS的主要配置文件,不過(guò)系統(tǒng)并沒(méi)有默認(rèn)值,所以這個(gè)文件不一定會(huì)存在??赡芤褂胿i主動(dòng)建立起這個(gè)文件,接下來(lái)的設(shè)定也僅僅是這個(gè)文件。
2./usr/sbin/exportfs
這是維護(hù)NFS共享資源的命令,我們可以用其重新分享/etc/exports變更的目錄資源,并將NFS Server分享的目錄卸載或重新分享等。這個(gè)命令是NFS系統(tǒng)中相當(dāng)重要的一個(gè),至于命令的用法在后面章節(jié)再介紹。
3./usr/sbin/showmount
showmount命令主要用在Client端,可以用來(lái)查看NFS共享出來(lái)的目錄資源。
4./var/lib/nfs/*tab
在NFS服務(wù)器的登錄文件都放置到/var/lib/nfs/目錄中,在該目錄下有兩個(gè)比較重要的登錄文件,一個(gè)是etab,主要記錄了NFS網(wǎng)絡(luò)文件所分享出來(lái)的目錄的完整權(quán)限設(shè)定值;另一個(gè)是xtab,記錄曾經(jīng)連接到此NFS主機(jī)的相關(guān)客戶端數(shù)據(jù)。
2、 配置/etc/exports文件
用戶可以把需要共享的文件系統(tǒng)直接編輯到/etc/exports文件中,這樣當(dāng)nfs網(wǎng)絡(luò)文件的服務(wù)器重新啟動(dòng)時(shí)系統(tǒng)就會(huì)自動(dòng)讀取/etc/exports文件,從而告訴內(nèi)核要輸出的文件系統(tǒng)和相關(guān)的存取權(quán)限.在下面的例子中顯示了/etc/exports文件中幾個(gè)條目項(xiàng)的內(nèi)容,被掛載在/pub目錄下的文件系統(tǒng)具有只讀訪問(wèn)權(quán)限,所有的計(jì)算機(jī)在訪問(wèn)文件系統(tǒng)的時(shí)候不必經(jīng)過(guò)安全檢查.編輯/etc/exports文件:
# vi /etc/exports
/usr/sys/src -maproot=daemon host2
/usr/ports -ro -network 192.168.1.0
從上面這個(gè)例子中可以看出exports文件的格式,首先是定義要共享的文件目錄.必須使用絕對(duì)路徑,而不能使用符號(hào)鏈接.然后設(shè)置對(duì)這個(gè)目錄進(jìn)行訪問(wèn)限制的參數(shù),用于保證安全性.在第1行設(shè)置中,將/usr/sys/src目錄共享出去.但限制客戶機(jī)上的root用戶等價(jià)于本機(jī)上的daemon用戶,以避免客戶機(jī)上的root用戶擁有這個(gè)服務(wù)器上的root權(quán)限進(jìn)行非法操作.此后的host2參數(shù)是主機(jī)名,從而限制只有host2才能共享這個(gè)/usr/sys/src目錄;第2行設(shè)置共享/usr/ports目錄,但限制為只允許讀取,并且也只有網(wǎng)絡(luò)上的192.168.1.0計(jì)算機(jī)才能訪問(wèn)這個(gè)共享目錄.
(1)rw:可讀寫(xiě)權(quán)限.
(2)ro:只讀權(quán)限.
(3)no_root_squash:當(dāng)?shù)卿汵FS主機(jī)使用共享目錄的使用者是root時(shí),其權(quán)限將被轉(zhuǎn)換成為匿名使用者,通常它的UID與GID都會(huì)變成nobody身份.
(4)root_squash;如果登錄NFS主機(jī)使用共享目錄的使用者是root,那么對(duì)于這個(gè)共享的目錄來(lái)說(shuō),它具有root的權(quán)限.
(5)all_squash:忽略登錄nfs網(wǎng)絡(luò)文件系統(tǒng)使用者的身份,其身份都會(huì)被轉(zhuǎn)換為匿名使用者,通常即nobody.
(6)anonuid:通常為nobody,也可以自行設(shè)定這個(gè)UID的值,UID必須存在于/etc/passwd中.
(7)anongid:同anonuid,但是變?yōu)镚roup ID.
(8)sync:同步寫(xiě)入資料到內(nèi)存與硬盤中.
(9)async:資料會(huì)先暫存于內(nèi)存中,而非直接寫(xiě)入硬盤.
主機(jī)可以使用以下格式.
(1)單個(gè)機(jī)器:一個(gè)全限定域名(能夠被服務(wù)器解析)、主機(jī)名(能夠被服務(wù)器解析)或IP地址.
(2)使用通配符來(lái)指定的機(jī)器系列,使用 * 或 ?字符來(lái)指定一個(gè)字符串匹配.IP地址中不使用通配符.如果反向DNS查詢失敗,它們可能會(huì)碰巧有用.在完整域名中指定通配符時(shí),點(diǎn)(.)不包括在通配符中.例如,*.example.com包括one.example.com,但不包括one.two.example.com..
(3)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).
3、 激活服務(wù)portmap和nfsd
命令如下:
# /etc/rc.d/init.d/portmap start
# /etc/rc.d/init.d/nfs start
portmap激活之后,就會(huì)出現(xiàn)一個(gè)端口號(hào)為111的sunrpc的服務(wù).至于nfs則會(huì)激活至少兩個(gè)以上的系統(tǒng)守護(hù)進(jìn)程,然后就開(kāi)始監(jiān)聽(tīng)Client PC的需求.使用cat/var/log/messages可以查看操作是否成功:
#cat /var/log/messages
Nov 16 15:04:45 cao portmap: portmap startup succeeded
Nov 16 15:04:53 cao nfs: Starting NFS services: succeeded
Nov 16 15:04:54 cao nfs: rpc.rquotad startup succeeded
Nov 16 15:04:54 cao nfs: rpc.mountd startup succeeded
Nov 16 15:04:54 cao nfs: rpc.nfsd startup succeeded#p#
4、 exportfs命令
如果修改了/etc/exports文件后不需要重新激活nfs網(wǎng)絡(luò)文件系統(tǒng),只要重新掃描一次/etc/exports文件,并且重新將設(shè)定加載即可:
# exportfs [-aruv]
參數(shù)說(shuō)明如下.
(1)-a:全部掛載(或卸載)/etc/exports文件內(nèi)的設(shè)定.
(2)-r:重新掛載/etc/exports中的設(shè)置,此外同步更新/etc/exports及/var/lib/nfs/xtab中的內(nèi)容.
(3)-u:卸載某一目錄.
(4)-v:在export時(shí)將共享的目錄顯示在屏幕上.
5、 檢驗(yàn)?zāi)夸?var/lib/nfs/xtab
檢驗(yàn)所共享的目錄內(nèi)容,查看/var/lib/nfs/xtab文件:
# vi /var/lib/nfs/xtab
/home/cao 192.168.0.1(rw,sync,wdelay,hide,secure,root_squash,
no_all_squash,subtree_check,secure_locks, mapping=identity,anonuid=-2,
anongid=-2)
此即/home/cao這個(gè)共享出去的目錄預(yù)設(shè)NFS中的屬性.
6、 showmount
showmount命令如下:
# showmount [-ae] hostname
參數(shù)說(shuō)明如下.
(1)-a或-all:以host:dir這樣的格式來(lái)顯示客戶主機(jī)名和掛載點(diǎn)目錄.
(2)-d或-directories:僅顯示被客戶掛載的目錄名.
(3)-e或-exports:顯示NFS服務(wù)器的輸出清單.
(4)-h或-help:顯示幫助信息.
(5)-v或-version:顯示版本信息.
(6)--no-headers:禁止輸出描述頭部的信息.
當(dāng)要掃描某一主機(jī)所提供的NFS網(wǎng)絡(luò)文件共享的目錄時(shí),使用showmount -e IP(或主機(jī)名稱hostname)即可.
7、 觀察激活的端口號(hào)
命令如下:
# netstat -utln
Active Internet connections (only SERVERs)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN <== portmap
tcp 0 0 0.0.0.0:817 0.0.0.0:* LISTEN <== rpc.xxxx
tcp 0 0 0.0.0.0:1266 0.0.0.0:* LISTEN <== rpc.xxxx
udp 0 0 0.0.0.0:2049 0.0.0.0:* <== nfs 的端口
udp 0 0 0.0.0.0:814 0.0.0.0:* <== rpc.xxxx
udp 0 0 0.0.0.0:1327 0.0.0.0:* <== rpc.xxxx
udp 0 0 0.0.0.0:111 0.0.0.0:* <== portmap
nfs所開(kāi)啟的端口是2049,其他端口是RPC Server其他程序(例如rpc.mountd、rpc.rquotad及rpc.nfsd.)隨機(jī)產(chǎn)生的.即端口號(hào)不會(huì)是固定的,每次restart nfs都會(huì)得到不一樣的端口號(hào).
8、 啟動(dòng)和停止NFS服務(wù)器
在導(dǎo)出NFS文件系統(tǒng)的服務(wù)器中,nfs服務(wù)必須在運(yùn)行.使用以下命令來(lái)查看NFS守護(hù)進(jìn)程的狀態(tài):
/sbin/service nfs status
使用以下命令來(lái)啟動(dòng)NFS守護(hù)進(jìn)程:
/sbin/service nfs start
使用以下命令來(lái)停止NFS守護(hù)進(jìn)程:
/sbin/service nfs stop
要在引導(dǎo)時(shí)啟動(dòng)nfs網(wǎng)絡(luò)文件服務(wù),使用以下命令:
/sbin/chkconfig --level 345 nfs on
還可以使用ntsysv或服務(wù)配置工具來(lái)配置在引導(dǎo)時(shí)啟動(dòng)這些服務(wù).
本文節(jié)選自《Red Hat Enterprise Linux 5.0服務(wù)器構(gòu)建與故障排除》一書(shū),作者曹江華.本文僅提供讀者試讀,如需全部?jī)?nèi)容請(qǐng)購(gòu)買原書(shū).