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