2013年6月30日 星期日

用「AutoFS 服務」改善 NFS 連線的方便性

Linux 中的 NFS 的功用就如 Windows 中的『網路芳鄰』一樣,用以『將硬碟目錄分享給其它電腦』,或是說『讓電腦可透過網路使用其它電腦的硬碟、檔案』。NFS 有很多設定的方法,可應用在不同的連線分享之用,本文僅針對筆者常用的使用情況之設定做說明。
  • 平時工作用的電腦(「客戶機」)較常開機,偶而透過網路使用儲存在「伺服器」(或提供檔案分享的電腦)的資料。
  • 「伺服器」只有需要使用時才開機,平常處於關機狀態以節約電力。
  • 工作中需要使用「伺服器」的檔案時,只要開啟「伺服器」而不需將「客戶機」重開機,或是下連線命令。
    • NFS 若設定為『固定連線』,「客戶機」就必須等「伺服器」開妥、上線後才可正常開機。
    • 需要存取檔案時會『自動連線』,不會因「伺服器」未開機而「客戶機」也不能開機。
總而言之,就是『需要時會自動連線』、『不需要時不影響正常使用』。整理出來的安裝、設定的步驟分為:「伺服器」端的設定、「客戶」端的安裝及設定兩部份。

一、「伺服器」端的分享設定(文字命令介面)

NFS 是 Linux 電腦間常見的檔案分享機制,幾個常見的 Linux 分支多會預設安裝 NFS,包含「伺服器」及「客戶端」所需的套件。因此,在這個步驟中是只有設定過程,而不需再安裝套件(:「圖型化用戶介面」的設定,以後有空再寫)。

1. 編輯分享設定

「伺服器」的分享是以『分享目錄』為起點,在其下的子目錄都會一同分享,但是能否使用受該『子目錄』或『檔案』的使用模式所限制。NFS 是根據目錄的「群組屬性」及用戶所隸屬的「群組」共同決定目錄及檔案的「使用權」。若無「使用權」,即使連線後也不能查看或存取檔案。
  切換到 root 權限,使用習慣的文字編輯器開啟 /etc/exports 這個設定檔,內容為:
/home/Data   192.168.10.0/24(ro,sync)
/home/Media  192.168.10.0/24(ro,sync)
/home/Upload 192.168.10.0/24(ro,sync)
其中 /home/Data 等為分享的目錄,192.168.10.0/24 是可建立連線的電腦主機的前三個位元組的網路位址為 192.168.10(即只分享給同一子網域的電腦),(ro,sync) 是目錄分享的屬性(ro 是唯讀,rw 是可讀寫,sync 是確保資料寫入完成)。若有多個目錄要分享,就再多加幾行。

2. 開啟「防火牆」的通訊埠

必須在「NFS 伺服器」的「防火牆」開幾個「通訊埠」,供「其它電腦」連線使用。需要開啟的「通訊埠」有 nfs (tcp 2049)、portmap (或稱為 rpc-bind,tcp 111),這樣一來「其它電腦」的連線需求才不會被「防火牆」擋掉。詳細步驟請參考:
就不在此文贅述,請需要的讀者點選連結過去參考。

3. 啟動 NFS 伺服器

完成以上設定後,就可以啟動「NFS 伺服器」了,
[root@Core-i7 ~]# systemctl start nfs-server.service
在測試初期,可以用這個命令查詢「NFS 伺服器」啟動過程中的訊息,
[root@Core-i7 ~]# systemctl status nfs-server.service
萬一設定錯誤,可參考「NFS 伺服器」啟動過程中的訊息修改設定,再重新啟動。但是,常見的錯誤並不是啟動失敗,而是「其它電腦」無法順利連線。這時就要用這個命令,先『關閉』、再『啟動』「NFS 伺服器」,
[root@Core-i7 ~]# systemctl restart nfs-server.service
當設定都正確,「其它電腦」也可以順利連線後。最好再將「NFS 伺服器」設定為『開機時自動啟動』,方便將來開機後的連線使用,
[root@Core-i7 ~]# systemctl enable nfs-server.service
下次開機就會自動啟動。

