教程:使用本地 Linux 客户端挂载 - Amazon Elastic File System

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

教程:使用本地 Linux 客户端挂载

在使用 AWS Direct Connect 或 VPN 连接到 Amazon VPC 时,可以在本地数据中心服务器上挂载 Amazon EFS 文件系统。下图显示了从本地挂载 Amazon EFS 文件系统所需的 AWS 服务 的简要示意图。

使用 AWS Direct Connect 时,在本地客户端挂载 EFS 文件系统。
注意

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

先决条件

确保您已经有 AWS Direct Connect 或 VPN 连接。有关 AWS Direct Connect 的更多信息,请参阅 AWS Direct Connect 用户指南。有关设置 VPN 连接的更多信息,请参阅《Amazon VPC 用户指南》中的 VPN 连接

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

此演练在美国西部(俄勒冈州)区域(us-west-2)创建所有这些资源。不论使用哪个 AWS 区域,都请确保使用方式一致。您的所有资源(您的 VPC、挂载目标和 Amazon EFS 文件系统)都必须处于同一 AWS 区域中,如下图所示。

使用 AWS Direct Connect 时,在本地客户端挂载 EFS 文件系统。
注意

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

您可以使用 AWS 账户的根凭证登录到控制台并尝试此练习。但是,根据 AWS Identity and Access Management(IAM)最佳实践,建议您不要使用您的 AWS 账户的根凭证,而是在您的账户中创建一个管理员用户,并使用这些凭证来管理您的账户中的资源。有关更多信息,请参阅《AWS IAM Identity Center 用户指南》中的为 IAM Identity Center 用户分配 AWS 账户访问权限

您可以使用默认 VPC,也可以使用在您的账户中创建的自定义 VPC。对于本演练,可以使用默认的 VPC 配置。但是,如果您使用自定义 VPC,请验证以下情况:

  • Internet 网关已连接到您的 VPC。有关更多信息,请参阅 Amazon VPC 用户指南 中的 Internet 网关

  • VPC 路由表包含一个规则,以将 Internet 范围的所有流量发送到 Internet 网关。

步骤 1:创建您的 EFS 资源

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

创建 EFS 文件系统
  1. 访问 https://console.aws.amazon.com/efs/,打开 Amazon Elastic File System 控制台。

  2. 选择创建文件系统

  3. VPC 列表中选择您的默认 VPC。

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

  5. 选择下一步

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

  7. 选择创建文件系统

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

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

下一步,您将向挂载目标的安全组添加一条规则,以允许入站流量进入网络文件系统 (NFS) 端口 (2049)。您可以使用 AWS Management Console将该规则添加到您的挂载目标在 VPC 中的安全组。

