掛載問題疑難排解 - Amazon Elastic File System

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

掛載問題疑難排解

在 Windows 執行個體上掛載檔案系統失敗

在 Microsoft Windows 上的 Amazon EC2 執行個體掛載檔案系統失敗。

採取動作

不要使用不支援的 Windows EC2 執行個體的 Amazon EFS。

伺服器已拒絕存取

檔案系統掛載失敗,並顯示下列訊息:

/efs mount.nfs4: access denied by server while mounting 127.0.0.1:/

如果 NFS 用戶端沒有檔案系統的掛載許可,就會發生這個問題。

採取動作

如果您嘗試使用 IAM 掛載檔案系統,請確定您在掛載命令中使用的是 -o iam 選項。這會告訴 EFS 掛載協助程式,將您的憑證傳遞到 EFS 掛載目標。如果您仍然不具備存取權,請檢查檔案系統政策和身分政策,以確定沒有適用於連線的 DENY 子句,而且至少有一個適用於連線的 ALLOW 子句。如需詳細資訊,請參閱 使用 IAM 控制檔案系統資料存取建立檔案系統原則

自動掛載失敗且執行個體沒有回應

如果檔案系統已自動掛載於執行個體上且沒有宣告 _netdev 選項,則可能發生此問題。若 _netdev 已遺失,EC2 執行個體可能會停止回應。此結果是因為網路檔案系統在運算執行個體開始聯網後需要初始化。

採取動作

如果發生此問題,請聯絡 Sup AWS port 部門。

在 /etc/fstab 中掛載多個 Amazon EFS 檔案系統失敗

對於在 /etc/fstab 擁有兩個或以上 Amazon EFS 項目,並使用 systemd init 系統的執行個體而言,可能有些時候不會掛載這些部分或全部的項目。在這種情況下,dmesg 輸出會顯示一或多個類似以下的行。

NFS: nfs4_discover_server_trunking unhandled error -512. Exiting with error EIO
採取動作

在這種情況下,我們建議您在 /etc/systemd/system/mount-nfs-sequentially.service 建立新的 systemd 服務檔案。在檔案中需要插入代碼,代碼内容取決于您是通過手動掛載檔案系統還是使用 Amazon EFS 掛載協助程式。

  • 如果您要手動掛載檔案系統,則 ExecStart 指令必須指向網路檔案系統 (NFS4)。在檔案中插入下列代碼:

    [Unit] Description=Workaround for mounting NFS file systems sequentially at boot time After=remote-fs.target [Service] Type=oneshot ExecStart=/bin/mount -avt nfs4 RemainAfterExit=yes [Install] WantedBy=multi-user.target
  • 如果您使用的是 Amazon EFS 掛載協助程式,則 ExecStart 命令必須指向 EFS 而非 NFS4,才能使用 Transport Layer Security (TLS)。在檔案中插入下列代碼:

    [Unit] Description=Workaround for mounting NFS file systems sequentially at boot time After=remote-fs.target [Service] Type=oneshot ExecStart=/bin/mount -avt efs RemainAfterExit=yes [Install] WantedBy=multi-user.target

建立檔案后,請執行以下兩個命令:

  1. sudo systemctl daemon-reload

  2. sudo systemctl enable mount-nfs-sequentially.service

然後重新啟動您的 Amazon EC2 執行個體。檔案系統為隨需掛載,通常可在一秒內完成。

出現「錯誤 fs 類型」錯誤訊息的掛載命令失敗

出現以下錯誤訊息的掛載命令失敗。

mount: wrong fs type, bad option, bad superblock on 10.1.25.30:/, missing codepage or helper program, or other error (for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program) In some cases useful info is found in syslog - try dmesg | tail or so.
採取動作

如果您收到此訊息,請安裝 nfs-utils (或 Ubuntu 的 nfs-common) 套件。如需詳細資訊,請參閱 安裝 NFS 用戶端

出現「錯誤的掛載選項」錯誤訊息的掛載命令失敗

出現以下錯誤訊息的掛載命令失敗。

mount.nfs: an incorrect mount option was specified
採取動作

此錯誤訊息最可能表示您的 Linux 發行版本不支援 4.0 和 4.1 版本的網路檔案系統 (NFSv4)。您可以執行以下命令以確認是否為此情況。

$ grep CONFIG_NFS_V4_1 /boot/config*

如果上述命令傳回 # CONFIG_NFS_V4_1 is not set,則您的 Linux 發行版本不支援 NFSv4.1。如需適用於 Amazon Elastic Compute Cloud (Amazon EC2) 且支援 NFSv4.1 的 Amazon Machine Image (AMI) 詳細資訊,請參閱 NFS 支援

使用存取點掛載失敗

