
透過網路配送和共享檔案系統在公司環境中極為常見。這種成熟的網路檔案系統 (NFS) 可與 NIS (黃頁通訊協定) 搭配使用。如需可與 LDAP 搭配使用並且還要使用 Kerberos 的更安全通訊協定,請選擇 NFSv4。若與 pNFS 結合使用,可以消除效能瓶頸。
NFS 與 NIS 攜手能讓使用者對網路有清楚的瞭解。可以使用 NFS 透過網路配送任意檔案系統。如果安裝妥當,使用者將會發現,不論他們目前使用的是哪個終端機,他們始終處於同一個環境中。
原則上,可以只使用 IP 位址來進行所有的輸出。為了避免逾時,您需要有正常運作的 DNS 系統。即使為了記錄目的,DNS 也必不可少,因為掛接的精靈執行的是反向查詢。
YaST 模組中使用了下列詞彙。
由 NFS 伺服器輸出的目錄,用戶端可將該目錄整合到其系統中。
NFS 用戶端是指透過「網路檔案系統」通訊協定使用 NFS 伺服器提供之 NFS 服務的系統。TCP/IP 通訊協定已整合到 Linux 核心中;不需要安裝任何其他軟體。
NFS 伺服器向用戶端提供 NFS 服務。執行中的伺服器依賴於下列精靈運作:nfsd (工作者)、idmapd (使用者及群組名稱至 ID 的映射,反之亦然)、statd (檔案鎖定) 及 mountd (掛接要求)。
NFSv3 是第 3 版實作,即支援用戶端驗證的「舊」無狀態 NFS。
NFSv4 是新版 (第 4 版) 實作,支援透過 kerberos 的安全使用者驗證。NFSv4 只需要一個連接埠,因此比 NFSv3 更適合在防火牆後的環境中使用。
協定的定義如 http://tools.ietf.org/html/rfc3530 所示。
平行 NFS,NFSv4 的通訊協定延伸。所有 pNFS 用戶端都可以直接存取 NFS 伺服器上的資料。
在進行預設安裝時並不會安裝 NFS 伺服器軟體。如果依第 26.3 節「設定 NFS 伺服器」 中所示設定 NFS 伺服器,系統會自動提示您安裝必要的套件。或者,使用 YaST 或 Zypper 安裝套件 nfs-kernel-server。
NFS 與 NIS 一樣,都是主從式系統。但一台機器可同時扮演這兩種角色 — 它可透過網路提供檔案系統 (輸出),也可以從其他主機掛接檔案系統 (輸入)。
SUSE Linux Enterprise 系統不支援在輸出伺服器上本地掛接 NFS 磁碟區,所有企業級 Linux 系統也不支援。
NFS 伺服器可透過 YaST 來設定,也可以手動設定。若要進行驗證,還可以將 NFS 與 Kerberos 結合使用。
使用 YaST,將您網路中的主機轉變為 NFS 伺服器,此類伺服器可將目錄和檔案輸出到擁有其存取權的所有主機或一個群組下的全體成員。因此,伺服器無需在每個主機上本地安裝應用程式,也可以提供應用程式。
若要設定這樣的伺服器,請執行下列步驟:
啟動 YaST 並選取 › ;請參閱圖形 26.1 「NFS 伺服器組態工具」。系統可能會提示您安裝其他軟體。
啟用選項圓鈕。
如果系統上的防火牆 (SuSEfirewall2) 處於使用中狀態,請核取。YaST 會啟用 nfs 服務來調整其組態以使其適用於 NFS 伺服器。
檢查是否要。如果您停用 NFSv4,YaST 將只支援 NFSv3 和 NFSv2。
如果選取 NFSv4,請另行輸入適當的 NFSv4 網域名稱。
請確定該名稱與存取此特定伺服器的 NFSv4 用戶端之 /etc/idmapd.conf 檔案中的一個名稱相同。此參數適用於 idmapd 精靈,而此精靈在支援 (伺服器和用戶端二者的) NFSv4 時是必要的。如果您沒有任何特殊需求,則請讓它維持為 localdomain (預設)。
若您需要安全存取伺服器,請按一下。先決條件是您的網域中安裝有 Kerberos,且伺服器和用戶端都可進行 Kerberos 驗證。按繼續執行下一個組態對話方塊。
按一下對話方塊上半部分中的以輸出目錄。
如果您尚未設定允許的主機,系統會自動彈出另一個對話方塊,可讓您輸入用戶端資訊及選項。輸入主機萬用字元 (通常您可以保留預設設定不變)。
有四種主機萬用字元類型可讓您針對各主機進行設定:單一主機 (名稱或 IP 位址)、網路群組、萬用字元 (例如 * 摽是所有機器都可存取伺服器) 以及 IP 網路。
如需這些選項的詳細資訊,請參閱輸出手冊頁。
按一下以完成組態。
NFS 輸出服務的組態檔案為 /etc/exports 和 /etc/sysconfig/nfs。除了這些檔案之外,NFSv4 伺服器組態還需要 /etc/idmapd.conf。若要啟動或重新啟動服務,請執行 systemctl restart nfsserver.service 指令。如果已在 /etc/sysconfig/nfs 中設定 NFSv4,還會啟動 rpc.idmapd。NFS 伺服器需依賴執行的 RPC 埠對應程式。因此,它還會啟動或重新啟動該埠對應程式服務。
NFSv4 是 SUSE Linux Enterprise Server 上可用的最新版 NFS 通訊協定。現在,針對 NFSv4 輸出的目錄設定方法與 NFSv3 相同。
在 SUSE Linux Enterprise Server 11 舊版本上,會將 BIND 強制掛接於 /etc/exports 中。現在仍支援此方式,但已有了取代方案。
/etc/exports 檔案包含一份項目清單。每一個項目都指出一個共享的目錄,並記錄它的共享方式。/etc/exports 中的典型項目會包含:
/shared/directory host(option_list)
例如:
/export/data 192.168.1.2(rw,sync)
這裡使用了 IP 位址 192.168.1.2,以識別允許的用戶端。您也可以使用主機的名稱以及指向一組主機 (*.abc.com、* 等) 或網路群組 (@my-hosts) 的萬用字元。
如需所有選項及其意義的詳細說明,請參閱 man 頁面 exports (man exports)。
/etc/sysconfig/nfs 檔案包含一些決定 NFSv4 伺服器精靈行為的參數。NFS4_SUPPORT 參數必須設定為 yes。NFS4_SUPPORT 決定 NFS 伺服器是否支援 NFSv4 輸出和用戶端。
Linux 機器的所有使用者都有名稱和 ID。idmapd 會針對伺服器接收的 NFSv4 要求進行名稱和 ID 的對應,然後對用戶端發出回覆。此動作必須同時在 NFSv4 的伺服器和用戶端上執行,因為 NFSv4 的通訊中只使用名稱。
對於可能使用 NFS 來共用檔案系統的機器,請確定有一個統一的方式來為各機器之間的使用者指定使用者名稱和 ID (uid)。您可以透過 NIS、LDAP 或您網域中的任何統一網域驗證機制來達成這個目的。
在用戶端和伺服器兩端的 /etc/idmapd.conf 檔案中,Domain 參數必須設定為相同的值。如果您不確定,請讓伺服器和用戶端檔案中的網域保持為 localdomain。我們在此提出一個組態檔案的例子,如下所示:
[General] Verbosity = 0 Pipefs-Directory = /var/lib/nfs/rpc_pipefs Domain = localdomain [Mapping] Nobody-User = nobody Nobody-Group = nobody
如需更多資訊,請參閱 idmapd 與 idmapd.conf 的手冊頁 (man idmapd 與 man idmapd.conf)。
對 /etc/exports 或 /etc/sysconfig/nfs 進行變更後,請啟動或重新啟動 NFS 伺服器服務。
systemctl restart nfsserver.service
變更 /etc/idmapd.conf 之後,重新載入組態檔案︰
killall -HUP rpc.idmapd
如果 NFS 服務需要在開機時啟動,請執行︰
systemctl enable nfsserver.service
若要為 NFS 使用 Kerberos 驗證,則 GSS 安全性必須啟用。在初始 YaST NFS 伺服器對話方塊中選取。您必須有一個工作中的 Kerberos 伺服器才能使用此功能。YaST 不會設定伺服器,而只是使用所提供的功能。如果您要使用 Kerberos 驗證,則除了 YaST 組態之外,還必須要完成以下步驟才能執行 NFS 組態︰
請確定伺服器和用戶端位於相同的 Kerberos 領域中。它們必須存取相同的 KDC (金鑰配送中心) 伺服器,並共享它們的 krb5.keytab 檔案 (所有機器上的預設位置都是 /etc/krb5.keytab)。如需有關 Kerberos 的詳細資訊,請參閱Chapter 7, Network Authentication with Kerberos, Security Guide
請以 systemctl start gssd.service 來啟動用戶端上的 gssd 服務。
請以 systemctl start svcgssd.service 來啟動伺服器上的 svcgssd 服務。
如需有關設定啟用 Kerberos 之 NFS 的詳細資訊,請參閱第 26.5 節「如需更多資訊」 中的連結所提供的內容。
您不需安裝其他軟體就能將您的主機設定為 NFS 用戶端。所有需要的套件預設都會安裝。
授權使用者可以使用 YaST NFS 用戶端模組將NFS 目錄從 NFS 伺服器掛接到本地檔案樹。請執行下列步驟:
啟動 YaST NFS 用戶端模組。
在索引標籤中按一下。輸入 NFS 伺服器的主機名稱、要輸入的目錄和在本地掛接此目錄的掛接點。
使用 NFSv4 時,在標籤中選取 。另外,必須包含 NFSv4 伺服器所用的相同值。預設網域為 localdomain。
若要為 NFS 使用 Kerberos 驗證,則 GSS 安全性必須啟用。選取。
如果您要使用防火牆並希望允許遠端電腦存取服務,請啟用索引標籤中的。防火牆的狀態顯示於核取方塊旁。
按一下,儲存變更。
組態將會寫入 /etc/fstab 中,並會掛接指定的檔案系統。當您稍後啟動 YaST 組態用戶端時,它也會從這個檔案讀取現有組態。
從 NFS 伺服器手動輸入檔案系統的先決條件是有 RPC 埠對應程式正在執行。nfs.service 負責正確啟動該程式;因此,請以 root 身分輸入 systemctl start nfs.service,以將它啟動。接著,可以像處理本地分割區一樣,使用 mount 指令在檔案系統中掛接遠端檔案系統︰
mount host:remote-pathlocal-path
例如,若要從 nfs.example.com 機器輸入使用者目錄,可以使用︰
mount nfs.example.com:/home /home
autofs 精靈可用於自動掛接遠端檔案系統。請將下列項目加入您的 /etc/auto.master 檔案:
/nfsmounts /etc/auto.nfs
如果能正確填入 auto.nfs 檔案,/nfsmounts 目錄此後便會成為用戶端上所有 NFS 掛接作業的根部。選擇 auto.nfs 這個名稱是從方便角度考量,您可以自行選擇任何名稱。使用以下指令在 auto.nfs 中為所有 NFS 掛接作業新增項目︰
localdata -fstype=nfs server1:/data nfs4mount -fstype=nfs4 server2:/
以 root 身分使用 systemctl start autofs.service 啟動設定。在此範例中,server1 的 /data 目錄 /nfsmounts/localdata 會掛接 NFS,而 server2 的 /nfsmounts/nfs4mount 會掛接 NFSv4。
如果在 autofs 服務執行期間有程式編輯了 /etc/auto.master 檔案,則必須使用 systemctl restart autofs.service 重新啟動自動掛載器,才能使變更生效。
/etc/fstab #
/etc/fstab 中典型的 NFSv3 掛接項目如下:
nfs.example.com:/data /local/path nfs rw,noauto 0 0
對於 NFSv4 掛接,請在第三欄中使用 nfs4 而不是 nfs︰
nfs.example.com:/data /local/pathv4 nfs4 rw,noauto 0 0
noauto 選項可防止在啟動時自動掛接檔案系統。如果要手動掛接各檔案系統,可以縮短掛接指令的長度,僅指定掛接點︰
mount /local/path
請注意,如果未輸入 noauto 選項,系統的 init 程序檔會在啟動時處理這些檔案系統的掛接。
NFS 是最舊的通訊協定之一,開發於八十年代。雖然如此,NFS 對於共用小型檔案還是綽綽有餘的。但是,如果您要傳輸大型檔案或大量用戶端想要存取資料,NFS 伺服器將會成為瓶頸,並對系統效能造成明顯影響。出現這種情況的原因是檔案大小快速變大,而乙太網路的相對速度無法完全跟上這一變化。
當您申請「一般」NFS 伺服器中的檔案時,該伺服器會尋找檔案中繼資料、收集所有資料並透過網路將其傳輸至您的用戶端。但是,不論檔案的大小,效能瓶頸都會變得很明顯:
對於小型檔案,大部分時間都用在收集中繼資料上。
對於大型檔案,大部分時間則用在將資料從伺服器傳輸至用戶端上。
pNFS (或平行 NFS) 克服了這個局限性,因為它將檔案系統中繼資料與資料位置分隔開來。因此,pNFS 需要兩種類型的伺服器:
中繼資料或控制伺服器,用於處理所有非資料流量
一或多個儲存伺服器,用於存放資料
中繼資料與儲存伺服器構成了一個邏輯 NFS 伺服器。當用戶端想要讀取或寫入時,中繼資料伺服器會告知 NFSv4 用戶端使用哪個儲存伺服器來存取檔案區塊。用戶端可以直接存取伺服器上的資料。
SUSE Linux Enterprise 僅支援在用戶端上的 pNFS。
依過程 26.2, “輸入 NFS 目錄” 中所示繼續操作,但要按一下核取方塊並選擇性地按一下。YaST 會執行所有必要的步驟,並將所有需要的選項寫入檔案 /etc/exports。
請參閱第 26.4.2 節「手動輸入檔案系統」 開始設定。大部分組態均由 NFSv4 伺服器執行。對於 pNFS,唯一的差異是將 minorversion 選項和中繼資料伺服器 MDS 伺服器新增至 mount 指令:
mount -t nfs4 -o minorversion=1 MDS_SERVER MOUNTPOINT
為了協助進行除錯,請在 /proc 檔案系統中變更該值:
echo 32767 > /proc/sys/sunrpc/nfsd_debug echo 32767 > /proc/sys/sunrpc/nfs_debug
除了 exports、nfs 和 mount 的 man 頁面以外,/usr/share/doc/packages/nfsidmap/README 中也提供了有關設定 NFS 伺服器和用戶端的資訊。如需更多線上文件,請參閱下列網站:
如需詳細的線上技術文件,請造訪 SourceForge (http://nfs.sourceforge.net/)。
如需設定已監督之 NFS 的指示,請參閱 NFS 第 4 版開放原始碼實作參考 (http://www.citi.umich.edu/projects/nfsv4/linux/krb5-setup.html)。
如果您有任何關於 NFSv4 的問題,請參閱 Linux NFSv4 常見問答集 (http://www.citi.umich.edu/projects/nfsv4/linux/faq/)。