

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

# 使用網路檔案系統掛載 EFS 檔案系統
<a name="mounting-fs-old"></a>

接下來，了解如何安裝網路檔案系統 (NFS) 用戶端，以及如何在 Amazon EC2 執行個體上掛載 Amazon EFS 檔案系統。您也可以找到 `mount` 命令的解釋，以及在 `mount` 命令中指定您檔案系統的網域名稱系統 (DNS) 時可使用的選項。此外，您可以找到如何使用 `fstab` 檔案，讓檔案系統在任何系統重新啟動後自動重新掛載。

**注意**  
在此區段，您可以了解如何掛載您的 Amazon EFS 檔案系統，而且不使用 amazon-efs-utils 套件。若要在您的檔案系統使用傳輸中的資料加密，您必須使用 Transport Layer Security (TLS) 掛載您的檔案系統。若要這樣做，建議使用 amazon-efs-utils 套件。如需詳細資訊，請參閱[安裝 Amazon EFS 用戶端](using-amazon-efs-utils.md)。

**Topics**
+ [先決條件](#reqs-mount-nfs)
+ [NFS 支援](#mounting-fs-nfs-info)
+ [安裝 NFS 用戶端](mounting-fs-install-nfsclient.md)
+ [建議的 NFS 掛載設定](mounting-fs-nfs-mount-settings.md)
+ [以 DNS 名稱掛載於 Amazon EC2](mounting-fs-mount-cmd-dns-name.md)
+ [以 IP 地址掛載](mounting-fs-mount-cmd-ip-addr.md)

## 先決條件
<a name="reqs-mount-nfs"></a>

在掛載檔案系統之前，請確定您符合下列要求：
+ 建立、設定和啟動您的相關 AWS 資源。如需說明，請參閱[Amazon EFS 入門](getting-started.md)。
+ 為您的 Amazon EC2 執行個體建立 VPC 安全群組，並使用必要的傳入和傳出存取掛載目標。如需詳細資訊，請參閱[使用 VPC 安全群組](network-access.md)。

## NFS 支援
<a name="mounting-fs-nfs-info"></a>

當您在 Amazon EC2 執行個體上掛載檔案系統時，Amazon EFS 支援網路檔案系統版本 4.0 與 4.1 (NFSv4) 通訊協定。雖有支援 NFSv4.0，但建議您使用 NFSv4.1。在 Amazon EC2 執行個體上掛載您的 Amazon EFS 檔案系統還需要 NFS 用戶端，此用戶端必須支援您所選擇的 NFSv4 協定。執行 macOS Big Sur 的 Amazon EC2 MacOS 執行個體僅支援 NFS v4.0。

Amazon EFS 不支援 `nconnect` 掛載選項。

**注意**  
對於 Linux 核心版本 5.4.\$1，Linux NFS 用戶端會使用 128 KB 的預設 `read_ahead_kb` 值。我們建議將此值增加到 15 MB。如需詳細資訊，請參閱 [優化 NFS read\$1ahead\$1kb 大小](performance-tips.md#efs-perf-optimize-nfs-read-ahead)。

為達到最佳化效能並避免各種已知的 NFS 用戶端錯誤，建議您使用最新的 Linux 核心。如果您使用的是企業 Linux 發行版本，我們建議下列事項：
+ Amazon Linux 2
+ Amazon Linux 2017.09 或更新版本
+ Red Hat Enterprise Linux （以及 CentOS 等衍生產品） 第 8 版及更新版本
+ Ubuntu 16.04 LTS 和更新版本
+ SLES 12 Sp2 或更新版本

如果您使用的是另一個發行版本或自訂核心，建議使用核心版本 4.3 或更新版本。若要排解使用 EC2 執行個體的 Amazon EFS 時與特定 AMI 或核心版本相關的疑難問題，請參閱 [AMI 與核心問題疑難排解](troubleshooting-efs-ami-kernel.md)。

**注意**  
不支援使用執行 Microsoft Windows 的 Amazon EC2 執行個體掛載 EFS 檔案系統。

# 安裝 NFS 用戶端
<a name="mounting-fs-install-nfsclient"></a>

若要在 Amazon EC2 執行個體上掛載 EFS 檔案系統，您必須先安裝 NFS 用戶端。若要連接到您的 EC2 執行個體並安裝 NFS 用戶端，您需要 EC2 執行個體的公有 DNS 名稱以及用於登入的使用者名稱。您執行個體的使用者名稱通常是 `ec2-user`。

**連接 EC2 執行個體並安裝 NFS 用戶端**

1. 連線至 EC2 執行個體。如需詳細資訊，請參閱 *Amazon EC2 User Guide* 中的 [Connect to your EC2 instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect.html)。

   金鑰檔案無法公開提供 SSH 檢視。您可以使用 **chmod 400 *filename*.pem** 命令來設定這些許可。如需詳細資訊，請參閱[為您的 Amazon EC2 執行個體建立金鑰對](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-key-pairs.html)。

1. (選用) 取得更新並重新啟動。

   ```
   $ sudo yum -y update 
               $  sudo reboot
   ```

1. 重新開機後，請重新連線至您的 EC2 執行個體。

1. 安裝 NFS 用戶端。

   如果您使用的是 Amazon Linux AMI 或 Red Hat Linux AMI，請使用以下命令來安裝 NFS 用戶端。

   ```
   $ sudo yum -y install nfs-utils
   ```

   如果您使用的是 Ubuntu Amazon EC2 AMI，請使用下列命令安裝 NFS 用戶端。

   ```
   $ sudo apt-get -y install nfs-common
   ```

1. 使用下列命令啟動 NFS 服務：

   ```
   $ sudo service nfs-server start
   ```

1. 確認 NFS 服務已啟動，如下所示。

   ```
   $ sudo service nfs-server status
   Redirecting to /bin/systemctl status nfs.service
   ● nfs-server.service - NFS server and services
      Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
      Active: active (exited) since Wed 2019-10-30 16:13:44 UTC; 5s ago
     Process: 29446 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
     Process: 29441 ExecStartPre=/bin/sh -c /bin/kill -HUP `cat /run/gssproxy.pid` (code=exited, status=0/SUCCESS)
     Process: 29439 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
    Main PID: 29446 (code=exited, status=0/SUCCESS)
      CGroup: /system.slice/nfs-server.service
   ```

如果您使用自訂核心 (亦即如果您建置自訂的 AMI)，您必須至少包含 NFSv4.1 用戶端核心模組，以及正確的 NFS4 userspace 掛載協助程式。

**注意**  
如果您在啟動 Amazon EC2 執行個體時，選擇 **Amazon Linux AMI 2016.03.0** 或 **Amazon Linux AMI 2016.09.0**，則無需安裝 `nfs-utils`，因為它預設已包含在 AMI 中。

**下一步：掛載檔案系統**  
使用下列程序之一以掛載您的檔案系統。
+ [以 DNS 名稱掛載於 Amazon EC2](mounting-fs-mount-cmd-dns-name.md)
+ [以 IP 地址掛載](mounting-fs-mount-cmd-ip-addr.md)
+ [自動掛載 EFS 檔案系統使用 NFS 在 EC2 Linux 或 Mac 執行個體上啟用自動掛載](nfs-automount-efs.md)

# 建議的 NFS 掛載設定
<a name="mounting-fs-nfs-mount-settings"></a>

我們建議設定下列 Linux 掛載選項值：
+ `noresvport`：告知 NFS 用戶端在網路連線重新建立時，使用新的傳輸控制通訊協定 (TCP) 來源連接埠。舊版 Linux 核心 (v5.4 及以下版本) 中包含的 NFS 用戶端軟體包含一種行為，即中斷連線時會引發 NFS 用戶端嘗試在相同的 TCP 來源連接埠上重新連線。此行為不符合 TCP RFC 要求，而且會阻止這些用戶端快速重新建立與 EFS 檔案系統的連線。

  使用 `noresvport` 選項有助於確保 NFS 用戶端以透明方式重新連線至 EFS 檔案系統，並在網路復原事件發生後重新連線時保持持續可用。
**重要**  
我們強烈建議您使用 `noresvport` 掛載選項，以確保您的 EFS 檔案系統在重新連線或網路復原事件發生後持續可用。  
考慮使用 [EFS 掛載協助程式](mounting-fs.md)掛載檔案系統。EFS 掛載協助程式使用適用於 Amazon EFS 檔案系統的最佳 NFS 掛載選項。
+ `rsize=1048576`：NFS 用戶端為每個網路 READ 請求接收資料時，設定資料位元組上限。讀取來自 EFS 檔案系統上檔案的資料時，將會套用這個值。我們建議您使用最大的大小 (最多 `1048576`) 以避免效能降低。
+ `wsize=1048576`：NFS 用戶端為每個網路 WRITE 請求傳送資料時，設定資料位元組上限。將資料寫入至 EFS 檔案系統上的檔案時，將會套用這個值。我們建議您使用最大的大小 (最多 `1048576`) 以避免效能降低。
+ `hard`：設定 NFS 用戶端在 NFS 請求逾時的復原行為，因此 NFS 請求會重試直到伺服器回覆為止。我們建議您使用硬掛載選項 (`hard`)，以確保資料的完整性。如果您使用 `soft` 掛載，請將 `timeo` 參數設定為至少 `150` 十分之一秒 (15 秒)。這有助於降低軟掛載固有的資料損壞風險。
+ `timeo=600`：將 NFS 用戶端等待重試 NFS 請求回應的逾時值設為 600 十分之一秒 (60 秒)。如果您必須變更逾時參數 (`timeo`)，我們建議您使用至少為 `150` 的值，相當於 15 秒。這有助於避免效能降低。
+ `retrans=2`：將 NFS 用戶端在請求嘗試進一步復原動作前的重試次數設為 2。
+ `_netdev`：在 `/etc/fstab` 中出現時，防止用戶端嘗試掛載到 EFS 檔案系統，直到網路完成啟用。
+ `nofail`：如果不論掛載的 EFS 檔案系統處於何種狀態，EC2 執行個體都需要啟動，請將 `nofail` 選項新增至 `/etc/fstab` 檔案中的檔案系統項目。

如果您不使用上述的預設值，請注意下列資訊：
+ 一般而言，避免設定任何與預設值不同的掛載選項，這可能導致效能降低和其他問題。例如，變更讀取或寫入的緩衝大小，或停用屬性快取皆可能造成效能降低。
+ Amazon EFS 會忽略來源連接埠。如果您變更 Amazon EFS 來源連接埠，不會有任何影響。
+ Amazon EFS 不支援 `nconnect` 掛載選項。
+ Amazon EFS 不支援任何 Kerberos 安全變體。例如，下列掛載命令會失敗。

  ```
   $ mount -t nfs4 -o krb5p <DNS_NAME>:/ /efs/ 
  ```
+ 我們建議您使用檔案系統的 DNS 名稱來掛載該檔案系統。系統會在與您 Amazon EC2 執行個體相同的可用區域中，將此名稱解析為 Amazon EFS 掛載目標的 IP 地址。如果您在與您 Amazon EC2 執行個體不同的可用區域中使用掛載目標，您需要為跨可用區域傳送的資料支付標準 EC2 費用。您的檔案系統操作也可能受到延遲。
+ 如需更多掛載選項和預設值的詳細說明，請參閱 Linux 文件。

# 以 DNS 名稱掛載於 Amazon EC2
<a name="mounting-fs-mount-cmd-dns-name"></a>

**注意**  
在掛載檔案系統之前，您需要將規則新增至掛載目標安全群組，以允許從 EC2 安全群組對連接埠 2049 進行傳入 NFS 存取。如需詳細資訊，請參閱[使用 VPC 安全群組](network-access.md)。
+ **檔案系統 DNS 名稱**：使用檔案系統的 DNS 名稱是最簡單的掛載選項。檔案系統的 DNS 名稱會自動解析為連接 Amazon EC2 執行個體之可用區域中掛載目標的 IP 地址。您可以從主控台取得此 DNS 名稱，或者如果您有檔案系統 ID，即可使用以下慣例來建構 DNS 名稱。

  ```
  file-system-id.efs.aws-region.amazonaws.com
  ```
**注意**  
 解析檔案系統 DNS 名稱的 DNS 時，需要 Amazon EFS 檔案系統在用戶端執行個體的相同可用區域中具有掛載目標。
  + 使用檔案系統 DNS 名稱，您可以使用以下命令將檔案系統掛載到 Amazon EC2 Linux 執行個體。

    ```
    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:/ /efs-mount-point
    ```
  + 使用檔案系統 DNS 名稱時，您可以藉助下列命令，並在執行受支援 macOS 版本 (Big Sur、Monterey、Ventura) 的 Amazon EC2 Mac 執行個體上掛載檔案系統。

    ```
    sudo mount -t nfs -o nfsvers=4.0,rsize=65536,wsize=65536,hard,timeo=600,retrans=2,noresvport,mountport=2049 file-system-id.efs.aws-region.amazonaws.com:/ /efs
    ```
**重要**  
在執行受支援 macOS 版本的 EC2 Mac 執行個體上掛載時，您必須使用 `mountport=2049` 才能成功連線到 EFS 檔案系統。
+ **掛載目標 DNS 名稱**：在 2016 年 12 月，我們引進檔案系統 DNS 名稱。我們持續為每個可用區域掛載目標提供 DNS 名稱，以提供回溯相容性。掛載目標 DNS 名稱的一般形式如下。

  ```
  availability-zone.file-system-id.efs.aws-region.amazonaws.com
  ```
**注意**  
支援跨可用區域掛載目標 DNS 名稱解決方案。

  在某些情況下，您可能會刪除掛載目標，然後在相同的可用區域中建立新的掛載目標。在此情況下，可用區域中新掛載目標的 DNS 名稱與舊掛載目標的 DNS 名稱相同。

您可以在**附加**對話方塊中檢視和複製要掛載檔案系統的確切指令。

**檢視檔案系統的掛載指令**

1. 在 Amazon EFS 主控台中，請選擇您要掛載的檔案系統，顯示其詳細資訊頁面。

1. 若要顯示用於此檔案系統的掛載指令，請選擇右上角的**「連接」**。

   **連接**畫面會顯示用於掛載檔案系統的確切指令。

1. 當使用 EFS 掛載協助程式或 NFS 用戶端挂載時，**透過 DNS 掛載**預設試圖會使用檔案系統的 DNS 名稱來顯示挂載檔案系統的命令。

如需支援 AWS 區域 Amazon EFS 的 清單，請參閱[《》中的 Amazon Elastic File System](https://docs.aws.amazon.com/general/latest/gr/rande.html#elasticfilesystem-region) AWS 一般參考。

若要在 `mount` 命令中使用 DNS 名稱，必須符合下列條件：
+ 連接的 EC2 執行個體必須位於 VPC 中，且必須設定為使用 Amazon 提供的 DNS 伺服器。如需有關 Amazon DNS 伺服器的資訊，請參閱《[Amazon VPC 使用者指南》中的 Amazon VPC 中的 DHCP 選項集](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html)。 **
+ 在連接 EC2 執行個體的 VPC 上，**DNS Resolution (DNS 解析)** 和 **DNS Hostnames (DNS 主機名稱)** 必須全部啟用。如需詳細資訊，請參閱《*Amazon* [ VPC 使用者指南》中的 VPC 的 DNS 屬性](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-viewing)。
+ 連接的 EC2 執行個體必須與 EFS 檔案系統位在相同的 VPC 中。如需有關存取及掛載來自其他位置或不同 VPC 之檔案系統的詳細資訊，請參閱[先決條件](mounting-fs-mount-helper-direct.md#efs-onpremises)和[教學課程：從不同的 VPC 掛載檔案系統](efs-different-vpc.md)。

**注意**  
建議您在建立掛載目標之後等待 90 秒，然後再掛載您的檔案系統。此等待可讓 DNS 記錄在檔案系統 AWS 區域 所在的 中完全傳播。

# 以 IP 地址掛載
<a name="mounting-fs-mount-cmd-ip-addr"></a>

除了以 DNS 名稱掛載 Amazon EFS 檔案系統之外，Amazon EC2 執行個體可使用掛載目標的 IP 地址來掛載檔案系統。以 IP 地址掛載的運作方式適用於 DNS 已停用的環境 (例如已停用 DNS 主機名稱的 VPC)。

您也可以使用掛載目標 IP 地址設定掛載檔案系統，做為已預設使用其 DNS 名稱掛載檔案系統之應用程式的備用選項。當連接到掛載目標 IP 地址時，EC2 執行個體應使用與連接執行個體相同之可用區域中的掛載目標 IP 地址進行掛載。

您可以在**附加**對話方塊中檢視和複製要掛載檔案系統的確切指令。

**注意**  
在掛載檔案系統之前，您需要為掛載目標安全群組新增規則，以允許從 EC2 安全群組對連接埠 2049 進行傳入 NFS 存取。如需詳細資訊，請參閱[使用 VPC 安全群組](network-access.md)。

**若想使用掛載目標的 IP 地址來檢視並複製掛載 EFS 檔案系統的確切命令**

1. 前往 [https://console.aws.amazon.com/efs/](https://console.aws.amazon.com/efs/) 開啟 Amazon Elastic File System 主控台。

1. 在 Amazon EFS 主控台中，請選擇您要掛載的檔案系統，顯示其詳細資訊頁面。

1. 若要顯示用於此檔案系統的掛載指令，請選擇右上角的**「連接」**。

1. **連接**畫面會顯示用於掛載檔案系統的確切指令。

   在 NFS 用戶端的已選可用區域中，選擇**透過 IP 掛載**，即可顯示使用掛載目標的 IP 地址來掛載檔案系統的命令。
+ 使用 `mount` 命令中的掛載目標 IP 地址時，您可以藉助下列命令在 Amazon EC2 Linux 執行個體上掛載檔案系統。

  ```
  sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport mount-target-IP:/   /efs 
  ```
+ 使用 `mount` 命令中的挂載目標 IP 地址時，您可以藉助下列命令在 Amazon EC2 Mac 執行個體上掛載檔案系統、執行 macOS Big Sur。

  ```
  sudo mount -t nfs -o nfsvers=4.0,rsize=65536,wsize=65536,hard,timeo=600,retrans=2,noresvport,mountport=2049 mount-target-IP:/ /efs
  ```
**重要**  
在執行 macOS Big Sur的 EC2 Mac 執行個體上掛載時，您必須使用 `mountport=2049` 才能成功連線到 EFS 檔案系統。

## 在 中使用 IP 地址進行掛載 AWS CloudFormation
<a name="mount-fs-ip-addr-cloudformation"></a>

您也可以使用 CloudFormation 範本中的 IP 地址來掛載檔案系統。如需詳細資訊，請參閱 [storage-efs-mountfilesystem-ip-addr.config](https://github.com/awsdocs/elastic-beanstalk-samples/blob/master/configuration-files/community-provided/instance-configuration/storage-efs-mountfilesystem-ip-addr.config)，它位於 GitHub 中用於存放社群提供之設定檔案的 **awsdocs/elastic-beanstalk-samples** 儲存庫。