使用存取點進行掛載時,掛載命令會失敗,並顯示下列錯誤訊息:

mount.nfs4: mounting access_point failed, reason given by server: No such file or directory
採取動作

此錯誤訊息指出指定的 EFS 路徑不存在。請確定您已提供存取點根目錄的擁有權和權限。EFS 不使用這項資訊將不能建立根目錄。如需詳細資訊,請參閱 使用 Amazon EFS 存取點

如果您未指定任何根目錄擁有權和權限,且根目錄尚未存在,EFS 將不會建立根目錄。如果出現以上情況,那麽嘗試使用存取點掛載檔案系統將會失敗。

在檔案系統建立後立即發生檔案系統掛載失敗

建立網域名稱服務 (DNS) 記錄的掛載目標後,最多可能需要 90 秒才能在 AWS 區域區域中完全傳播。

採取動作

如果您以程式設計方式建立和掛載檔案系統 (例如使用範 AWS CloudFormation 本),建議您實作等待條件。

檔案系統掛載停止回應,然後因逾時錯誤而失敗

檔案系統掛載命令停止回應一至兩分鐘,然後因逾時錯誤而失敗。下列代碼顯示了範例。

$ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport mount-target-ip:/ mnt [2+ minute wait here] mount.nfs: Connection timed out $ 

採取動作

當 Amazon EC2 執行個體或掛載目標安全群組未正確設定時,則可能發生此錯誤。請確定掛載目標安全群組具有輸入規則,此規則允許透過 EC2 安全群組進行 NFS 存取。

編輯顯示已設定輸入規則的輸入規則頁面。

如需詳細資訊,請參閱 建立安全群組

確認您指定的掛載目標 IP 地址為有效。如果您指定了錯誤的 IP 地址,且在該 IP 地址沒有其他內容可拒絕掛載,則您可能會遇到這個問題。

使用 DNS 名稱進行 NFS 掛載檔案系統失敗

嘗試使用 NFS 用戶端 (不使用 amazon-efs-utils 用戶端) 掛載檔案系統,而掛載目標通過檔案系統的 DNS 名稱來標識,結果失敗,如下列範例所示:

$ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.efs.aws-region.amazonaws.com:/ mnt mount.nfs: Failed to resolve server file-system-id.efs.aws-region.amazonaws.com: Name or service not known. $ 

採取動作

檢查 VPC 組態。如果您使用的是自訂 VPC,請確保 DNS 設定已啟用。如需詳細資訊,請參閱 Amazon VPC 使用者指南中的 VPC 的 DNS 屬性。此外,檔案系統和掛載目標 DNS 名稱無法從其所在的 VPC 外部進行解析。

mount命令中使用檔案系統的 DNS 名稱來掛載檔案系統之前,您必須執行下列動作:

  • 請確認相同可用區域中有做為 Amazon EC2 執行個體的 Amazon EFS 掛載目標。

  • 請確認有掛載目標位於 Amazon EC2 執行個體所在的同一 VPC。否則,您無法將 DNS 名稱解析用於在另一個 VPC 中的 EFS 掛載目標。如需詳細資訊,請參閱 從另一個 AWS 帳戶 或 VPC 掛載 EFS 檔案系統

  • 在 Amazon VPC 中連線您的 Amazon EC2 執行個體,並設為使用 Amazon 提供的 DNS 伺服器。如需詳細資訊,請參閱《Amazon VPC 使用者指南》中的 Amazon VPC 中的 DHCP 選項集

  • 確認連線 Amazon EC2 執行個體的 Amazon VPC 擁有已啟用的 DNS 主機名稱。如需詳細資訊,請參閱 Amazon VPC 使用者指南中的 VPC 的 DNS 屬性

出現「nfs 未回應」的檔案系統掛載失敗

出現 "nfs: server_name still not responding" 傳輸控制通訊協定 (TCP) 重新連線事件,Amazon EFS 檔案系統掛載失敗。

採取動作

使用 noresvport 掛載選項,確定 NFS 用戶端會在網路連線重新建立時使用新的 (TCP) 來源連接埠。這可讓您確保網路復原事件後的不中斷可用性。

掛載目標生命週期狀態已停滯

該掛載目標生命週期狀態停滯在建立刪除狀態。

採取動作

重試 CreateMountTargetDeleteMountTarget 呼叫。

掛載目標生命週期狀態顯示錯

掛載目標生命週期狀態顯示錯誤

採取動作

如果虛擬私有雲端 (VPC) 的託管區域有衝突,Amazon EFS 將無法為新檔案系統掛載目標建立必要的網域名稱系統 (DNS) 記錄。Amazon EFS 無法在客戶擁有的託管區域內建立新記錄。如果您需要維護具有衝突 efs.<region>.amazonaws.com DNS 範圍的託管區域,請在單獨的 VPC 中建立託管區域。如需關於在 VPC中考量 DNS 的詳細資訊,請參閱 VPC 中的 DNS 屬性

