

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 教程：使用本地 Linux 客户端挂载
<a name="mounting-fs-mount-helper-direct"></a>

当通过 Amazon Direct Connect 或 VPN 连接到 Amazon VPC 时，您可以将 EFS 文件系统挂载到本地数据中心服务器上。下图显示了从本地安装 EFS 文件系统 Amazon Web Services 服务 所需的高级示意图。

![使用 Amazon Direct Connect时，在本地客户端挂载 EFS 文件系统。](http://docs.amazonaws.cn/efs/latest/ug/images/efs-directconnect-how-it-works.png)


**注意**  
不支持将 Amazon EFS 与基于 Microsoft Windows 的客户端结合使用。

**Topics**
+ [先决条件](#efs-onpremises)
+ [步骤 1：创建您的 EFS 资源](#wt5-step1-efs)
+ [步骤 2：安装 NFS 客户端](#wt5-step4-install-nfs)
+ [步骤 3：在本地客户端上挂载 EFS 文件系统](#wt5-step3-connect)
+ [第 4 步：清理资源并保护您的 Amazon 账户](#wt5-step4-cleanup)
+ [可选：加密传输中的数据](#wt5-step2-get-efs-utils)

## 先决条件
<a name="efs-onpremises"></a>

确保您已经有 Amazon Direct Connect 或 VPN 连接。有关 Amazon Direct Connect的更多信息，请参阅 [Amazon Direct Connect 用户指南](https://docs.amazonaws.cn/directconnect/latest/UserGuide/Welcome.html)。有关设置 VPN 连接的更多信息，请参阅《Amazon VPC 用户指南》**中的[使用 Amazon Virtual Private Network将 VPC 连接到远程网络](https://docs.amazonaws.cn/vpc/latest/userguide/vpn-connections.html)。

建立 Amazon Direct Connect 或 VPN 连接后，在您的 Amazon VPC 中创建一个 EFS 文件系统和一个挂载目标。之后，您就可以下载并安装这些 amazon-efs-utils工具。接下来，您从本地客户端中测试文件系统。最后，本演练结束时的清理步骤提供了删除这些资源的信息。

此演练在美国西部（俄勒冈州）区域（`us-west-2`）创建所有这些资源。无论 Amazon Web Services 区域 您使用哪种方式，请务必始终如一地使用它。您的所有资源（您的 VPC、挂载目标和 EFS 文件系统）都必须位于 Amazon Web Services 区域同一位置，如下图所示。

![使用 Amazon Direct Connect时，在本地客户端挂载 EFS 文件系统。](http://docs.amazonaws.cn/efs/latest/ug/images/efs-directconnect-how-it-works.png)


**注意**  
在某些情况下，您的本地应用程序可能需要知道 EFS 文件系统是否可用。在这些情况下，您的应用程序应能在第一个挂载点暂时不可用时指向其他挂载点 IP 地址。在这种情况下，我们建议您将两个本地客户端通过不同的可用区 (AZs) 连接到您的文件系统，以获得更高的可用性。

您可以使用您的根凭证 Amazon Web Services 账户 登录控制台并尝试本练习。但是， Amazon Identity and Access Management (IAM) 最佳实践建议您不要使用自己的根证书 Amazon Web Services 账户。而是在您的账户中创建一个管理员用户，并使用这些凭证来管理您的账户中的资源。有关更多信息，请参阅《Amazon IAM Identity Center 用户指南》**中的[单点登录访问 Amazon Web Services 账户](https://docs.amazonaws.cn/singlesignon/latest/userguide/useraccess.html)。

您可以使用默认 VPC，也可以使用在您的账户中创建的自定义 VPC。对于本演练，可以使用默认的 VPC 配置。但是，如果您使用自定义 VPC，请验证以下情况：
+ Internet 网关已连接到您的 VPC。有关更多信息，请参阅《Amazon VPC 用户指南》**中的[使用互联网网关启用 VPC 互联网访问](https://docs.amazonaws.cn/vpc/latest/userguide/VPC_Internet_Gateway.html)。
+ VPC 路由表包含一个规则，以将 Internet 范围的所有流量发送到 Internet 网关。

## 步骤 1：创建您的 EFS 资源
<a name="wt5-step1-efs"></a>

在此步骤中，您将创建 EFS 文件系统和挂载目标。

**创建 EFS 文件系统**

1. 打开 Amazon Elastic File System 控制台，网址为[https://console.aws.amazon.com/efs/](https://console.amazonaws.cn/efs/)。

1. 选择**创建文件系统**。

1. 从 **VPC** 列表中选择您的默认 VPC。

1. 选中所有可用区对应的复选框。确保它们全都选择了默认子网、自动 IP 地址和默认安全组。这些是您的挂载目标。有关更多信息，请参阅 [管理挂载目标](accessing-fs.md)。

1. 选择**下一步**。

1. 命名您的文件系统，选择**通用型**以作为您的默认性能模式，然后选择**下一步**。

1. 选择**创建文件系统**。

1. 从列表中选择您的文件系统，并记下**安全组**值。在下一个步骤中，您需要用到此值。

您刚刚创建的文件系统具有挂载目标。每个挂载目标都具有一个关联的安全组。该安全组充当虚拟防火墙以控制网络流量。如果您在创建挂载目标时未提供安全组，Amazon EFS 会将 VPC 的默认安全组与之关联。如果您完全按照上述步骤进行操作，则挂载目标使用默认安全组。

下一步，您将向挂载目标的安全组添加一条规则，以允许入站流量进入网络文件系统 (NFS) 端口 (2049)。您可以使用将规则 Amazon Web Services 管理控制台 添加到您的 VPC 中挂载目标的安全组中。

**允许入站流量进入 NFS 端口**

1. 登录 Amazon Web Services 管理控制台 并打开 Amazon EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.amazonaws.cn/ec2/)。

1. 在**网络与安全**下面，选择**安全组**。

1. 选择与您的文件系统关联的安全组。您在[步骤 1：创建您的 EFS 资源](#wt5-step1-efs)的结尾记录了该值。

1. 在安全组列表下面显示的分页窗格中，选择**入站**选项卡。

1. 选择**编辑**。

1. 选择**添加规则**，然后选择以下类型的规则：
   + **类型** – **NFS**
   + **源** – **任何位置**

   我们建议您仅使用**任何位置**源进行测试。您可以创建一个设置为本地客户端 IP 地址的自定义源，或者从客户端本身中使用控制台并选择**我的 IP**。
**注意**  
您不需要添加出站规则，因为默认出站规则允许所有出站流量。如果没有该默认出站规则，请添加一个出站规则以在 NFS 端口 2049 上打开 TCP 连接，从而将挂载目标安全组指定为目标。

## 步骤 2：安装 NFS 客户端
<a name="wt5-step4-install-nfs"></a>

在此步骤中，安装 NFS 客户端。

**在本地服务器上安装 NFS 客户端**
**注意**  
如果您需要在传输中加密数据，请使用 Amazon EFS 挂载帮助程序 `amazon-efs-utils` 而不是 NFS 客户端。有关安装的信息 amazon-efs-utils，请参阅 “*可选：加密传输中的数据*” 部分。

1. 访问本地客户端的终端。

1. 安装 NFS。

   如果您使用的是 Red Hat Linux，请使用以下命令安装 NFS。

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

   如果您使用的是 Ubuntu，请使用以下命令安装 NFS。

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

## 步骤 3：在本地客户端上挂载 EFS 文件系统
<a name="wt5-step3-connect"></a>

**创建挂载目录**

1.  使用以下命令为挂载点创建目录。  
**Example**  

   ```
   mkdir ~/efs
   ```

1. 选择可用区中的挂载目标的所需 IP 地址。您可以从本地 Linux 客户端中测量延迟。为此，请针对不同可用区中的 EC2 实例的 IP 地址使用基于终端的工具（如 `ping`）以查找具有最低延迟的实例。
+ 运行挂载命令以使用挂载目标的 IP 地址挂载文件系统。

  ```
  $ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport {{mount-target-IP}}:/   ~/efs
  ```

现已挂载 EFS 文件系统，您可以使用以下过程对其进行测试。

**测试 EFS 文件系统连接**

1. 使用以下命令将目录更改为您创建的新目录。

   ```
   $ cd ~/efs
   ```

1. 创建一个子目录，并将该子目录的所有权更改为您的 EC2 实例用户。接下来，使用以下命令导航到该新目录。

   ```
   $ sudo mkdir getting-started
   $ sudo chown ec2-user getting-started
   $ cd getting-started
   ```

1. 使用以下命令创建一个文本文件。

   ```
   $ touch test-file.txt
   ```

1. 使用以下命令列出目录内容。

   ```
   $ ls -al
   ```

这样，将会创建以下文件。

```
-rw-rw-r-- 1 {{username}} {{username}} 0 Nov 15 15:32 test-file.txt
```

**警告**  
请在自动挂载文件系统时使用 `_netdev` 选项，它用于指定网络文件系统。如果缺少 `_netdev`，您的 EC2 实例可能会停止响应。出现该结果是因为，需要在计算实例启动其网络后初始化网络文件系统。有关更多信息，请参阅 [自动挂载失败，并且实例没有响应](troubleshooting-efs-mounting.md#automount-fails)。

## 第 4 步：清理资源并保护您的 Amazon 账户
<a name="wt5-step4-cleanup"></a>

完成本演练后，或者如果您不想探索这些演练，则应执行如下步骤以清理您的资源并保护您的 Amazon 账户。

**清理资源并保护您的 Amazon Web Services 账户**

1. 使用以下命令卸载 EFS 文件系统。

   ```
   $ sudo umount ~/efs
   ```

1. 单击 [Amazon EFS 控制台](https://console.amazonaws.cn/efs/)，打开 Amazon EFS 控制台。

1. 选择要从文件系统列表中删除的 EFS 文件系统。

1. 对于**操作**，选择**删除文件系统**。

1. 在**永久删除文件系统**对话框中，键入要删除的 EFS 文件系统的文件系统 ID，然后选择**删除文件系统**。

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.amazonaws.cn/ec2/) 的 Amazon EC2 控制台。

1. 在导航窗格中，选择**安全组**。

1. 选择您针对本演练向其中添加了规则的安全组的名称。
**警告**  
不要删除您的 VPC 的默认安全组。

1. 对于**操作**，请选择**编辑入站规则**。

1. 选择在添加的入站规则末尾的 X，然后选择**保存**。

## 可选：加密传输中的数据
<a name="wt5-step2-get-efs-utils"></a>

要对传输中的数据进行加密，请使用 Amazon EFS 挂载帮助程序代替 NFS 客户端。 amazon-efs-utils

*amazon-efs-utils * 软件包是一个开源 Amazon EFS 工具集。该 amazon-efs-utils集合附带挂载助手和工具，可以更轻松地加密传输给 Amazon EFS 的数据。有关此软件包的更多信息，请参阅[安装 Amazon EFS 客户端](using-amazon-efs-utils.md)。该软件包可从免费下载 GitHub，您可以通过克隆软件包的存储库来获取。

**要 amazon-efs-utils从中进行克隆 GitHub**

1. 访问本地客户端的终端。

1. 在终端中，使用以下命令将 amazon-efs-utils工具克隆 GitHub 到您选择的目录中。

   ```
   git clone https://github.com/aws/efs-utils
   ```

现已具有该软件包，您可以开始进行安装了。该安装是以不同方式处理的，具体取决于本地客户端的 Linux 发行版。支持以下发行版：
+ Amazon Linux 2
+ Amazon Linux
+ 红帽企业 Linux（以及诸如 CentOS 之类的衍生产品）版本 8 及更高版本
+ Ubuntu 16.04 LTS 和更新版本

**amazon-efs-utils作为 RPM 软件包进行编译和安装**

1. 在您的客户端上打开终端，然后导航到包含克隆 amazon-efs-utils软件包的 GitHub目录。

1. 使用以下命令构建该软件包。

   ```
   make rpm
   ```
**注意**  
如果尚未安装 rpm-builder 软件包，请使用以下命令进行安装。  

   ```
   sudo yum -y install rpm-build
   ```

1. 使用以下命令安装 软件包。

   ```
   sudo yum -y install build/amazon-efs-utils*rpm
   ```

**amazon-efs-utils作为 deb 软件包进行构建和安装**

1. 在您的客户端上打开终端，然后导航到包含克隆 amazon-efs-utils软件包的 GitHub目录。

1. 使用以下命令构建该软件包。

   ```
   ./build-deb.sh
   ```

1. 使用以下命令安装 软件包。

   ```
   sudo apt-get install build/amazon-efs-utils*deb
   ```

安装软件包后，配置 amazon-efs-utils为在 with Amazon Direct Connect 或 VPN 中使用。 Amazon Web Services 区域 

**配置 amazon-efs-utils为在您的 Amazon Web Services 区域**

1. 通过 Secure Shell（SSH）访问您的 EC2 实例的终端，然后使用相应的用户名登录。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[连接到您的 EC2 实例](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/connect.html)。

1. 使用所选的文本编辑器打开 `/etc/amazon/efs/efs-utils.conf` 文件。

1. 查找 `“dns_name_format = {fs_id}.efs.{{{region}}}.amazonaws.com”` 行。

1. 使用您的 Amazon 区域的 ID 更改 `{{{region}}}`，例如，`us-west-2`。

要在本地客户端上挂载 EFS 文件系统，请先在本地 Linux 客户端上打开终端。要挂载系统，您需要使用文件系统 ID、其中一个挂载目标的 IP 地址，以及文件系统的 Amazon Web Services 区域。如果您为文件系统创建了多个挂载目标，则可选择其中任一项。

在具有该信息时，您可以使用三个步骤挂载文件系统：

**创建挂载目录**

1.  使用以下命令为挂载点创建目录。  
**Example**  

   ```
   mkdir ~/efs
   ```

1. 选择可用区中的挂载目标的所需 IP 地址。您可以从本地 Linux 客户端中测量延迟。为此，请针对不同可用区中的 EC2 实例的 IP 地址使用基于终端的工具（如 `ping`）以查找具有最低延迟的实例。

**更新 `/etc/hosts`**
+ 在本地 `/etc/hosts` 文件中添加一个具有文件系统 ID 和挂载目标 IP 地址的条目，格式如下所示。

  ```
  {{mount-target-IP-Address}} {{file-system-ID}}.efs.{{region}}.amazonaws.com
  ```  
**Example**  

  ```
  192.0.2.0 fs-12345678.efs.us-west-2.amazonaws.com
  ```

**创建挂载目录**

1.  使用以下命令为挂载点创建目录。  
**Example**  

   ```
   mkdir ~/efs
   ```

1. 运行 mount 命令以挂载文件系统。  
**Example**  

   ```
   sudo mount -t efs fs-12345678 ~/efs
   ```

   如果要使用传输中的数据加密，mount 命令类似于以下内容。  
**Example**  

   ```
   sudo mount -t efs -o tls fs-12345678 ~/efs
   ```