430 likes | 572 Views
第 26 章. NFS 伺服器. 前言. 在 Windows 中 , 使用者可以透過 網路上的芳鄰 , 將其他電腦分享出來的目錄設為 『 網路磁碟機 』 。如此一來 , 遠端電腦的檔案目錄 , 就如同是本機的一個磁碟機 , 存取起來就方便多了。而在 Linux 系統中 , 也有類似的功能 , 那就是 NFS (Network File System, 網路檔案系統 ) 服務。本章就要介紹如何在 Linux 上設定 NFS 伺服器 , 以達到資源共享的目的。. 本章提要. 26-1 NFS 簡介 26-2 安裝與啟動 NFS 伺服器
E N D
第 26 章 NFS 伺服器
前言 • 在 Windows 中, 使用者可以透過網路上的芳鄰, 將其他電腦分享出來的目錄設為『網路磁碟機』。如此一來, 遠端電腦的檔案目錄, 就如同是本機的一個磁碟機, 存取起來就方便多了。而在 Linux 系統中, 也有類似的功能, 那就是NFS (Network File System, 網路檔案系統) 服務。本章就要介紹如何在 Linux上設定 NFS 伺服器, 以達到資源共享的目的。
本章提要 • 26-1 NFS 簡介 • 26-2 安裝與啟動 NFS 伺服器 • 26-3 設定 NFS 伺服器的分享目錄 • 26-4 由用戶端掛載 NFS 的目錄
26-1 NFS 簡介 • NFS 是由昇陽電腦公司 (Sun Microsystems) 發展出來的分散式檔案系統。 • 可讓使用者透過連接的網路, 將其他台電腦所分享的檔案目錄, 掛載到自己的系統下。使用者在操作這些檔案或目錄時, 感覺就如同是儲存在本機上一樣。 • 分享出目錄的一方稱為 NFS 伺服端, 而使用的一端稱為 NFS 用戶端。
NFS 簡介 • 在下圖中, A 與 B 電腦皆設定了 NFS 伺服器 (稱為 NFS 伺服端), 並且分享出數個目錄。 • 而本機電腦則為 NFS 用戶端, 取用伺服端分享的資源, 例如 A 電腦的/mnt/cdrom 與 /home/tony 目錄, 分別被本機電腦掛載為 /dir1 與 /dir2, 而 B 電腦的 /var/ftp/pub 目錄, 被本機電腦掛載為 /dir3 目錄:
NFS 簡介 • 如此當使用者在本機上操作 /dir3 目錄, 例如執行 ls /dir3指令後, 所列出來的檔案, 實際上是存放在 B 電腦的 /var/ftp/pub 目錄中。因此若有需要, 我們可以將數台電腦的目錄, 掛載到本機的目錄下, 以方便作業。
26-2 安裝與啟動 NFS 伺服器 • NFS 的官方網站為 http://sourceforge.net/projects/nfs, 透過該網站可獲得有關 NFS 的詳細資訊, 也可以下載最新的版本。 • 目前, 大多數 Linux 發行版也都已經內附了 NFS 伺服器及用戶端程式。
安裝與啟動 NFS 伺服器 • 安裝 NFS • 檢查 RPC 程序是否已啟動 • RPC 未啟動的錯誤訊息 • 啟動 NFS 伺服器
安裝 NFS • 如果您在安裝系統時, 已經一併安裝了 NFS, 當然就不需要重新安裝了!如果不確定是否已安裝, 則請執行以下指令檢查:
安裝 NFS • 如果有顯示出上列套件的名稱, 則表示已經安裝 NFS 套件了。若沒有出現上列套件, 則請將 nfs-utils 套件所在的系統光碟放入光碟機, 掛載並切換到檔案所在的目錄下後, 依下列方式安裝:
檢查 RPC 程序是否已啟動 • 由於 NFS 是透過 RPC (遠端程序呼叫, Remote Procedure Call) 協定來存取遠端電腦的檔案, 因此系統中的 RPC 服務也必須啟動, NFS 伺服器才可以順利啟動。我們可以執行 rpcinfo -p指令來查看:
檢查 RPC 程序是否已啟動 • 啟動 NFS 伺服器後再執行 rpcinfo -p指令, 會列出更多的程序。 • 用 "rpcinfo -p 遠端主機名稱" 指令, 可查看遠端主機的 RPC 狀態。
RPC 未啟動的錯誤訊息 • 如果在執行 rpcinfo -p指令時, 看到下面的訊息, 則表示 RPC 服務沒有啟動: • 此時您有兩種方法可啟動 portmapper 程序:
RPC 未啟動的錯誤訊息 • 直接執行 /etc/rc.d/init.d/portmap start指令, 可指定現在立即啟動。 • 執行 chkconfig portmap on指令可設定開機時自動啟動。開機就會自動啟動了。
啟動 NFS 伺服器 • 安裝好 NFS 套件, 並啟動 portmapper 程序後, 接著就可以啟動 NFS 伺服器了。請如下操作:
啟動 NFS 伺服器 • 如要關閉 NFS 伺服器, 可執行 /etc/rc.d/init.d/nfs stop指令。若要重新啟動 NFS 伺服器, 則請執行 /etc/rc.d/init.d/nfs restart指令。 • 若想設定開機時自動啟用 NFS 服務, 可執行 chkconfig nfs on指令設定。
26-3 設定 NFS 伺服器 的分享目錄 • 26-3-1 設定分享的目錄 • 26-3-2 將設定的目錄分享出去 • 不加入 /etc/exports 也可以分享
26-3-1 設定分享的目錄 • 要設定 NFS 伺服器分享的目錄, 則需使用 /etc/exports 這個檔案來控制。 • 我們先看看此檔的內容:
設定分享的目錄 • 在 /etc/exports 檔中預設沒有分享任何目錄, 我們可以依自己的需要來設定。 • 此檔案的寫法有一定的格式, 格式如下: • 下列為常用的權限設定項目 (同時使用兩項設定時, 兩者間請以逗號區隔):
設定分享的目錄 • ro:設定權限為唯讀。 • rw:設定權限為可讀寫。 • root_squash:設定使用者以 root 帳號登入時, 會被指定為預設的特定使用者, 以避免系統被入侵。此為預設值。 • no_root_squash:與上項相反, 設定允許使用 root 帳號存取 (建議不要使用此選項)。
設定分享的目錄 • async:使用 async 選項時, 可增加檔案的讀寫效率, 但是遇到當機時容易造成檔案損毀。 • sync:與上項相反。若不使用 async 項目, 請記得加上此項權限設定, 否則稍後執行 exportfs -v 指令時會出現警告訊息。
設定分享的目錄 • 以下舉幾個例子, 以供參考: • /var/ftp/pub *(sync) 表示所有的主機皆可存取此目錄,權限為唯讀 (ro) • /var/ftp/pub *(rw,sync) 表示所有的主機可讀寫 (rw) • /var/ftp/pub shadow(rw,sync) 允許 shadow 主機讀寫
設定分享的目錄 • /var/ftp/pub shadow.flag.com.tw (ro,sync) 允許 shadow.flag.com.tw 主機唯讀 • /var/ftp/pub shadow(rw,sync) kogi(rw,sync) 允許 shadow 與 kogi主機皆可讀寫 • /var/ftp/pub 203.74.205.0/255.255.255.0(ro,sync) 分享給所有在203.74.205 子網路的主機, 權限為唯讀
設定分享的目錄 • /var/ftp/pub *.flag.com.tw(rw,sync) 允許所有 flag.com.tw 網域的主機可讀寫 • 若您使用主機名稱, 如 shadow, 而不是如 shadow.flag.com.tw 的完整網址 , 需確定可在 DNS 或 /etc/hosts 查到其對應的 IP。
26-3-2 將設定的目錄分享出去 • 現在, 請依照您的需要, 設定分享的目錄。底下是筆者用來示範的例子:
將設定的目錄分享出去 • 編輯完 /etc/exports 檔之後, 還需要執行 exportfs指令, 處理剛才的設定。 • 請如下操作:
將設定的目錄分享出去 • 如果在轉換的過程中出現錯誤訊息, 則請仔細檢查是否語法有錯, 或是不該空格的地方多出了空格。只有當所有訊息都正確時, 才表示設定完成。 • 如果 /etc/exports 檔有誤或未執行 exportfs 指令轉換, 則在使用 mount指令掛載時, 會出現 "Permission denied" 的訊息。
將設定的目錄分享出去 • exportfs指令的用處是維護 NFS 分享的目錄:當您執行此指令時, 系統會將 /etc/exports 的內容寫到 /var/lib/nfs/etab 檔中。 • 而用戶端要掛載伺服端的目錄時, NFS 伺服器會去查看 etab 檔的內容, 以決定該目錄被用戶端掛載後的限制。
不加入 /etc/exports 也可以分享 • 如果臨時要分享一個目錄給某一台電腦, 可以直接使用 exportfs指令, 而不需重新編寫/etc/exports 檔。例如: • 不過此方法是屬於暫時性的, 若是經常需要分享此目錄, 最好還是加到 /etc/exports 檔中。
26-4 由用戶端掛載 NFS 的目錄 • 26-4-1 查看 NFS 伺服器分享的目錄 • 26-4-2 掛載遠端目錄到本機檔案系統 • Time out • 26-4-3 開機時自動掛載遠端目錄
26-4-1 查看 NFS 伺服器 分享的目錄 • 在掛載目錄之前, 我們要先知道某個 NFS 伺服器分享出了哪些目錄, 以及允許哪些電腦進入。在 NFS 套件中包含了 showmount這個指令可供查看 (以下使用之前的 /etc/exports 範例來做示範):
查看 NFS 伺服器分享的目錄 • 記得將 NFS 伺服端的主機名稱加入 /etc/hosts 檔中, 或要能在指定的 DNS 伺服器上查到。 • 如果您尚未設定好 NFS 伺服器, 可以先使用網路上已知有提供 NFS 服務的主機來測試。在此筆者以台大電機與 Red Hat公司的 FTP 站為例來操作, 示範有提供與沒提供 NFS 服務的差別:
26-4-2 掛載遠端目錄 到本機檔案系統 • 使用 showmount指令查出 NFS 伺服器所分享的目錄與允許進入的主機之後,即可使用 mount指令將該目錄掛載到本機的目錄下:
掛載遠端目錄到本機檔案系統 • 掛載後, 就可以使用一般操作本機目錄的指令, 來使用掛載進來的目錄了。不過一定要記得, 用戶端是否可以在此目錄中存檔, 或是只能讀取, 是在伺服端分享目錄時, 便已決定的。 • 如果不想再使用掛載進來的目錄時, 也可以執行 umount指令卸載:
Time out • 如果在執行 mount指令時, 出現 "RPC: Time out" 的訊息, 則表示伺服端的 portmapper 或 nfs等程序可能出了問題。請確認執行無誤後, 再重新掛載一次。您可執行 "rpcinfo -u遠端主機名稱 程序名稱" 指令查驗, 例如:
26-4-3 開機時自動掛載遠端目錄 • 前面講的掛載方法, 是手動輸入指令將遠端目錄掛載到用戶端的目錄。如果想在用戶端一開機時, 即自動掛載遠端的目錄, 則必須將掛載的設定寫在/etc/fstab 檔中:
開機時自動掛載遠端目錄 • 如此當用戶端開機時, 即可在開機的過程中按空白鍵, 看到掛載 NFS 檔案系統的訊息:
開機時自動掛載遠端目錄 • 如果順利掛載遠端目錄, 上面箭頭所指的步驟很快就會通過, 並顯示出 [確定] 字樣。若是掛載不進來, 則會在此處停一會兒, 然後顯示 "掛載 NFS 檔案系統 : RPC : 程式沒有註冊" 或是其他的錯誤訊息。 • 如此就知道掛載不成功了, 表示遠端的 NFS 伺服器可能出了問題。
開機時自動掛載遠端目錄 • 開機掛載完成後, 使用者只要一登入系統, 就可以直接取用遠端分享出來的目錄與檔案, 而不需要執行 mount指令了。 • 設定 NFS 伺服器的好處是, 可以將資源用網路目錄的方式分享出去。某些學校有提供利用 NFS 伺服器來安裝 Linux 系統的服務, 雖然這樣會花費較多的傳輸時間, 但也算是一種不用光碟安裝 Linux 的方法。