連線 NFS 用戶端

本頁說明如何連線 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 用戶端的掛接指令:

控制台

  1. 前往 Google Cloud 控制台的「NetApp Volumes」頁面。

    前往 NetApp Volumes

  2. 按一下「磁碟區」

  3. 按一下「顯示更多」

  4. 選取「掛接操作說明」

  5. 按照 Google Cloud 控制台中顯示的掛接說明操作。

  6. 找出掛接指令並使用掛接選項,除非工作負載有特定的掛接選項需求。

    僅限 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

  1. 在用戶端開啟 /etc/idmapd.conf 檔案,然後將網域參數變更為下列其中一項:

    • 如果您的磁碟區未啟用 LDAP,請參閱domain = defaultv4iddomain.com這篇文章。

    • 如果 LDAP 已啟用磁碟區,請按照 domain = <FDQN_of_Windows_Domain> 中的步驟操作。

  2. 執行下列指令,啟用對 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,並確保用戶端和伺服器之間的一致性。

後續步驟

連結大容量磁碟區和多個儲存空間端點