本頁說明如何連線 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 位址為依據。
磁碟區的匯出政策包含匯出規則。每條規則都是以半形逗號分隔的 IP 或網路 CIDR 清單,定義可掛接磁碟區的允許的用戶端。規則也會定義用戶端擁有的存取權類型,例如「讀取和寫入」或「唯讀」。為進一步確保安全,NFS 伺服器會將存取權從 Root 使用者 (UID=0
) 重新對應至 Nobody (UID=65535
),讓 Root 在存取磁碟區中的檔案時成為無權限使用者。在相應的匯出規則中,將「根存取權」設為「開啟」後,根使用者會維持根身分。匯出規則的順序很重要。
建議您採用下列匯出政策最佳做法:
匯出規則的順序應由最明確到最不明確。
只匯出至信任的用戶端,例如具有信任用戶端的特定用戶端或 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 mount 指令一律會掛接最高可用 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=65535 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 使用。xattrs
的使用方式和限制也適用於 TR-4962 中詳述的內容。
將 Linux 連線至 LDAP
如果您使用 NFSv3 擴充群組或 NFSv4.1 (含安全 ID),您已設定 NetApp Volumes,透過附加至儲存集區的 Active Directory,將 Active Directory 設為 LDAP 伺服器。
如要確保 NFS 用戶端和伺服器之間的使用者資訊一致,您可能需要將用戶端設定為使用 Active Directory 做為使用者和群組資訊的 LDAP 名稱服務。
請使用下列資源設定 LDAP:
使用 Kerberized NFS 時,您可能需要使用本節提及的部署指南設定 LDAP,並確保用戶端和伺服器之間的一致性。