針對 NAS 設定和 NFS 儲存目標問題進行疑難排解

本文可解決可能會讓 Azure HPC Cache 無法將 NFS 儲存體系統新增為儲存目標的一些常見設定錯誤和其他問題。

本文包含如何檢查連接埠以及如何啟用所需 NAS 系統存取權的詳細資料。 文中也包含可能導致 NFS 儲存目標建立失敗的較不常見問題詳細資訊。

提示

使用本指南之前,請先閱讀 NFS 儲存目標的必要條件

如果此處未包含您問題的解決方案,請開啟支援票證,讓 Microsoft 服務和支援可以與您合作調查並解決問題。

提供足夠的連線執行緒

大型 HPC Cache 系統會對儲存目標發出多個連線要求。 例如,如果您的儲存目標使用 Ubuntu Linux nfs-kernel-server 模組,則預設的 NFS 精靈執行緒數目會是最低的八個。 請將執行緒數目增加至 128 個或 256 個,這才是能夠支援中大型 HPC Cache 的更合理數目。

您可以在 /etc/init.d/nfs-kernel-server 中使用 RPCNFSDCOUNT 值,以檢查或設定 Ubuntu 中的執行緒數目。

檢查連接埠設定

Azure HPC Cache 需要後端 NAS 儲存體系統上數個 UDP/TCP 連接連接埠的讀取/寫入存取權。 請確定 NAS 系統上的這些連接埠是可供存取的狀態,而且流量能夠穿過儲存體系統與快取子網路之間的任何防火牆抵達這些連接埠。 您可能需要與防火牆和網路管理員合作,才能讓資料中心驗證此設定。

不同廠商的儲存體系統會有不同的連接埠,因此在設定儲存目標時,請檢查系統的需求。

一般而言,快取需要存取這些連接埠:

通訊協定 Port 服務
TCP/UDP 111 rpcbind
TCP/UDP 2049 NFS
TCP/UDP 4045 nlockmgr
TCP/UDP 4046 mountd
TCP/UDP 4047 status

若要了解系統所需的特定連接埠,請使用下列 rpcinfo 命令。 此命令會列出連接埠清單,並將相關結果格式化為資料表。 (使用您系統的 IP 位址來取代 <storage_IP> 一詞。)

您可以從已安裝 NFS 基礎結構的任何 Linux 用戶端發出此命令。 如果您使用叢集子網路內的用戶端,用戶端也可以協助驗證子網路與儲存體系統之間的連線。

rpcinfo -p <storage_IP> |egrep "100000\s+4\s+tcp|100005\s+3\s+tcp|100003\s+3\s+tcp|100024\s+1\s+tcp|100021\s+4\s+tcp"| awk '{print $4 "/" $3 " " $5}'|column -t

請確定由 rpcinfo 查詢傳回所有連接埠,都允許來自 Azure HPC Cache 子網路不受限制的流量。

請同時在 NAS 本身以及儲存體系統與快取子網路之間的任何防火牆上檢查這些設定。

檢查根目錄壓縮設定

如果根目錄壓縮設定的設定不正確,檔案存取可能會中斷。 請檢查每個儲存體匯出上的設定以及相符 HPC Cache 用戶端存取原則上的設定是否適當。

根目錄壓縮會讓用戶端上本機超級使用者根目錄所傳送的要求,無法以根目錄的形式傳送至後端儲存體系統。 其會將根目錄的要求重新指派給非特殊權限的使用者識別碼 (UID),例如「nobody」。

提示

舊版的 Azure HPC Cache 需要 NAS 儲存體系統,才能從 HPC Cache 進行根目錄存取。 現在,除非您希望 HPC Cache 用戶端具有匯出的根目錄存取權,否則不需要在儲存目標匯出上允許根目錄存取權。

您可以在 HPC Cache 系統的下列位置設定根目錄壓縮:

  • 在 Azure HPC Cache - 使用用戶端存取原則,為符合特定篩選規則的用戶端設定根目錄壓縮。 用戶端存取原則是每個 NFS 儲存目標命名空間路徑的一部分。

    預設用戶端存取原則不會壓縮根目錄。

  • 在儲存體匯出 - 您可以設定儲存體系統,將傳入要求從根目錄重新指派給非特殊權限的使用者識別碼 (UID)。

如果您的儲存體系統匯出會壓縮根目錄,請將該儲存目標的 HPC Cache 用戶端存取規則更新為也壓縮根目錄。 如果您沒有這麼做,則會在嘗試透過 HPC Cache 讀取或寫入後端儲存體系統時發生存取問題。

下表說明以 UID 0 (根目錄) 的形式傳送用戶端要求時,不同根目錄壓縮案例的行為。 「不建議」使用有 * 標示的案例,因為其可能會造成存取問題。

設定 從用戶端傳送的 UID 從 HPC Cache 傳送的 UID 後端儲存體上的有效 UID
沒有根目錄壓縮 0 (根目錄) 0 (根目錄) 0 (根目錄)
只在 HPC Cache 進行根目錄壓縮 0 (根目錄) 65534 (nobody) 65534 (nobody)
*只在 NAS 儲存體進行根目錄壓縮 0 (根目錄) 0 (根目錄) 65534 (nobody)
在 HPC Cache 和 NAS 進行根目錄壓縮 0 (根目錄) 65534 (nobody) 65534 (nobody)

