Ubuntu 上使用 NFS server with ZFS

NFS server是由Sun 這家公司發展出來的系統,主要目的是透過網路讓不同的系統(Unix-like)、不同的機器可以透過網路共享、掛載同一個目錄。詳細內容可以參考鳥哥NFS伺服器

這邊由於我是要透過ZFS這個File System來跟NFS做結合,所以簡單紀錄Ubuntu快速安裝NFS Server;至於ZFS改天有空再上來介紹安裝與使用。

================================================================
                           Server 方 假設IP為192.168.1.99
================================================================
首先開啟command-line 或是Ctrl+Alt+T開啟指令模式輸入:
      #sudo apt-get install -y nfs-kernel-server

安裝NFS Server時會連同安裝NFS的Client 套件(nfs-common)。

安裝後會從提示看到並未啟動NFS Server,NFS本身透過daemon來做啟動。
至於要分享的資料夾由於只做測試用,所以自己簡單mkdir一個來測試
     #mkdir test_nfs

那由於我們是Server要告訴Server我們要分享的是test_nfs這個資料夾而設定檔案
就放在/etc/exports這個檔案內。於是我們使用vim 來修改內容。
    #vim /etc/exports

開啟後上方有簡單的說明檔若想要針對特殊權限或是針對某個IP在google一下吧。
這個說明檔很簡單的跟你說:
--------------------------------------------------------------------------
/srv/home             hostname1(rw,sync,no_subtree_check)
-------------            -----------------------------------------
你要分享資料     rw/ro 這個很好理解吧
夾的路徑             sync表示一旦有修改就馬上寫入
                             no_subtree_check我就沒查了 XD

所以我這邊的設定就是:
------------------------------------------------------------------------
/home/clover/test_nfs          *(rw,sync,no_subtree_check)
------------------------------------------------------------------------

接著啟動NFS Server:
    #/etc/init.d/nfs-kernel-server   start

沒問題的話會看到*Starting NFS kernel daemon訊息。接著我們下指令看看剛剛設定
的分享有沒正確被啟動:
   #showmount -e localhost

正常的話會看到:
   Export list for localhost :
  /home/clover/test_nfs   *

表示Server啟動並且有跟著我們的設定。

=============================================================
                                  Client 方 假設IP為 192.168.1.100
=============================================================
Client 端必須安裝NFS Client程式,當然你可以直接安裝NFS Server因為安裝Server
就會連帶安裝Client程式,這邊為了示範所以我們就只安裝Client 程式
   #sudo apt-get install -y nfs-common

安裝完後我們連線到Server端看看有哪些可分享掛載的資料夾:
   #showmount -e  192.168.1.99  <=Server的ip 

接著會看到我們剛剛在Server設定的資料夾路徑,所以我們Client確認有這個資料夾
就能將它mount 起來嚕~ 這邊我們先mkdir 一個資料夾掛載用:
   #mkdir client_nfs      <=先生一個資料夾做掛載用
   #mount -t nfs  192.168.1.99:/home/clover/test_nfs   /home/clover2/client_nfs

接著就能從Client 共享Server端的test_nfs這個資料夾了。

其實NFS Server還可以設定只有某個IP才能掛載跟使用者權限的功能,這方面礙於
本身只是要做測試用就沒特別去看/etc/export 這個檔案的設定值了,有興趣的朋友
在自己Google一下吧。



==============================================================
                               ZFS share via NFS
==============================================================
以下為個人使用ZFS 透過NFS做分享的紀錄,沒裝ZFS的朋友可以略過嚕~~

zfs 做pool之後可以直接使用參數 "sharenfs" 直接透過NFS Server分享。
假設我的zfs pool 底下有個 test  volume要分享就可以直接輸入:
  # zfs set sharenfs="rw@=192.168.1.100"   pool/test 

這樣子就能只給192.168.1.100這台機器分享。但是如果是下:
  # zfs set sharenfs=on pool/test

則能連到NFS Server這台電腦的機器都能掛載使用。

注意:一旦使用sharenfs這個參數,則這個volume的屬性"share"就會自動被開啟
若希望開機之後ZFS會自動mount & share這個volume 記得修改/etc/default/zfs這個
檔案,將ZFS_MOUNT="NO" 改成Yes  跟ZFS_SHARE="NO" 改成Yes,這樣子
開機就會自動掛載。


But :在某些時候因為開機程式啟動順序問題,導致設定後開機也不會自動掛載
與Share,解法有兩種:
1.  去/etc/rc2.d/ 修改link名字前方的SXX (XX為數字),把數字改大,大於NFS Server
      啟動就可以了,主要是因為ZFS share的時候,NFS Server還沒啟動所以就沒用

2.   直接在/etc/init.d/rc.local 內最後先加入 zfs mount -azfs share -a就能在開機後自己
      掛載與Share了

留言