允许入站流量进入 NFS 端口
  1. 登录到 AWS Management Console 并打开 Amazon EC2 控制台(https://console.aws.amazon.com/ec2/)。

  2. 网络与安全下面,选择安全组

  3. 选择与您的文件系统关联的安全组。您在步骤 1:创建您的 EFS 资源的结尾记录了该值。

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

  5. 选择编辑

  6. 选择添加规则,然后选择以下类型的规则:

    • 类型NFS

    • 任何位置

    我们建议您仅使用任何位置源进行测试。您可以创建一个设置为本地客户端 IP 地址的自定义源,或者从客户端本身中使用控制台并选择我的 IP

    注意

    您不需要添加出站规则,因为默认出站规则允许所有出站流量。如果没有该默认出站规则,请添加一个出站规则以在 NFS 端口上打开 TCP 连接,从而将挂载目标安全组指定为目标。

步骤 2:安装 NFS 客户端

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

在本地服务器上安装 NFS 客户端
注意

如果您需要在传输中加密数据,请使用 Amazon EFS 挂载帮助程序 amazon-efs-utils 而不是 NFS 客户端。有关安装 amazon-efs-utils 的信息,请参阅可选:加密传输中的数据 部分。

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

  2. 安装 NFS。

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

    $ sudo yum -y install nfs-utils

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

    $ sudo apt-get -y install nfs-common

步骤 3:在本地客户端上挂载 Amazon EFS 文件系统

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

    mkdir ~/efs
  2. 选择可用区中的挂载目标的所需 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

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

测试 Amazon EFS 文件系统连接
  1. 使用以下命令将目录更改为您创建的新目录。

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

    $ sudo mkdir getting-started $ sudo chown ec2-user getting-started $ cd getting-started
  3. 使用以下命令创建一个文本文件。

    $ touch test-file.txt
  4. 使用以下命令列出目录内容。

    $ ls -al

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

-rw-rw-r-- 1 username username 0 Nov 15 15:32 test-file.txt
警告

请在自动挂载文件系统时使用 _netdev 选项,它用于指定网络文件系统。如果缺少 _netdev,您的 EC2 实例可能会停止响应。出现该结果是因为,需要在计算实例启动其网络后初始化网络文件系统。有关更多信息,请参阅 自动挂载失败,并且实例没有响应

步骤 4:清理资源并保护您的 AWS 账户

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

清理资源并保护您的 AWS 账户
  1. 使用以下命令卸载 Amazon EFS 文件系统。

    $ sudo umount ~/efs
  2. 打开 Amazon EFS 控制台(https://console.aws.amazon.com/efs/)。

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

  4. 对于操作,选择删除文件系统

  5. 永久删除文件系统对话框中,键入要删除的 Amazon EFS 文件系统的文件系统 ID,然后选择删除文件系统

  6. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  7. 在导航窗格中,选择 Security Groups (安全组)

  8. 选择您针对本演练向其中添加了规则的安全组的名称。

    警告

    不要删除您的 VPC 的默认安全组。

  9. 对于操作,请选择编辑入站规则

  10. 选择在添加的入站规则末尾的 X,然后选择保存

可选:加密传输中的数据

要加密传输中的数据,请使用 Amazon EFS 挂载帮助程序 amazon-efs-utils 而不是 NFS 客户端。

amazon-efs-utils 软件包是一个开源 Amazon EFS 工具集。amazon-efs-utils 集附带了挂载帮助程序和一些工具,这使为 Amazon EFS 加密传输中的数据变得更轻松。有关此软件包的更多信息,请参阅安装 Amazon EFS 客户端。可以从 GitHub 中免费下载该软件包,您可以克隆该软件包的存储库从获取该软件包。

从 GitHub 克隆 amazon-efs-utils
  1. 访问本地客户端的终端。

  2. 从终端中,使用以下命令将 amazon-efs-utils 工具从 GitHub 克隆到所选的目录中。

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

现已具有该软件包,您可以开始进行安装了。该安装是以不同方式处理的,具体取决于本地客户端的 Linux 发行版。支持以下发行版:

  • Amazon Linux 2

  • Amazon Linux

  • Red Hat Enterprise Linux(和衍生产品,如 CentOS)7 和更新版本

  • Ubuntu 16.04 LTS 和更新版本

作为 RPM 软件包构建并安装 amazon-efs-utils
  1. 在客户端上打开一个终端,然后导航到具有从 GitHub 克隆的 amazon-efs-utils 软件包的目录。

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

    make rpm
    注意

    如果尚未安装 rpm-builder 软件包,请使用以下命令进行安装。

    sudo yum -y install rpm-build
  3. 使用以下命令安装 软件包。

    sudo yum -y install build/amazon-efs-utils*rpm
将 amazon-efs-utils 作为 deb 软件包进行构建并安装
  1. 在客户端上打开一个终端,然后导航到具有从 GitHub 克隆的 amazon-efs-utils 软件包的目录。

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

    ./build-deb.sh
  3. 使用以下命令安装 软件包。

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

安装该软件包后,请配置 amazon-efs-utils 以在具有 AWS Direct Connect 或 VPN 的 AWS 区域中使用。

配置 amazon-efs-utils 以在您的 AWS 区域中使用
  1. 使用所选的文本编辑器打开 /etc/amazon/efs/efs-utils.conf 以进行编辑。

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

  3. 使用您的 AWS 区域的 ID 更改 {region},例如,us-west-2

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

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

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

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

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

    mount-target-IP-Address file-system-ID.efs.region.amazonaws.com
    192.0.2.0 fs-12345678.efs.us-west-2.amazonaws.com
创建挂载目录
  1. 使用以下命令为挂载点创建目录。

    mkdir ~/efs
  2. 运行 mount 命令以挂载文件系统。

    sudo mount -t efs fs-12345678 ~/efs

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

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