NFS v4 的安裝與使用方式

NFSv4 就是 NFS 的第四版,他與上一代的 NFSv3 有些差異,若是沒有注意到他更動的地方,可能會被他搞得一頭霧水(筆者就是這樣),所以在這裡特別記錄一下,免得自己以後忘記,又要再重頭來研究一遍,Open Source 的東西就是更新很快,是很大的優點,也是很大的缺點,每隔沒多久就要學新的東西,累死老人家。

這裡以 Ubuntu Linux 為例,示範如何安裝 NFSv4 的 Server 與 Client,並比較 NFSv4 與 NFSv3 的差異。

NFS Server

首先安裝 NFS Server,在 apt 中有好幾個 nfs 相關的套件可以選擇,不用一般都是用 nfs-kernel-server,因為這個套件效能比較好:
sudo apt-get install nfs-kernel-server

接著設定要 export 出去的資料夾,傳統的做法是直接在 /etc/exports 設定每一個要 export 的路徑就可以了,但是從 NFSv4 開始有些不一樣,所有被 export 出去的資料都會被整合進一個單一的檔案系統中,然後再一起 export 出去,我們直接看範例比較清楚。

假設我們要 export /home/users 與 /usr/local/data 兩個資料夾,首先就是要將這兩個分開的資料夾以 bind 的方式綁在一個虛擬的檔案系統中,一開始先建立一個作為虛擬根目錄的目錄:
mkdir /export
然後再將要 export 的目錄綁進來這個目錄中:
mkdir /export/users
mkdir /export/data
mount --bind /home/users /export/users
mount --bind /usr/local/data /export/data

這個設定在重新開機後,就會不見,建議直接寫進 /etc/fstab 中,一勞永逸,即在 /etc/fstab 中加入兩行:
/home/users /export/users none bind 0 0
/usr/local/data /export/data none bind 0 0

這樣就會將 /home/users 與 /usr/local/data 兩個資料夾分別掛載至 /export/users 與 /exports/data,如以一來就建立一個虛擬的檔案系統。

更改 /etc/default/nfs-kernel-server,將 NEED_SVCGSSD 設為 no:
NEED_SVCGSSD=no

更改 /etc/default/nfs-common,將 NEED_IDMAPD 設為 yes,NEED_GSSD 設為 no:
NEED_IDMAPD=yes
NEED_GSSD=no

接著設定 /etc/exports
/export 192.168.1.0/24(rw,fsid=0,no_subtree_check,sync)
/export/users 192.168.1.0/24(rw,nohide,insecure,no_subtree_check,sync)
/export/data 192.168.1.0/24(rw,nohide,insecure,no_subtree_check,sync)

第一行是設定 /export 為根錄目(fsid=0 即是設定為根目錄的意思),另外將 /export/users 與 /export/data 也開放給 192.168.1.0/24 這個網域的所有機器。

接著重新啓動 NFS Server 與 idmapd:
sudo /etc/init.d/nfs-kernel-server restart
sudo start idmapd # or...
sudo service idmapd restart


NFS Client

NFS 的 Client 端要先安裝 nfs-common 套件:
sudo apt-get install nfs-common
再設定 /etc/default/nfs-common,將 NEED_IDMAPD 設為 yes:
NEED_IDMAPD=yes
(重新)啟動 idmapd:
# start idmapd # or...
# service idmapd restart

接下來就可以掛載了,最簡單的方式就是直接將整個虛擬檔案系統掛上來,一次解決:
sudo mount -t nfs4 -o proto=tcp,port=2049 nfs-server:/ /mnt
其中 nfs-server 要換成自己的 NFS Server 的 IP 位址(建議用 IP 位址)或是 hostname,而 /mnt 就是在 Client 上要掛載的位置,而這裡根 NFSv3 不一樣的地方在於指定 Server 上的目錄是根目錄(/),這個根目錄就會對應到 NFS Server 上 /etc/exports 設定為根目錄的位置,以這裡來說就是對應到 /export。

若是測試沒問題,就可以寫入 /etc/fstab 了,在 /etc/fstab 加入:
nfs-server:/ /mnt nfs4 _netdev,auto 0 0


參考資料:
https://help.ubuntu.com/community/NFSv4Howto
https://help.ubuntu.com/community/SettingUpNFSHowTo
本站已經搬家了,欲查看最新的文章,請至 G. T. Wang 新網站