本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:使用本地 Linux 客户端挂载
在使用 AWS Direct Connect 或 VPN 连接到 Amazon VPC 时,可以在本地数据中心服务器上挂载 Amazon EFS 文件系统。下图显示了从本地挂载 Amazon EFS 文件系统所需的 AWS 服务 的简要示意图。

注意
不支持将 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 区域中,如下图所示。

注意
在某些情况下,您的本地应用程序可能需要知道 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 文件系统
访问 https://console.aws.amazon.com/efs/
,打开 Amazon Elastic File System 控制台。 -
选择创建文件系统。
-
从 VPC 列表中选择您的默认 VPC。
-
选中所有可用区对应的复选框。确保它们全都选择了默认子网、自动 IP 地址和默认安全组。这些是您的挂载目标。有关更多信息,请参阅 管理挂载目标。
-
选择下一步。
-
命名您的文件系统,选择通用型以作为您的默认性能模式,然后选择下一步。
-
选择创建文件系统。
-
从列表中选择您的文件系统,并记下安全组值。在下一个步骤中,您需要用到此值。
您刚刚创建的文件系统具有挂载目标。每个挂载目标都具有一个关联的安全组。该安全组充当虚拟防火墙以控制网络流量。如果您在创建挂载目标时未提供安全组,Amazon EFS 会将 VPC 的默认安全组与之关联。如果您完全按照上述步骤进行操作,则挂载目标使用默认安全组。
下一步,您将向挂载目标的安全组添加一条规则,以允许入站流量进入网络文件系统 (NFS) 端口 (2049)。您可以使用 AWS Management Console将该规则添加到您的挂载目标在 VPC 中的安全组。
允许入站流量进入 NFS 端口
-
登录到 AWS Management Console 并打开 Amazon EC2 控制台(https://console.aws.amazon.com/ec2/
)。 -
在网络与安全下面,选择安全组。
-
选择与您的文件系统关联的安全组。您在步骤 1:创建您的 EFS 资源的结尾记录了该值。
-
在安全组列表下面显示的分页窗格中,选择入站选项卡。
-
选择编辑。
-
选择添加规则,然后选择以下类型的规则:
-
类型 – NFS
-
源 – 任何位置
我们建议您仅使用任何位置源进行测试。您可以创建一个设置为本地客户端 IP 地址的自定义源,或者从客户端本身中使用控制台并选择我的 IP。
注意
您不需要添加出站规则,因为默认出站规则允许所有出站流量。如果没有该默认出站规则,请添加一个出站规则以在 NFS 端口上打开 TCP 连接,从而将挂载目标安全组指定为目标。
-
步骤 2:安装 NFS 客户端
在此步骤中,安装 NFS 客户端。
在本地服务器上安装 NFS 客户端
注意
如果您需要在传输中加密数据,请使用 Amazon EFS 挂载帮助程序 amazon-efs-utils
而不是 NFS 客户端。有关安装 amazon-efs-utils 的信息,请参阅可选:加密传输中的数据 部分。
-
访问本地客户端的终端。
-
安装 NFS。
如果您使用的是 Red Hat Linux,请使用以下命令安装 NFS。
$ sudo yum -y install nfs-utils
如果您使用的是 Ubuntu,请使用以下命令安装 NFS。
$ sudo apt-get -y install nfs-common
步骤 3:在本地客户端上挂载 Amazon EFS 文件系统
创建挂载目录
-
使用以下命令为挂载点创建目录。
mkdir ~/efs
-
选择可用区中的挂载目标的所需 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 文件系统连接
-
使用以下命令将目录更改为您创建的新目录。
$ cd ~/efs
-
创建一个子目录,并将该子目录的所有权更改为您的 EC2 实例用户。接下来,使用以下命令导航到该新目录。
$ sudo mkdir getting-started $ sudo chown ec2-user getting-started $ cd getting-started
-
使用以下命令创建一个文本文件。
$ touch test-file.txt
-
使用以下命令列出目录内容。
$ ls -al
这样,将会创建以下文件。
-rw-rw-r-- 1
username
username
0 Nov 15 15:32 test-file.txt
警告
请在自动挂载文件系统时使用 _netdev
选项,它用于指定网络文件系统。如果缺少 _netdev
,您的 EC2 实例可能会停止响应。出现该结果是因为,需要在计算实例启动其网络后初始化网络文件系统。有关更多信息,请参阅 自动挂载失败,并且实例没有响应。
步骤 4:清理资源并保护您的 AWS 账户
完成本演练后,或者如果您不想探索这些演练,则应执行如下步骤以清理您的资源并保护您的 AWS 账户。
清理资源并保护您的 AWS 账户
-
使用以下命令卸载 Amazon EFS 文件系统。
$ sudo umount ~/efs
-
打开 Amazon EFS 控制台(https://console.aws.amazon.com/efs/
)。 -
选择要从文件系统列表中删除的 Amazon EFS 文件系统。
-
对于操作,选择删除文件系统。
-
在永久删除文件系统对话框中,键入要删除的 Amazon EFS 文件系统的文件系统 ID,然后选择删除文件系统。
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择 Security Groups (安全组)。
-
选择您针对本演练向其中添加了规则的安全组的名称。
警告
不要删除您的 VPC 的默认安全组。
-
对于操作,请选择编辑入站规则。
-
选择在添加的入站规则末尾的 X,然后选择保存。
可选:加密传输中的数据
要加密传输中的数据,请使用 Amazon EFS 挂载帮助程序 amazon-efs-utils 而不是 NFS 客户端。
amazon-efs-utils 软件包是一个开源 Amazon EFS 工具集。amazon-efs-utils 集附带了挂载帮助程序和一些工具,这使为 Amazon EFS 加密传输中的数据变得更轻松。有关此软件包的更多信息,请参阅安装 Amazon EFS 客户端。可以从 GitHub 中免费下载该软件包,您可以克隆该软件包的存储库从获取该软件包。
从 GitHub 克隆 amazon-efs-utils
-
访问本地客户端的终端。
-
从终端中,使用以下命令将 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
-
在客户端上打开一个终端,然后导航到具有从 GitHub 克隆的 amazon-efs-utils 软件包的目录。
-
使用以下命令构建该软件包。
make rpm
注意
如果尚未安装 rpm-builder 软件包,请使用以下命令进行安装。
sudo yum -y install rpm-build
-
使用以下命令安装 软件包。
sudo yum -y install build/amazon-efs-utils*rpm
将 amazon-efs-utils 作为 deb 软件包进行构建并安装
-
在客户端上打开一个终端,然后导航到具有从 GitHub 克隆的 amazon-efs-utils 软件包的目录。
-
使用以下命令构建该软件包。
./build-deb.sh
-
使用以下命令安装 软件包。
sudo apt-get install build/amazon-efs-utils*deb
安装该软件包后,请配置 amazon-efs-utils 以在具有 AWS Direct Connect 或 VPN 的 AWS 区域中使用。
配置 amazon-efs-utils 以在您的 AWS 区域中使用
-
使用所选的文本编辑器打开
/etc/amazon/efs/efs-utils.conf
以进行编辑。 -
查找
“dns_name_format = {fs_id}.efs.
行。{region}
.amazonaws.com” -
使用您的 AWS 区域的 ID 更改
,例如,{region}
us-west-2
。
要在本地客户端上挂载 EFS 文件系统,请先在本地 Linux 客户端上打开终端。要挂载系统,您需要使用文件系统 ID、其中一个挂载目标的 IP 地址,以及文件系统的 AWS 区域。如果您为文件系统创建了多个挂载目标,则可选择其中任一项。
在具有该信息时,您可以使用三个步骤挂载文件系统:
创建挂载目录
-
使用以下命令为挂载点创建目录。
mkdir ~/efs
-
选择可用区中的挂载目标的所需 IP 地址。您可以从本地 Linux 客户端中测量延迟。为此,请针对不同可用区中的 EC2 实例的 IP 地址使用基于终端的工具(如
ping
)以查找具有最低延迟的实例。
更新 /etc/hosts
-
在本地
/etc/hosts
文件中添加一个具有文件系统 ID 和挂载目标 IP 地址的条目,格式如下所示。mount-target-IP-Address
file-system-ID
.efs.region
.amazonaws.com.rproxy.goskope.com192.0.2.0 fs-12345678.efs.us-west-2.amazonaws.com
创建挂载目录
-
使用以下命令为挂载点创建目录。
mkdir ~/efs
-
运行 mount 命令以挂载文件系统。
sudo mount -t efs fs-12345678 ~/efs
如果要使用传输中的数据加密,mount 命令类似于以下内容。
sudo mount -t efs -o tls fs-12345678 ~/efs