本頁說明如何連線至 NFS 用戶端。
事前準備
根據 Linux 發行版類型安裝 NFS 用戶端工具,準備好用戶端:
RedHat
執行下列指令:
sudo yum install -y nfs-utils
SuSe
執行下列指令:
sudo yum install -y nfs-utils
Debian
執行下列指令:
sudo apt-get install nfs-common
Ubuntu
執行下列指令:
sudo apt-get install nfs-common
使用匯出政策控管磁碟區存取權
NFSv3 和 NFSv4.1 的磁碟區存取權控管機制是以用戶端的 IP 位址為依據。 磁碟區的匯出政策最多可包含 20 條匯出規則。每項規則都是以半形逗號分隔的 IP 或網路 CIDR 清單,定義可掛接磁碟區的允許的用戶端。規則也會定義用戶端擁有的存取權類型,例如「讀取和寫入」或「唯讀」。
請使用下列分頁,依據 NFS 版本查看政策:
不含 Kerberos 的 NFS
所有不含 Kerberos 的 NFS 版本都使用 AUTH_SYS 安全性風味。在此模式下,您必須嚴格管理匯出規則,只允許您信任的用戶端,並確保使用者 ID 和群組 ID 的完整性。
為確保安全,NFS 伺服器會自動將 NFS 呼叫對應至 UID=0 (根目錄) 到 UID=65534 (匿名),後者在檔案系統中具有有限的權限。建立磁碟區時,您可以啟用根存取權選項來控管這項行為。啟用根存取權後,使用者 ID 0 會維持 0。最佳做法是建立專用的匯出規則,為信任的管理員主機啟用根層級存取權,並為所有其他用戶端停用根層級存取權。
使用 Kerberos 的 NFSv4.1
使用 Kerberos 的 NFSv4.1 會使用匯出政策,並透過 Kerberos 進行額外驗證,以存取磁碟區。您可以設定匯出規則,套用至下列項目:
僅限 Kerberos (
krb5)Kerberos 簽署 (
krb5i)Kerberos 隱私權 (
krb5p)
匯出政策最佳做法
建議您採用下列匯出政策最佳做法:
請依據具體程度排序匯出規則,最具體的規則排在最前面。
只匯出至信任的用戶端,例如具有信任用戶端的特定用戶端或 CIDR。
將根存取權限制在少數幾個受信任的管理用戶端。
| 規則 | 允許的用戶端 | 存取 | 根層級存取權 | 說明 |
|---|---|---|---|---|
| 1 | 10.10.5.3,
10.10.5.9 |
讀取及寫入 | 開啟 | 管理用戶端。超級使用者仍是超級使用者,可以管理
所有檔案權限。 |
| 2 | 10.10.5.0/24 | 讀取及寫入 | 關閉 | 10.10.5.0/24 網路中的所有其他用戶端都可以掛接,
但系統會將根存取權對應至 nobody。 |
| 3 | 10.10.6.0/24 | 唯讀 | 關閉 | 其他網路可以從磁碟區讀取資料,但無法寫入。 |
用戶端掛接磁碟區後,檔案層級存取權會決定使用者可執行的動作。詳情請參閱「UNIX 樣式磁碟區的 NFS 檔案層級存取權控管」。
NFS 用戶端的掛接操作說明
請按照下列操作說明,使用 Google Cloud 控制台或 Google Cloud CLI,取得 NFS 用戶端的掛接指令:
控制台
前往 Google Cloud 控制台的「NetApp Volumes」頁面。
按一下「磁碟區」。
按一下「顯示更多」。
選取「掛接操作說明」。
按照 Google Cloud 控制台顯示的掛接說明操作。
找出掛接指令並使用掛接選項,除非工作負載有特定掛接選項需求。
僅限 NFSv3:如果應用程式未使用鎖定功能,或您未設定用戶端來啟用 NSM 通訊,建議您新增
nolock掛接選項。
gcloud
查詢磁碟區的掛接操作說明:
gcloud netapp volumes describe VOLUME_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --format="value(mountOptions.instructions)"
替換下列資訊:
VOLUME_NAME:磁碟區的名稱。PROJECT_ID:磁碟區所在專案的名稱。LOCATION:磁碟區的位置。
如要進一步瞭解其他選用標記,請參閱 Google Cloud SDK 磁碟區說明文件。
其他 NFSv4.1 指令
啟用 NFSv4.1 後,服務等級為 Standard、Premium 和 Extreme 的磁碟區也會自動啟用 NFSv4.2。除非您指定要掛接的版本,否則 Linux 的掛接指令一律會掛接最高可用 NFS 版本。如要使用 NFSv4.1 掛接,請在掛接指令中使用 -o vers=4.1 參數。
在 NFSv3 中,使用者和群組是透過 NFSv3 通訊協定傳送的使用者 ID (UID) 和群組 ID (GID) 識別。請務必確保在存取磁碟區的所有用戶端上,相同的 UID 和 GID 代表相同的使用者和群組。NFSv4 使用安全 ID,因此不再需要明確的 UID 和 GID 對應。
安全 ID 是格式為 <username|groupname>@<full_qualified_domain> 的字串。
安全識別碼的例子是 bob@example.com。用戶端必須先將內部使用的 UID 和 GID 轉譯為安全識別碼,再將 NFSv4 要求傳送至伺服器。伺服器必須將傳入要求的安全 ID 轉換為 UID 和 GID,並將回應的 UID 和 GID 轉換為安全 ID。使用轉換的優點是,每個用戶端和伺服器都可以使用不同的內部 UID 和 GID。不過,缺點是所有用戶端和伺服器都必須維護 UID 和 GID 之間的對應清單,以及使用者和群組名稱。用戶端上的對應資訊可來自本機檔案 (例如 /etc/passwd 和 /etc/groups) 或 LDAP 目錄。這項對應的設定是由 rpc.idmapd 管理,且必須在用戶端上執行。
在 NetApp Volumes 上,LDAP 必須提供對應資訊,且 Active Directory 是唯一支援 RFC2307bis 相容 LDAP 伺服器。使用 Kerberos 搭配 NFSv4 時,安全 ID 會以 username@DOMAINNAME 格式儲存 Kerberos 主體,其中 DOMAINNAME (大寫) 會成為領域名稱。
數字 ID
如果使用者不想設定名稱對應,而是想使用 NFSv4 取代 NFSv3,NFSv4 導入了名為 numeric ID 的選項,可將 UID 和 GID 編碼文字字串做為安全 ID 傳送。這項功能可簡化使用者的設定程序。
您可以使用下列指令檢查用戶端設定:
cat /sys/module/nfs/parameters/nfs4_disable_idmapping
預設值為 Y,可啟用數字 ID。NetApp Volumes 支援使用數字 ID。
在 NFS 用戶端上設定 rpc.idmapd
無論您使用哪種 ID 或安全 ID,都必須在 NFS 用戶端上設定 rpc.idmapd。如果您已按照「事前準備」一節中的用戶端公用程式安裝說明操作,公用程式應該已安裝完畢,但可能尚未執行。部分發行版本會在掛接第一個 NFS 磁碟區時,使用 systemd 自動啟動。設定網域是 rpc.idmapd 的最低設定需求。否則,使用者根目錄會顯示為 nobody,並附上 UID=65534 or 4294967295。
請按照下列操作說明,在 NFS 用戶端上設定 rpc.idmapd:
在用戶端上開啟
/etc/idmapd.conf檔案,然後將網域參數變更為下列其中一項:如果您的磁碟區未啟用 LDAP,請
domain = defaultv4iddomain.com。如果 LDAP 已啟用磁碟區,請按照
domain = <FDQN_of_Windows_Domain>中的步驟操作。
執行下列指令,啟用對
rpc.idmapd的變更:nfsidmap -c
支援 NFSv4.2
除了 NFSv4.1 以外,Standard、Premium 和 Extreme 服務等級現在也支援 NFSv4.2 通訊協定,適用於已啟用 NFSv4.1 的磁碟區。
掛接 NFS 磁碟區時,Linux mount 指令會自動選取可用的最高 NFS 版本。掛接啟用 NFSv4.1 的磁碟區時,系統會自動預設為 NFSv4.2,除非明確指定 vers=4.1 掛接選項。
NetApp Volumes 支援 NFS 擴充屬性 xattrs,搭配 NFSv4.2 使用。如 TR-4962 所述,xattrs 的使用方式和限制也適用於此。
將 Linux 連線至 LDAP
如果您使用 NFSv3 擴充群組或 NFSv4.1 (含安全 ID),您已設定 NetApp Volumes,透過附加至儲存集區的 Active Directory,將 Active Directory 設為 LDAP 伺服器。
如要確保 NFS 用戶端和伺服器之間的使用者資訊一致,您可能需要將用戶端設定為使用 Active Directory 做為 LDAP 名稱服務,以取得使用者和群組資訊。
請使用下列資源設定 LDAP:
使用 Kerberized NFS 時,您可能需要使用本節提及的部署指南設定 LDAP,並確保用戶端和伺服器之間的一致性。