(UID 65534 是範例;當您在用戶端存取原則中開啟根目錄壓縮時,您可以自訂 UID。)

檢查目錄路徑的存取權

對於匯出階層式目錄的 NAS 系統,請檢查 Azure HPC Cache 是否在所使用檔案的路徑中具有每個匯出層級的適當存取權。

例如,系統可能會顯示三個匯出,如下所示:

  • /ifs
  • /ifs/accounting
  • /ifs/accounting/payroll

/ifs/accounting/payroll 匯出是 /ifs/accounting 的子系,/ifs/accounting 本身是 /ifs 的子系。

如果您將 payroll 匯出新增為 HPC Cache 儲存目標,快取實際上會掛接 /ifs/ 並從該處存取 payroll 目錄。 因此,Azure HPC Cache 需要有足夠的 /ifs 存取權,才能存取 /ifs/accounting/payroll 匯出。

此需求與快取為檔案編製索引的方式有關,並可使用儲存體系統所提供的檔案控制代碼來避免檔案衝突。

具有階層式匯出的 NAS 系統,可以為擷取自不同匯出的同一個檔案,提供不同的檔案控制代碼。 例如,用戶端可以掛接 /ifs/accounting 並存取 payroll/2011.txt 檔案。 另一個用戶端掛接 /ifs/accounting/payroll 並存取 2011.txt 檔案。 根據儲存體系統指派檔案控制代碼的方式,這兩個用戶端可能會收到有不同檔案控制代碼 (<mount2>/payroll/2011.txt 一個,<mount3>/2011.txt 一個) 的同一個檔案。

後端儲存體系統會保留檔案控制代碼的內部別名,但 Azure HPC Cache 無法分辨其索引中的哪些檔案控制代碼會參考相同項目。 因此,快取可能會針對相同檔案快取不同的寫入,但因為不知道它們是相同的檔案,而未能正確套用變更。

為了避免多個匯出中的檔案可能發生這種檔案衝突情形,Azure HPC Cache 會自動掛接路徑中深度最淺的可用匯出 (在此範例中為 /ifs),並使用該匯出所提供的檔案控制代碼。 如果多個匯出使用相同的基底路徑,Azure HPC Cache 便需要存取該基底路徑。

調整 VPN 封包大小限制

如果快取與 NAS 裝置之間有 VPN,則 VPN 可能會封鎖完整大小 1500 個位元組的乙太網路封包。 如果 NAS 與 Azure HPC Cache 執行個體之間的大型交換未完成,就可能會遇到此問題,但較小的更新則可正常運作。

除非您知道 VPN 設定的詳細資料,否則無法輕易分辨您的系統是否有此問題。 以下是一些可協助您檢查此問題的方法。

  • 在 VPN 兩端使用封包探測器來偵測哪些封包可成功傳輸。

  • 如果 VPN 允許執行 Ping 命令,您可以試著傳送完整大小的封包。

    使用這些選項,透過 VPN 對 NAS 執行 PING 命令。 (使用您儲存體系統的 IP 位址來取代 <storage_IP> 值。)

    ping -M do -s 1472 -c 1 <storage_IP>
    

    命令中的選項如下:

    • -M do - 不要分段
    • -c 1 - 只傳送一個封包
    • -s 1472 - 將承載的大小設定為 1472 個位元組。 這是在考慮乙太網路額外負荷之後,1500 個位元組封包的承載大小上限。

    成功的回覆看起來像這樣:

    PING 10.54.54.11 (10.54.54.11) 1472(1500) bytes of data.
    1480 bytes from 10.54.54.11: icmp_seq=1 ttl=64 time=2.06 ms
    

    如果 1472 個位元組的 Ping 失敗,就表示可能有封包大小問題。

若要修正此問題,您可能需要在 VPN 上設定 MSS 固定,讓遠端系統能正確偵測框架大小上限。 若要深入了解,請閱讀 VPN 閘道 IPsec/IKE 參數文件

在某些情況下,將 Azure HPC Cache 的 MTU 設定變更為 1400 會有所幫助。 不過,如果您限制快取上的 MTU,則也必須限制與快取互動的用戶端和後端儲存體系統所設定的 MTU 值。 如需詳細資訊,請閱讀設定其他 Azure HPC Cache 設定

檢查 ACL 安全性樣式

某些 NAS 系統會使用混合式安全性樣式,以合併使用存取控制清單 (ACL) 與傳統的 POSIX 或 UNIX 安全性。

如果您的系統將其安全性樣式回報為 UNIX 或 POSIX,但未包含縮略字「ACL」,則此問題不會影響您。

對於使用 ACL 的系統,Azure HPC Cache 必須追蹤其他使用者特定值,才能控制檔案存取。 啟用存取快取即可實現此目的。 使用者無法控制存取快取的開啟,但您可以開啟支援票證,來要求為快取系統上受影響的儲存目標啟用存取快取。

下一步

如果您遇到本文未提到的問題,請連絡支援人員以取得專家的協助。