4.1 NFS文件共享

 

NFSNetwork File System)即網絡文件系統,是由Sun公司開發的一種通過網絡方式共享系統的通用共享解決方案。目前NFS3個版本,分別爲NFSv2NFSv3NFSv4NFSv2是一個古老的版本,但卻被衆多的操作系統所支持,這樣它的兼容性會更好;NFSv3擁有更多的特定,包括更快的速度、更大的單個文件大小、更多便於排錯的錯誤及成功信息、對TCP協議的支持等;NFSv4提供了有狀態的連接,更容易追蹤連接狀態,增強了安全特性。Centos6.3版本默認使用版本NFSv4提供NFS網絡文件系統共享服務,NFS監聽在TCP 2049端口。

RPCRemote Procedure Call)是遠程過程調用協議,RPC協議爲遠程通信程序管理通信雙方所需的基本信息,這樣NFS服務就可以專注於如何共享數據,至於通信的連接以及連接的基本信息,則全權委託給RPC管理,Centos6.3系統由rpcbind服務提供RPC協議的支持,目前NFSv4雖然不再需要與rpcbind直接交互,但rpc.mountd依然是NFSv4所必須的服務。所以,如果在Centos6.3平臺上實現NFS共享,需要同時啓動NFSrpcbind服務。

所需軟件:nfs-utilsrpcbind

 

4.1.1 NFS服務器配置

NFS服務器通過讀取/etc/exports配置文件設定客戶端可以訪問哪些NFS共享文件系統。該文件的書寫規則如下。

1. 空白行將被忽略

2. #符號開頭的內容爲註釋

3. 配置文件中可以通過\符號轉義換行

4. 每個共享的文件系統需要獨立一行條目

5. 每個客戶端主機列表需要使用空格隔開

6. 配置文件支持通配符

一條完整的共享條目語法結構如下,其中,客戶端主機可以是一個網段、單臺主機或主機名。

/共享路徑客戶端主機(選項)

也可以爲多個客戶主機設置不同的訪問選項,語法結構如下:

/共享路徑客戶端主機1(選項)客戶端主機2(選項)

不指定選項,默認屬性爲rosyncwdelayroot_squash。具體的NFS屬性及其對應的含義見表4-1,查看exports的幫助文檔可以找到很多服務器配置模版。

4-1

NFS選項

功能描述

NFS選項

功能描述

ro

只讀共享

rw

可讀可寫共享

sync

同步寫操作

async

異步寫操作

wdelay

延時寫操作

root_squash

屏蔽遠程root權限

no_root_squash

不屏蔽遠程root權限

all_squash

屏蔽所有的遠程用戶權限

 

計算機對數據進行修改時會先將修改的內容寫入快速的內存,隨後纔會慢慢寫入硬盤,async選項允許NFS服務器在沒有完全把數據寫入硬盤前就返回成功消息給客戶端,而此時數據實際還存放在內存中,但客戶端則顯示數據已經寫入成功。注意,該選項僅影響操作消息的返回時間,並不決定如何進行寫操作。sync選項將確保在數據真正寫入硬盤後纔會返回成功的消息。

 

wdelay爲延遲寫入選項,也就是說,它決定了先將數據寫入內存,在寫入硬盤,然後將多個寫入請求合併後寫入硬盤,這樣可以減少對硬盤I/O的次數,從而優化性能,但有可能導致非正常關閉NFS時數據丟失情況的發生。與此相反的選項是no_wdelay,但該選項與async選項一起使用時將不會生效,因爲async是基於wdelay實現對客戶端的一種響應功能。

客戶端使用普通用戶連接服務器時,默認情況下,如果客戶端使用的賬戶UID在服務器上也有相同的賬戶UID,則服務器將使用服務器本機上該UID賬戶進行讀寫操作,如果客戶端訪問服務器所使用的賬戶UID不在服務器上,則服務器自動將賬戶轉換爲nobody賬戶。此外,如果服務器端對共享屬性配置了all_squash選項,則服務器會根據anonuid選項的值,將所有的賬戶自動轉換爲匿名賬戶。

 

4.1.3 NFS高級設置

1. NFS所需服務

爲了在Centos6.3系統平臺上提供NFS服務,該操作系統平臺提供了很多有用的服務進程,以下進程在實現NFS共享的過程中需要互相協同合作。

1nfsNFS服務主程序

