Linux NFS 掛接選項

本頁說明 Linux NFS 掛接選項,這些選項會影響掛接 NetApp Volumes 匯出內容時的效能和行為。您可以在執行 mount 指令時設定這些選項,也可以將這些選項新增至 /etc/fstab

如要瞭解建議的設定順序,以及掛接選項如何與核心並行和預先讀取互動,請參閱「最佳化 Linux NFS 用戶端」。

如需掛接指令和匯出存取權的範例,請參閱「連線 NFS 用戶端」。

事前準備

掛接 NetApp Volumes 前,請先完成下列必要條件:

  • 除非工作負載需要其他選項,否則請使用 Google Cloud 控制台掛接說明中的掛接指令。

  • 如果使用時段表或工作階段時段設定調整並行,請先設定這些設定,再掛接。詳情請參閱「Linux NFS 並行」。

  • 在非正式環境中測試所有變更。掛接選項的效果可能會因工作負載、Linux 版本和網路延遲而異。

快速參考指引

下表根據工作負載目標,快速列出常見的掛接選項:

目標 可考慮的選項 附註
一般用途 使用 Google Cloud 控制台掛接操作說明 包含符合通訊協定的預設值
單一 VM 的處理量或 IOPS 較高 nconnect=8nconnect=16,調整 rsizewsize 請先設定時段表,詳情請參閱「Linux NFS 並行
資料庫延遲時間更短 rsize=262144wsize=262144hardtimeo=600vers=4.1 測試特定應用程式
指定 NFS 版本 vers=3vers=4.1 Linux 預設會掛接可用的最高版本
不含諮詢鎖的 NFSv3 vers=3nolock 如需防火牆和鎖定管理員指南,請參閱「連線 NFS 用戶端
Kerberos NFSv4.1 sec=krb5krb5ikrb5p 請勿搭配 nconnect 使用
以讀取為主的資料,且已知一致性取捨 noctoactimeo= 進階;請先瞭解快取行為

掛接 NFSv3 時,請務必加入 tcp。雖然 Linux 預設會使用 TCP 處理 NFS 流量,但明確加入 tcp 可確保掛接程序使用 TCP,而非 UDP。這有助於在多個系統嘗試同時掛接時提升效能。加入 noatime 可減少中繼資料作業。

下列掛接設定檔會根據您的效能需求、通訊協定版本和用戶端規模,提供建議選項。執行這些指令時,請將 VOLUME_IP/export_path 換成 Google Cloud 控制台中的掛接指令實際值。

設定檔 A預設 (主機)

在 Google Cloud 控制台中執行掛接指令,不需進行任何變更。

設定檔 B以效能為導向 (單一 Linux 用戶端)

NFSv3 範例,與效能基準測試設定一致:

 sudo mount -t nfs -o hard,tcp,vers=3,rsize=262144,wsize=262144,nconnect=16 \
 VOLUME_IP:/export_path /mnt/volume

基準會使用 nconnect=16 和 64 KiB rsizewsize。許多工作負載都能透過 nconnect=8 獲得良好效能。測試這兩個值。

設定檔 C使用明確版本的 NFSv4.1

 sudo mount -t nfs -o vers=4.1,hard,rsize=262144,wsize=262144 \
 VOLUME_IP:/export_path /mnt/volume

如要防止在磁碟區上啟用 NFSv4.2 時自動掛接,請指定 vers=4.1。詳情請參閱「連線 NFS 用戶端」。

設定檔 D適用於運算叢集的 NFSv3

如果將大量用戶端 (例如數百個) 連線至磁碟區,請勿使用 nconnect,以免磁碟區的可用 TCP 工作階段耗盡。

 sudo mount -t nfs -o vers=3,nolock,hard,tcp,rsize=262144,wsize=262144 \
 VOLUME_IP:/export_path /mnt/volume

在 /etc/fstab 中保留

以下範例顯示 NFSv4.1 的 /etc/fstab 行:

 VOLUME_IP:/export_path  /mnt/volume  nfs  vers=4.1,hard,tcp,rsize=262144,wsize=262144,timeo=600,_netdev  0  0

使用 _netdev 選項,讓系統先等待網路連線,再掛接。

nconnect

nconnect 掛接選項可讓您控管 NFS 用戶端開啟至相同儲存端點 (即磁碟區 IP 位址) 的 TCP 連線數量。每個連線可同時處理多個 NFS 作業,但有設定上限。增加連線數量可提升單一用戶端的 I/O 並行和處理量。

建議

設定 nconnect 掛接選項時,請考慮下列建議:

  • 測試 nconnect=8nconnect=16。最多可支援 16 個值。

  • nconnect 僅適用於專用的高效能用戶端。如果許多用戶端 (例如運算叢集) 連線至相同儲存空間,請避免使用 nconnect

  • 對特定磁碟區 IP 執行第一次掛接作業,在該用戶端上為該 IP 設定 nconnect 值。即使後續掛接作業指定不同的值,掛接到相同 IP 時也會使用相同的值。請先使用選取的 nconnect 值掛接匯出項目,或對該 IP 的所有掛接作業使用相同選項。

  • 請注意,為一個磁碟區 IP 設定 nconnect 不會影響掛接至不同磁碟區 IP 的掛接點。

  • 使用 nconnect 前,請先確認 Linux 發行版本是否支援這項功能。

