演练:从不同的 VPC 挂载文件系统 - Amazon Elastic File System
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

演练:从不同的 VPC 挂载文件系统

在此演练中,您将设置 Amazon EC2 实例来挂载位于不同 Virtual Private Cloud (VPC) 中的 Amazon EFS 文件系统。您可以使用 EFS 挂载帮助程序执行该操作。挂载帮助程序是 amazon-efs-utils 工具集的一部分。有关 amazon-efs-utils 的更多信息,请参阅 使用 amazon-efs-utils 工具

必须使用 VPC 对等连接或 VPC 传输网关连接客户端的 VPC 和 EFS 文件系统的 VPC。使用 VPC 对等连接或中转网关连接 VPC 时,即使 VPC 属于不同的账户,一个 VPC 中的 Amazon EC2 实例也可以访问另一个 VPC 中的 EFS 文件系统。

注意

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

开始前的准备工作

在此演练中,我们假定您已具有:

  • 在使用此过程之前,将在 EC2 实例上安装 amazon-efs-utils 工具集。有关安装 amazon-efs-utils 的说明,请参阅使用 amazon-efs-utils 工具

  • 下列情况之一:

    • EFS 文件系统所在的 VPC 与 EC2 实例所在的 VPC 之间的 VPC 对等连接。VPC 对等连接 是两个 VPC 之间的网络连接。使用此类连接,您能够使用专用 Internet 协议版本 4 (IPv4) 或 Internet 协议版本 6 (IPv6) 地址,在它们之间路由流量。您可以使用 VPC 对等来连接位于相同Amazon Web Services 区域或介于Amazon Web Services 区域。有关更多信息,请参阅 。创建并接受 VPC 对等连接中的Amazon VPC 对等指南

    • EFS 文件系统所在的 VPC 与 EC2 实例所在的 VPC 之间的中转网关连接。中转网关 是网络中转中心,您可用它来互连 VPC 和本地网络。有关更多信息,请参阅 。中转网关入门中的亚马逊 VPC 中转网关指南

第 1 步:确定 EFS 挂载目标的可用区 ID

为了确保您的文件系统的高可用性,我们建议您始终使用与 NFS 客户端位于相同可用区中的 EFS 挂载目标 IP 地址。如果要挂载其他账户中的 EFS 文件系统,请确保 NFS 客户端和 EFS 挂载目标位于相同的可用区 ID 中。此要求适用,因为账户之间的可用区名称可能会有所不同。

确定 EC2 实例的可用区 ID

  1. 连接到 EC2 实例:

    • 要从运行 macOS 或 Linux 的计算机连接到您的实例,请为 SSH 命令指定 .pem 文件。要执行该操作,请使用 -i 选项和私有密钥路径。

    • 要从运行 Windows 的计算机连接到您的实例,可以使用 MindTerm 或 PuTTY。要使用 PuTTY,您需要安装它并将 .pem 文件转换为 .ppk 文件。

    有关详细信息,请参阅中的以下主题适用于 Linux 实例的 Amazon EC2 用户指南

  2. 确定 EC2 实例所在的可用区 IDdescribe-availability-zonesCLI 命令,如下所示。

    [ec2-user@ip-10.0.0.1] $ aws ec2 describe-availability-zones --zone-name `curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone` { "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 文件系统的主机名。

为挂载目标添加主机条目

  • 将挂载目标 IP 地址行添加到 EC2 实例的 /etc/hosts 文件中。该条目使用 mount-target-IP-Address file-system-ID.efs.region.amazonaws.com 格式。使用以下命令,将该行添加到文件中。

    echo "10.0.2.153 fs-01234567.efs.cn-northwest-1.amazonaws.com.cn" | sudo tee -a /etc/hosts

第 4 步:使用 EFS 挂载帮助程序挂载您的文件系统

要挂载 EFS 文件系统,必须先在 EC2 实例上创建挂载目录。然后,您可以使用 EFS 挂载帮助程序,通过 IAM 授权或 EFS 访问点挂载文件系统。有关更多信息,请参阅 使用 IAM 控制文件系统数据访问使用 Amazon EFS 访问点

创建挂载目录

  • 使用以下命令创建用于挂载文件系统的目录。

    $ sudo mkdir /mnt/efs/

使用 IAM 授权挂载文件系统

  • 使用以下命令,通过 IAM 授权挂载文件系统。

    $ sudo mount -t efs -o tls,iam file-system-id /mnt/efs/

使用 EFS 访问点挂载文件系统

  • 使用以下命令,通过 EFS 访问点挂载文件系统。

    $ sudo mount -t efs -o tls,accesspoint=access-point-id file-system-id /mnt/efs/

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

测试 Amazon EFS 文件系统连接

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

    $ cd ~/mnt/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

您也可以在 /etc/fstab 文件中添加条目以自动挂载文件系统。有关更多信息,请参阅使用 /etc/fstab 自动挂载

警告

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

第 5 步:清理资源并保护您的Amazon账户

完成本演练后,或者如果您不希望浏览本演练,请务必执行以下步骤。清理您的资源并保护您的Amazon Web Services 账户。

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

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

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

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

  4. 对于 Actions,选择 Delete file system

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

  6. 打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

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

    警告

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

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

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