這裡以 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
沒有留言:
張貼留言