NFS服務

 

一、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選項告訴操作系統是此掛載是一個網絡設備。

 


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