若要解決此問題,請從 VPC 刪除有衝突的 efs.<region>.amazonaws.com 託管,然後再次建立掛載目標。如需建立掛載目標的詳細資訊,請參閱 建立和管理掛載目標和安全群組

掛載未回應

Amazon EFS 掛載沒有回應。例如,ls 命令停止回應。

採取動作

如果另一個應用程式正在寫入大量資料到檔案系統,則可能發生此錯誤。對寫入操作尚未完成前的檔案進行存取可能會被拒。一般而言,對正在被寫入的檔案嘗試任何存取的命令或應用程式都可能造成停止回應。例如,當 ls 命令遇到被寫入的檔案時,可能會停止回應。這是因為一些 Linux 發行版本設定了 ls 命令別名,因此除了列出目錄內容外,它也會擷取檔案屬性。

若要解決這個問題,請確認另一個應用程式正在寫入檔案至 Amazon EFS 掛載,並處於 Uninterruptible sleep (D) 狀態,如以下範例所示:

$ ps aux | grep large_io.py root 33253 0.5 0.0 126652 5020 pts/3 D+ 18:22 0:00 python large_io.py /efs/large_file

在您已確認是這種情況後,您可以等待其他寫入操作完成,或實施解決方法來處理此問題。在 ls 範例中,您可以直接使用 /bin/ls 命令,而不要使用別名。如此可讓命令繼續執行,而不會因正在寫入的檔案而停止回應。一般而言,如果應用程式的資料寫入可以強制定期排清資料 (或許使用 fsync(2)),如此一來可協助其他應用程式改善您的檔案系統回應能力。不過,這項改善措施可能會犧牲應用程式寫入資料時的效能。

掛載的客戶端中斷連線

客戶端掛載到 Amazon EFS 檔案系統后,偶爾會因爲各種原因中斷連線。發生中斷時,將 NFS 用戶端設計為自動連線,盡量減少日常中斷對應用程式效能和可用性的影響。在大多數情況下,用戶端會在數秒內透明地重新連線。

然而,舊版 Linux 核心 (v5.4 及以下版本) 中包含的 NFS 用戶端軟體存在一種行為,即中斷連線時會引發 NFS 用戶端嘗試在相同的 TCP 來源連接埠上重新連線。此行為不符合 TCP RFC 要求,而且會阻止這些用戶端無法快速重新建立與 EFS 伺服器 (在此情況下為 EFS 檔案系統) 的連線。

若要解決此問題,強烈建議您使用 Amazon EFS 掛載協助程式掛載 EFS 檔案系統。EFS 掛載協助程式使用適用於 Amazon EFS 檔案系統的最佳掛載設定。如需關於 EFS 客戶端和掛載協助程式的詳細資訊,請參閱 使用工 amazon-efs-utils 具

如果您無法使用 EFS 掛載協助程式,強烈建議您使用 noresvport NFS 掛載選項,此選項會指示 NFS 用戶端使用新的 TCP 來源連接埠重新建立連線,以避免無法使用的問題。如需詳細資訊,請參閱 建議的 NFS 掛載選項

新掛載的檔案系統操作傳回「錯誤的檔案處理」錯誤

新掛載檔案系統執行的操作傳回了 bad file handle 錯誤。

如果 Amazon EC2 執行個體已透過特定 IP 地址連接到一個檔案系統和一個掛載目標,而該檔案系統與掛載目標已被刪除,則可能出現此錯誤。如果您使用相同掛載目標 IP 地址建立了新的檔案系統與掛載目標以連接到 Amazon EC2 執行個體,則可能發生此問題。

採取動作

您可以透過卸載檔案系統來解決此錯誤,然後重新掛載該檔案系統至 Amazon EC2 執行個體。如需卸載 Amazon EFS 檔案系統的詳細資訊,請參閱 卸載檔案系統

卸載檔案系統失敗

如果您的檔案系統正在忙碌中,則無法將其卸載。

採取動作

您可以透過下列方式來解決問題:

  • 使用惰性卸載 (lazy unmount)umount -l,在執行時會將檔案系統與檔案系統階層分離,然後在檔案系統不再忙碌時立即清除所有參照。

  • 等待所有讀取和寫入操作完成,然後再次嘗試 umount 命令。

  • 使用 umount -f 指令強制卸載。

    警告

    強制卸載會中斷目前在該檔案系統中進行的任何資料讀取或寫入操作。使用此選項時,請參閱 umount 命令手冊頁,獲取詳細咨詢和指導方針。