2nfslock:爲NFS文件系統提供鎖機制

3rpcbind:提供地址與端口註冊服務

4rpc.mountd:該進程被NFS服務用來處理NFSv2NFSv3mount請求

5rpc.nfsd:動態處理客戶端請求

6lockdlockd是內核線程,在服務器端和客戶端運行,用來實現NLM網絡協議,允許NFSv2NFSv3客戶端對文件加鎖

7rpc.statd:該進程實現網絡狀態監控(NSM)協議

8rpc.rquotad:該進程提供用戶配額信息

9rpc.idmapd:提供NFSv4名稱映射,/etc/idmapd.conf必須被配置

 

2. NFS客戶端配置

若想要客戶端主機可以訪問並使用服務器所提供的共享目錄,可通過mount命令掛載NFS共享,格式如下:

#mount-tnfs-o選項服務器主機:/服務器共享目錄/掛載本地目錄

具體掛載選項如下。

1Intr:當服務器宕機時允許中斷NFS請求

2nfsvers=version:指定使用哪個版本的NFS協議,version可以是234

3noacl:關閉ACL,僅與老版本操作系統兼容時使用

4nolock:關閉文件鎖機制,僅用來連接老版本NFS服務器

5noexec:在掛載的文件系統中屏蔽可執行的二進制程序

6port=num:指定NFS服務器端口,默認num0,此時如果遠程NFS進程沒有在rpcbind註冊端口信息,則使用標準NFS端口號(TCP 2049端口)

7rsize=num:設置最大數據塊大小調整NFS讀取數據的速度,num單位爲字節

8wsize=num:設置最大數據塊大小調整NFS寫入數據的速度,num單位爲字節

9tcp:使用TCP協議掛載

10udp:使用UDP協議掛載

 

3. 使用NFS命令工具

NFS軟件提供了很多便利的命令工具,這些工具可以幫我們在不重啓服務的情況下,應用新的共享設置,查看NFS連接狀態,查詢實時的端口註冊信息。

1exportfs命令

描述:當nfs服務啓動時,/usr/sbin/exportfs命令會自動啓動並讀取/etc/exports文件,通過控制rpc.mountd(如果使用NFSv2NFSv3)處理掛載請求,然後rpc.nfsd使文件系統對遠程可見,手動運行exportfs命令允許root在不重啓NFS服務的情況下選擇共享或取消部分共享目錄。

選項:-r重新讀取/etc/exports文件

-a全部共享或全部取消共享

-u取消共享,與-a一起使用取消全部共享

-v顯示詳細信息

 

2nfsstat命令

描述:查看NFS共享狀態

選項:-s,--server不使用該參數時,默認顯示服務器端和客戶端狀態,使用該參數後僅將顯示服務器端狀態

-c,--client僅顯示客戶端狀態

-n,--nfs僅顯示NFS狀態,默認顯示NFSRPC信息

-nn爲數字234,僅顯示NFS版本爲n的狀態信息

-m顯示掛載信息

-l以列表形式顯示信息

3rpcinfo命令

描述:生成RPC信息報表

選項:-m顯示指定主機rpcbind操作信息表

-p顯示指定主機RPC註冊信息

-s顯示指定主機所有註冊RPC的信息程序,不指定主機時默認顯示本機信息

 

4. 在防火牆後端運行NFS

NFS需要向rpcbind動態註冊端口信息,這將導致運行在防火牆後端的NFS服務器無法進行防火牆配置,因爲端口信息是動態隨機生成的,防火牆可以開放某些固定的端口允許客戶端進行連接,但無法設置隨機端口規則。允許客戶端訪問位於防火牆後面的NFS共享需要我們編輯/etc/sysconfig/nfs配置文件,配置固定的端口號。注意,端口號不可以指定爲已經被其他程序使用的,固定端口的配置選項如下。

MOUNTD_PORT=端口號:設置mountd程序端口號

LOCKD_TCPPORT=端口號:設置tcplockd程序端口號

LOCKD_UDPPORT=端口號:設置udplockd程序端口號

STATD_PORT=端口號:設置rpc.statd程序端口號

設置完端口號之後,還需要對防火牆進行設置,需要爲防火牆編寫策略允許所有端口的數據通信。此外,還需要爲NFS開啓TCPUDP2049端口,以及TCPUDP111端口,111端口被rpcbind所使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章