一、NFS簡介
NFS是NetworkFile System即網絡文件系統,NFS在文件傳送或過程中依賴於RPC協議。RPC是RemoteProtocol Call即遠程過程調用,RPC主要由部分功能完成,一部分功能由本地程序完成,另一部分功能由遠程主機上的函數完成。NFS工作於TCP和UDP的2049端口,RPC工作TCP的111端口。
二、安裝NFS服務
NFS的安裝直接通過yum就可以了,它需要安裝兩個軟件包,通常情況下在安裝系統時就默認包裝的。
nfs-utils-* #基本的NFS命令與監控程序
rpcbind-* #支持安全NFS RPC服務的連接,在Centos 6系統中RPC爲rpcbind.
[root@Bisc-lab01 ~]# rpm -qa|egrep"nfs|rpcbind" nfs-utils-1.2.3-54.el6.x86_64 rpcbind-0.2.0-11.el6.x86_64 nfs-utils-lib-1.1.5-9.el6.x86_64 nfs4-acl-tools-0.3.3-6.el6.x86_64
三、NFS守護進程
nfsd:它是基本的NFS守護進程,主要功能是管理客戶端是否能夠登錄服務器;
mountd:它是RPC安裝守護進程,主要功能是管理NFS的文件系統。當客戶端順利通過nfsd登錄NFS服務器後,在使用NFS服務所提供的文件前,還必須通過文件使用權限的驗證。它會讀取NFS的配置文件/etc/exports來對比客戶端權限。
idmapd:主要功能是進行端口映射工作。當客戶端嘗試連接並使用RPC服務器提供的服務(如NFS服務)時,rpcbind會將所管理的與服務對應的端口提供給客戶端,從而使客戶可以通過該端口向服務器請求服務。
四、啓動NFS服務
(1)啓動NFS服務
在啓NFS服務之前一定要行啓用rpcbind服務,因爲NFS要向rpcbind註冊。
[root@Bisc-lab01 ~]# service rpcbind start Starting rpcbind: [ OK ] [root@Bisc-lab01 ~]# service nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ]
(2)exprotfs命令
exportfs:維護exports文件導出的文件系統表的專用工具:
export -ar: 重新導出所有的文件系統
export -au: 關閉導出的所有文件系統
export -u FS: 關閉指定的導出的文件系統
五、NFS的配置
NFS服務的配置文件在/etc/exports,這個配置文件比較的簡單,格式如下:
directory(or file system) client1(option1,option2) client2(option1, option2)
文件系統指NFS服務需要共享給客戶端的目錄
客戶端指網絡中可以訪問NFS服務的主機,可以使用IP、FQDN或DOMAIN、NETWORK
(1)常用選項
有幾個常用的選項可以對 NFS 實現進行定製。這些選項包括:
secure: 這個選項是缺省選項,它使用了 1024 以下的 TCP/IP 端口實現 NFS 的連接。指定 insecure 可以禁用這個選項。
rw: 這個選項允許 NFS客戶機進行讀/寫訪問。缺省選項是隻讀的。
async: 這個選項可以改進性能,但是如果沒有完全關閉 NFS 守護進程就重新啓動了 NFS 服務器,這也可能會造成數據丟失。
no_wdelay: 這個選項關閉寫延時。如果設置了 async,那麼 NFS 就會忽略這個選項。
nohide: 如果將一個目錄掛載到另外一個目錄之上,那麼原來的目錄通常就被隱藏起來或看起來像空的一樣。要禁用這種行爲,需啓用 hide 選項。
no_subtree_check: 這個選項關閉子樹檢查,子樹檢查會執行一些不想忽略的安全性檢查。缺省選項是啓用子樹檢查。
no_auth_nlm: 這個選項也可以作爲insecure_locks 指定,它告訴 NFS 守護進程不要對加鎖請求進行認證。如果關心安全性問題,就要避免使用這個選項。缺省選項是 auth_nlm 或 secure_locks。
mp (mountpoint=path): 通過顯式地聲明這個選項,NFS 要求掛載所導出的目錄。
fsid=num: 這個選項通常都在NFS 故障恢復的情況中使用。如果希望實現 NFS 的故障恢復,請參考 NFS 文檔。
(2)用戶映射
通過 NFS 中的用戶映射,可以將僞或實際用戶和組的標識賦給一個正在對 NFS 捲進行操作的用戶。這個 NFS 用戶具有映射所允許的用戶和組的許可權限。對 NFS 卷使用一個通用的用戶/組可以提供一定的安全性和靈活性,而不會帶來很多管理負荷。
在使用 NFS 掛載的文件系統上的文件時,用戶的訪問通常都會受到限制,這就是說用戶都是以匿名用戶的身份來對文件進行訪問的,這些用戶缺省情況下對這些文件只有只讀權限。這種行爲對於 root 用戶來說尤其重要。然而,實際上的確存在這種情況:希望用戶以 root 用戶或所定義的其他用戶的身份訪問遠程文件系統上的文件。NFS 允許指定訪問遠程文件的用戶——通過用戶標識號(UID)和組標識號(GID),可以禁用正常的 squash 行爲。
用戶映射的選項包括:
root_squash: 這個選項不允許 root 用戶訪問掛載上來的 NFS 卷。
no_root_squash: 這個選項允許 root 用戶訪問掛載上來的 NFS 卷。
all_squash: 這個選項對於公共訪問的 NFS 捲來說非常有用,它會限制所有的 UID 和 GID,只使用匿名用戶。缺省設置是 no_all_squash。
anonuid和 anongid: 這兩個選項將匿名 UID和 GID 修改成特定用戶和組帳號。
[root@Bisc-lab01 ~]# cat /etc/exports /share 172.16.9.0/16(rw,sync,no_root_squash)
六、客戶端掛載
(1)查看NFS服務器端共享的文件系統
showmout-e NFSSERVER_IP
[root@Bisc-lab01 ~]# showmount -e172.16.9.20 Export list for 172.16.9.20: /share 172.16.9.0/16
(2)掛載NFS文件系統
mount-t nfs SERVER:/path/to/sharedfs /path/to/mount_point
[root@Bisc-lab01 ~]# mount -t nfs172.16.9.20:/share /mnt [root@Bisc-lab01 ~]# mount|tail -1 172.16.9.20:/share on /mnt type nfs(rw,vers=4,addr=172.16.9.20,clientaddr=172.16.9.20)
(3)設置開機自動掛載NFS
只需要在/etc/fstab文件中添加如下格式的一行:
SERVER:/PATH/TO/EXPORTED_FS /mount_point nfs defaults,_netdev 0 0
[root@Bisc-lab01 ~]# tail -1 /etc/fstab 172.16.9.20:/share /mnt nfs defaults,_netdev 0 0
注意:如果不加_netdev選項時,當NFS服務器先關時時,然後在關閉客戶端機器,客戶端機器是無法關機的,因爲客戶端機要卸載NFS目錄,NFS服務器無法給客戶端響應,此時客戶端就處於一直等待的狀態,或者手動的卸載目錄就能完成關閉。_netdev選項告訴操作系統是此掛載是一個網絡設備。