如要進一步瞭解每個連線的運算單元限制,請參閱「Linux NFS 並行」。

rsize 和 wsize

rsizewsize 掛接選項會為 NFS 讀取和寫入作業設定最大傳輸大小。如果省略這些選項,用戶端和伺服器會協商雙方支援的最大大小,在 Linux 用戶端和 NetApp Volumes 上,最大大小為 1 MiB。

建議

設定 rsizewsize 掛接選項時,請考慮下列建議:

  • 測試 rsize=262144wsize=262144 (256 KiB),調整延遲時間敏感型應用程式的總處理量和延遲時間。

  • 請謹慎使用大於 256 KiB 的值,因為這可能會增加延遲時間,或降低某些工作負載的總處理量;部署前請先測量效能。

  • 使用 rsize=65536wsize=65536 (64 KiB) 進行 NFSv3 測試,因為這些值已用於效能基準

請注意,這些設定對隨機工作負載的影響極小,因為這類工作負載通常使用的作業大小小於 rsizewsize,而透過頁面快取的循序 I/O 通常使用的作業大小則高達 rsizewsize

rsize 掛接選項會影響預先讀取行為。詳情請參閱「Linux NFS 預先讀取」。

通訊協定版本

下表列出 vers 選項值和對應的通訊協定版本:

選項 使用
vers=3 NFSv3
vers=4.1 NFSv4.1
vers=4.2 NFSv4.2

如未設定 vers,Linux mount 指令會使用用戶端和磁碟區支援的最高 NFS 版本。啟用 NFSv4.1 的 Flex Unified、Standard、Premium 和 Extreme 磁碟區也支援 NFSv4.2。除非指定 vers=4.1,否則可以掛接 NFSv4.2。

如要進一步瞭解 NFSv4.1 身分對應、Kerberos 和數值 ID,請參閱「連線至 NFS 用戶端」。

hard、timeo 和 retrans

hardtimeoretrans 掛接選項可管理用戶端行為,並在發生連線問題時設定逾時重試邏輯:

  • hard:重試 NFS 要求,直到成功為止。這個選項通常用於實際工作負載的資料完整性。

  • timeo:指定要求重試前的逾時時間 (以十分之一秒為單位)。以資料庫為導向的工作負載通常會使用 timeo=600 (60 秒)。

  • retrans:指定重試次數。除非 Runbook 另有指定,否則控制台預設值通常就已足夠。 Google Cloud

NFSv3 nolock 選項

NFSv3 諮詢鎖定功能會使用網路鎖定管理員 (NLM),且需要用戶端 rpc.statd 和回呼通訊埠的防火牆規則。如果您未使用諮詢鎖,請使用 nolock 掛接,以免鎖定管理員流量。

NFSv4.1 會在通訊協定中實作通訊埠 2049 的鎖定功能,因此用戶端不需要個別的鎖定管理員輸入規則。

如要進一步瞭解如何搭配使用諮詢鎖定與 NFSv3,以及存取 NFS 磁碟區的防火牆規則,請參閱「連線 NFS 用戶端」。

使用 nocto 和 actimeo 進行快取和一致性作業

NFS 用戶端使用寬鬆一致性模型。屬性快取計時器會決定用戶端信任檔案和目錄中繼資料的時間長度,之後才會聯絡伺服器。預設的「關閉時一致性」設定 (cto) 會在您開啟檔案時重新整理檔案資料。

  • nocto:用戶端不會在開啟時強制執行伺服器一致性。這會減少 getattr 呼叫,但會增加資料過時的風險。

  • actimeo=N:將所有屬性快取計時器設為 N 秒 (acregminacregmaxacdirminacdirmax)。

建議您在下列情況下使用 nocto 和較高的 actimeo 值:

  • 單一寫入者,或透過其他路徑接收更新的唯讀消費者。

  • 大型靜態資料集,例如 EDA 程式庫、網頁內容或算繪紋理 (如果可接受短暫的過時狀態)。

在大多數情況下,請使用建議的 Linux 預設值進行屬性快取:

  • 一般檔案的最低和最高時間長度acregmin=3 秒和 acregmax=60

  • 目錄時間下限和上限acdirmin=30 秒和 acdirmax=60

降低這些值會增加 NFS 伺服器的負載,並可能降低效能。除非您瞭解影響,否則請避免使用 actimeo=0 (僅限非常具體的用途)。

其他常見選項

NFS 用戶端可使用下列其他常見的掛接選項:

  • rwro:讀寫或唯讀掛接。

  • noatime:請勿在讀取時更新存取時間,因為這樣可減少中繼資料作業,是建議的做法。

  • sec=sys:AUTH_SYS,這是非 Kerberos 匯出作業的預設值。

  • _netdev:在網路可用後,使用此項目在 fstab 中掛接。

後續步驟