針對 NFS Azure 檔案共用進行疑難解答

注意事項

本文中參考的 CentOS 是 Linux 發行版,並會到達生命周期結束 (EOL) 。 請考慮您的使用並據以規劃。 如需詳細資訊,請 參閱 CentOS 生命週期結束指引

本文列出與 NFS Azure 檔案共用相關的常見問題,並提供可能的原因和因應措施。

重要事項

本文的內容僅適用於 NFS 共用。 若要針對Linux中的SMB問題進行疑難解答,請參閱針對Linux (SMB) 中的 Azure 檔案儲存體問題進行疑難解答。 Windows 不支援 NFS Azure 檔案共用。

適用於

檔案共享類型 SMB Nfs
GPv2) 、LRS/ZRS (標準檔案共用
GPv2) 、GRS/GZRS (標準檔案共用
FileStorage) 、LRS/ZRS (進階檔案共用

chgrp “filename” 失敗:自變數 (22)

原因 1:未停用標識符對應

因為 Azure 檔案儲存體 不允許英數位元 UID/GID,所以您必須停用 idmapping。

原因 2:標識碼對應已停用,但在遇到錯誤的檔案/dir 名稱后重新啟用

即使您正確地停用標識碼對應,在某些情況下也可以自動重新啟用。 例如,當 Azure 檔案儲存體 遇到錯誤的檔名時,它會傳回錯誤。 看到此錯誤碼時,NFS 4.1 Linux 用戶端決定重新啟用標識碼,並使用英數位元 UID/GID 傳送未來的要求。 如需 Azure 檔案儲存體 上不支援的字元清單,請參閱這篇文章。 冒號是其中一個不支援的字元。

因應措施

請確定您已停用標識碼對應,而且沒有重新啟用任何專案。 然後執行下列步驟:

  1. 取消掛接共用。

  2. 使用下列項目停用識別碼對應:

    sudo echo Y > /sys/module/nfs/parameters/nfs4_disable_idmapping
    
  3. 將共用掛接回來。

  4. 如果執行 rsync,請從沒有不正確目錄或檔名的目錄中,使用 —numeric-ids 自變數執行 rsync。

無法建立 NFS 共用

原因:不支持的記憶體帳戶設定

NFS 僅適用於具有下列設定的記憶體帳戶:

解決方案

請遵循 如何建立 NFS 共用中的指示。

無法連線或掛接 NFS Azure 檔案共用

原因 1:要求源自不受信任網路/不受信任 IP 中的用戶端

不同於SMB,NFS 沒有使用者型驗證。 共用的驗證是以您的網路安全性規則設定為基礎。 若要確保用戶端只會建立 NFS 共用的安全連線,您必須使用服務端點或私人端點。 若要從內部部署以及私人端點存取共用,您必須設定 VPN 或 ExpressRoute 連線。 系統會忽略新增至記憶體帳戶防火牆允許清單的IP。 您必須使用下列其中一種方法來設定 NFS 共用的存取權:

  • 服務端點

    • 由公用端點存取。

    • 僅適用於相同的區域。

    • 您無法使用 VNet 對等互連進行共用存取。

    • 您必須將每個虛擬網路或子網個別新增至允許清單。

    • 針對內部部署存取,您可以搭配 ExpressRoute、點對站和站對站 VPN 使用服務端點。 我們建議使用私人端點,因為它更安全。

      下圖描述使用公用端點的連線能力:

      公用端點連線的圖表。

  • 私人端點

    • 存取比服務端點更安全。

    • 透過私人連結存取 NFS 共用,可從記憶體帳戶的 Azure 區域內部和外部存取, (跨區域、內部部署) 。

    • 虛擬網路對等互連與裝載於私人端點中的虛擬網路,可讓NFS共用存取對等互連虛擬網路中的用戶端。

    • 您可以搭配 ExpressRoute、點對站 VPN 和站對站 VPN 使用私人端點。

      私人端點連線的圖表。

原因 2:已啟用所需的安全傳輸

NFS Azure 檔案共用目前不支援雙重加密。 Azure 會使用 MACSec 為 Azure 資料中心之間傳輸中的所有數據提供一層加密。 您只能從受信任的虛擬網路和透過 VPN 通道存取 NFS 共用。 NFS 共用上沒有額外的傳輸層加密。

解決方案

停用記憶體帳戶的組態刀鋒視窗中 所需的安全傳輸

顯示記憶體帳戶組態刀鋒視窗的螢幕快照,其中已停用所需的安全傳輸。

原因 3:未安裝 nfs-utils、nfs-client 或 nfs-common 套件

執行 mount 命令之前,請先安裝 nfs-utils、nfs-client 或 nfs-common 套件。

若要檢查是否已安裝 NFS 套件,請執行:

本節中的相同命令適用於 CentOS 和 Oracle Linux。

sudo rpm -qa | grep nfs-utils

解決方案

如果未安裝套件,請使用您的散發版本特定命令來安裝套件。

本節中的相同命令適用於 CentOS 和 Oracle Linux。

OS 7.X 版

sudo yum install nfs-utils

OS 8.X 版或 9.X 版

sudo dnf install nfs-utils

原因 4:防火牆封鎖埠 2049

NFS 通訊協定會透過埠 2049 與其伺服器通訊。 請確定 NFS 伺服器) (記憶體帳戶已開啟此埠。

解決方案

執行下列命令,確認用戶端上的埠 2049 已開啟。 如果埠未開啟,請將其開啟。

sudo nc -zv <storageaccountnamehere>.file.core.windows.net 2049

原因 5:已刪除記憶體帳戶

如果您因為錯誤而無法掛接檔案共享 :連線逾時,可能會不小心刪除包含檔案共用的記憶體帳戶。

解決方案

復原記憶體帳戶。 然後,刪除並重新建立私人端點,使其與新的記憶體帳戶資源標識符相關聯。

某些核心上大型目錄列舉的 ls 停止回應

原因:在Linux核心 v5.11中引進Bug,並在 v5.12.5 中修正

某些核心版本有錯誤,導致目錄清單產生無止盡的 READDIR 序列。 可在一次呼叫中運送所有專案的小型目錄不會發生此問題。 此錯誤是在Linux核心 v5.11中引進,並在 v5.12.5 中修正。 因此,介於之間的任何專案都有 Bug。 RHEL 8.4 具有此核心版本。

因應措施:降級或升級核心

將核心降級或升級至受影響核心以外的任何項目應該可以解決問題。

系統命令失敗,並出現「找不到檔案」錯誤

原因

依賴 inode 編號的 Linux 32 位應用程式可能無法如預期般使用 Azure 檔案儲存體,因為 NFS 服務所產生的 64 位非正負號格式化。

解決方案

若要解決此問題,請使用下列其中一個方法:

  • 使用 nfs.enable_ino64=0 核心開機選項,將 64 位的非正負號壓縮為 32 位。

  • 將 新 options nfs enable_ino64=0 增至 /etc/modprobe.d/nfs.conf 檔案並重新啟動 VM,以設定模塊參數。

您也可以將此核心開機選項保存在 grub.conf 檔案中。 如需詳細資訊,請參閱 Linux 發行版的檔。

需要協助?

如果您仍然需要協助,請 連絡支持人員 以快速解決您的問題。

另請參閱

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以將產品意見反應提交給 Azure 意應見反社群