針對 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 檔案儲存體 上不支援的字元清單,請參閱這篇文章。 冒號是其中一個不支援的字元。
因應措施
請確定您已停用標識碼對應,而且沒有重新啟用任何專案。 然後執行下列步驟:
取消掛接共用。
使用下列項目停用識別碼對應:
sudo echo Y > /sys/module/nfs/parameters/nfs4_disable_idmapping
將共用掛接回來。
如果執行 rsync,請從沒有不正確目錄或檔名的目錄中,使用
—numeric-ids
自變數執行 rsync。
無法建立 NFS 共用
原因:不支持的記憶體帳戶設定
NFS 僅適用於具有下列設定的記憶體帳戶:
- 階層 - 進階
- 帳戶種類 - FileStorage
- 區域 - 支援的區域清單
解決方案
請遵循 如何建立 NFS 共用中的指示。
無法連線或掛接 NFS Azure 檔案共用
原因 1:要求源自不受信任網路/不受信任 IP 中的用戶端
不同於SMB,NFS 沒有使用者型驗證。 共用的驗證是以您的網路安全性規則設定為基礎。 若要確保用戶端只會建立 NFS 共用的安全連線,您必須使用服務端點或私人端點。 若要從內部部署以及私人端點存取共用,您必須設定 VPN 或 ExpressRoute 連線。 系統會忽略新增至記憶體帳戶防火牆允許清單的IP。 您必須使用下列其中一種方法來設定 NFS 共用的存取權:
原因 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。
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 檔案儲存體
- 針對 Azure 檔案儲存體 效能進行疑難解答
- 針對SMB連線 Azure 檔案儲存體 () 進行疑難解答
- 針對SMB (Azure 檔案儲存體 驗證和授權) 進行疑難解答
- 針對 Linux 上的 Azure 檔案儲存體 一般 SMB 問題進行疑難解答
與我們連絡,以取得說明
如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以將產品意見反應提交給 Azure 意應見反社群。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應