:在 Fedora 14 以前的版本,以上幾個命令不太一樣
[root@Core-i7 ~]# service nfs start
[root@Core-i7 ~]# service nfs status
[root@Core-i7 ~]# service nfs restart
[root@Core-i7 ~]# chkconfig --level 35 nfs on

二、「客戶」端 AutoFS 的安裝及其設定

一般 Linux 常用的 mount 命令當然可以連結 NFS 伺服器,但是未開機或斷線後再連線都很麻煩。使用「AutoFS 服務」就可以解決這個問題。在「客戶端」使用「AutoFS 服務」需要一些安裝和設定步驟,其中安裝是最簡單的;而設定就稍微複雜些,不過只要注意一些細節(文中會強調說明)也不會太難。另外,最後再提供一個使用的小技巧,讓「AutoFS 服務」的使用更方便。

1. 安裝 autofs

安裝 autofs 的命令為:
[root@Celeron-D ~]# yum install autofs
經過一小段時間的等待,就可以進行下一階段的設定步驟。

2.「客戶端」的自動連線設定

「AutoFS 服務」自動連線的設定主要有兩個檔案:/etc/auto.master 和 /etc/auto.nfs。前者是安裝後就有的『AutoFS 的主設定檔』,而後者是針對 NFS 的自動連線而新增加的設定檔。(注意:新設定方法,請參考文末之後記說明)
  首先切換到 root 權限,用自己熟悉的文字編輯器編輯 /etc/auto.master 這個檔案。在『/misc /etc/auto.misc』這列文字下,再增加一列:
/nfs /etc/auto.nfs  --timeout 60
這會將根據 /etc/auto.nfs 這個檔案的內容建立的連線,即將「NFS 伺服器」所分享的目錄掛載到 /nfs 這個目錄之下。而參數『--timeout 60』則是設定為當 60 秒鐘內都未使用掛載的目錄時,會自動斷線以減少雙方電腦連線的負載。
  接著,再編輯 /etc/auto.nfs 這個新檔,筆者習慣用『修改其它檔案』並『另存新檔』。將舊檔的設定用『#』註解掉,再加入新設定
Data   -rw,soft,intr,rsize=8192,wsize=8192 192.168.10.17:/home/Data
Media  -rw,soft,intr,rsize=8192,wsize=8192 192.168.10.17:/home/Media
Upload -rw,soft,intr,rsize=8192,wsize=8192 192.168.10.17:/home/Upload
這些設定會將「NFS 伺服器」所分享的目錄 /home/Data、/home/Media 和 /home/Upload 這三個目錄掛載在「本地電腦」的 /nfs/Data、/nfs/Media 和 /nfs/Upload 三個目錄。使用者存從這三個目錄存取檔案時,NFS 會將這些存取需求送至「NFS 伺服器」。
  最後,當然是將 AutoFS 設定為『開機時自動啟動』,
[root@Celeron-D ~]# systemctl enable autofs.service
下次啟動電腦時,「AutoFS 服務」就會自動啟動,當要使用「NFS 伺服器」且伺服器在開機狀態時,就會自動建立連線,並將目錄自動掛載。

:/nfs 這個目錄不用事先建立,「AutoFS 服務」會自動幫你建立它。

三、使用經驗分享

未使用時未能自動連線,主因「AutoFS 服務」連線後才會出現「NFS 伺服器」分享的目錄,但是,
使用者看不到目錄又如何點選該目錄呢?
使用 ln 將這些分享目錄建立鏈結到另一個目錄,鏈結的目錄不會消失,使用者點選鏈結目錄,就會觸發「AutoFS 服務」自動連線。在 root 權限下這幾個命令
ln -s /nfs/Data   /mnt/Data
ln -s /nfs/Media  /mnt/Media
ln -s /nfs/Upload /mnt/Upload
將這些『連線時才會出現的目錄』用鏈結掛在另一個『不會消失』的目錄,當要自動連線時,點選這幾個『不會消失』的目錄,「AutoFS 服務」就會嘗試建立 NFS 連線。

後記:


已測試版本:

  • Fedora: 14, 17, 18

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)