本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在本教程中,您将设置一个 EC2 实例来挂载位于其他虚拟私有云 (VPC) 中的 EFS 文件系统。您可以使用 EFS 挂载帮助程序执行该操作。挂载帮助程序是 amazon-efs-utils
工具集的一部分。有关 amazon-efs-utils
的更多信息,请参阅 安装 Amazon EFS 客户端。
必须使用 VPC 对等连接或 VPC 传输网关连接客户端的 VPC 和 EFS 文件系统的 VPC。当您使用 VPC 对等连接或传输网关进行连接时 VPCs,一个 VPC 中的 EC2 实例可以访问另一个 VPC 中的 EFS 文件系统,即使 VPCs 它们属于不同的账户。
注意
不支持将 Amazon EFS 与基于 Microsoft Windows 的客户端结合使用。
主题
先决条件
要完成本教程,您必须满足以下条件:
-
在使用此过程之前,该
amazon-efs-utils
组工具已安装在 EC2 实例上。有关安装amazon-efs-utils
的说明,请参阅安装 Amazon EFS 客户端。 -
下列情况之一:
-
EFS 文件系统所在的 VPC 和 EC2 实例所在的 VPC 之间的 VPC 对等连接。VPC 对等连接是两 VPCs者之间的网络连接。这种类型的连接使您能够使用私有 Internet 协议版本 4 (IPv4) 或 Internet 协议版本 6 (IPv6) 地址在它们之间路由流量。您可以使用 VPC 对等互连 VPCs 在同一个 AWS 区域 或两者之间 AWS 区域进行连接。有关更多信息,请参阅《Amazon VPC 对等连接指南》中的创建并接受 VPC 对等连接。
-
连接 EFS 文件系统所在的 VPC 和 EC2 实例所在的 VPC 的传输网关。传输网关是一个网络中转枢纽,可用于将您的网络 VPCs 和本地网络互连。有关更多信息,请参阅《Amazon VPC Transit Gateway 指南》中的开始使用中转网关。
-
步骤 1:确定挂载目标的可用区 ID
为确保文件系统的高可用性,我们建议您始终使用与 NFS 客户端位于同一可用区的 EC2 挂载目标 IP 地址。如果要挂载其他账户中的 EFS 文件系统,请确保 NFS 客户端和 EFS 挂载目标位于相同的可用区 ID 中。此要求适用,因为可用区名称在账户之间可能会有所不同。
确定 EC2 实例的可用区 ID
-
Connect 连接到您的 EC2 实例。有关更多信息,请参阅 Amazon EC2 用户指南中的 Connect 到您的 EC2 实例。
使用
describe-availability-zones
CLI 命令确定 EC2 实例所在的可用区 ID,如下所示。[ec2-user@ip-10.0.0.1] $
aws ec2 describe-availability-zones --zone-name
{ "AvailabilityZones": [ { "State": "available", "ZoneName": "us-east-2b", "Messages": [], "ZoneId": "use2-az2", "RegionName": "us-east-2" } ] }
可用区 ID 将在
ZoneId
属性use2-az2
中返回。
步骤 2:确定挂载目标 IP 地址
现在您已经知道 EC2 实例的可用区 ID,现在可以检索位于相同可用区 ID 中的挂载目标的 IP 地址。
在同一可用区 ID 中确定挂载目标 IP 地址
-
按以下所示,使用
describe-mount-targets
CLI 命令在use2-az2
可用区 ID 中检索文件系统的挂载目标 IP 地址。$
aws efs describe-mount-targets --file-system-id
file_system_id
{ "MountTargets": [ { "OwnerId": "111122223333", "MountTargetId": "fsmt-11223344", =====> "AvailabilityZoneId": "use2-az2", "NetworkInterfaceId": "eni-048c09a306023eeec", "AvailabilityZoneName": "us-east-2b", "FileSystemId": "fs-01234567", "LifeCycleState": "available", "SubnetId": "subnet-06eb0da37ee82a64f", "OwnerId": "958322738406", =====> "IpAddress": "10.0.2.153" }, ... { "OwnerId": "111122223333", "MountTargetId": "fsmt-667788aa", "AvailabilityZoneId": "use2-az3", "NetworkInterfaceId": "eni-0edb579d21ed39261", "AvailabilityZoneName": "us-east-2c", "FileSystemId": "fs-01234567", "LifeCycleState": "available", "SubnetId": "subnet-0ee85556822c441af", "OwnerId": "958322738406", "IpAddress": "10.0.3.107" } ] }
use2-az2
可用区 ID 中的挂载目标的 IP 地址为 10.0.2.153。
步骤 3:为挂载目标添加主机条目
现在,您可以在 EC2 实例/etc/hosts
的文件中创建一个条目,将挂载目标 IP 地址映射到 EFS 文件系统的主机名。
为挂载目标添加主机条目
-
在 EC2 实例
/etc/hosts
的文件中添加一行表示挂载目标 IP 地址。该条目使用m
格式。使用以下命令,将该行添加到文件中。ount-target-IP-Address
file-system-ID
.efs.region
.amazonaws.com.rproxy.goskope.comecho "10.0.2.153 fs-01234567.efs.us-east-2.amazonaws.com" | sudo tee -a /etc/hosts
确保 EC2 实例和挂载目标的 VPC 安全组具有允许根据需要访问 EFS 文件系统的规则。有关更多信息,请参阅 对 Amazon EC2 实例和挂载目标使用 VPC 安全组。
步骤 4:使用 EFS 挂载帮助程序挂载您的文件系统
要挂载 EFS 文件系统,请先在 EC2 实例上创建挂载目录。然后,使用 EFS 挂载助手,您可以通过 AWS Identity and Access Management (IAM) 授权或 EFS 接入点挂载文件系统。有关更多信息,请参阅使用 IAM 控制文件系统数据访问 和使用 Amazon EFS 接入点工作。
创建挂载目录
-
使用以下命令创建用于挂载文件系统的目录。
$
sudo mkdir /mnt/efs/
使用 IAM 授权挂载文件系统
使用以下命令,通过 IAM 授权挂载文件系统。
$
sudo mount -t efs -o tls,iamfile-system-id
/mnt/efs/
使用 EFS 访问点挂载文件系统
使用以下命令,通过 EFS 访问点挂载文件系统。
$
sudo mount -t efs -o tls,accesspoint=access-point-id
file-system-id
/mnt/efs/
现已挂载 EFS 文件系统,您可以使用以下过程对其进行测试。
测试 EFS 文件系统连接
-
使用以下命令将目录更改为您创建的新目录。
$ cd ~/mnt/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
您也可以在 /etc/fstab
文件中添加条目以自动挂载文件系统。有关更多信息,请参阅 在现有 EC2 Linux 实例上启用自动挂载。
警告
请在自动挂载文件系统时使用 _netdev
选项,它用于指定网络文件系统。如果_netdev
缺失,您的 EC2实例可能会停止响应。出现该结果是因为,需要在计算实例启动其网络后初始化网络文件系统。有关更多信息,请参阅 自动挂载失败,并且实例没有响应。
步骤 5:清理资源并保护您的 AWS 账户
完成本教程后,请执行以下步骤以清理资源并保护您的 AWS 账户。
清理资源并保护您的 AWS 账户
-
使用以下命令卸载 EFS 文件系统。
$ sudo umount ~/efs
打开 Amazon Elastic File System 控制台,网址为https://console.aws.amazon.com/efs/
。 -
选择要从文件系统列表中删除的 EFS 文件系统。
-
对于操作,选择删除文件系统。
-
在永久删除文件系统对话框中,键入要删除的 EFS 文件系统的文件系统 ID,然后选择删除文件系统。
打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择安全组。
-
选择您针对本教程向其中添加了规则的安全组的名称。
警告
不要删除您的 VPC 的默认安全组。
-
对于操作,请选择编辑入站规则。
-
选择在添加的入站规则末尾的 X,然后选择保存。