教程:挂载来自其它 VPC 的文件系统 - Amazon Elastic File System

教程:挂载来自其它 VPC 的文件系统

在此教程中,您将设置一个 EC2 实例来挂载位于其它虚拟私有云(VPC)中的 EFS 文件系统。您可以使用 EFS 挂载帮助程序执行该操作。挂载帮助程序是 amazon-efs-utils 工具集的一部分。有关 amazon-efs-utils 的更多信息,请参阅 安装 Amazon EFS 客户端

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

注意

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

先决条件

要完成本教程,您必须满足以下条件:

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

  • 下列情况之一:

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

    • EFS 文件系统所在的 VPC 与 EC2 实例所在的 VPC 之间的中转网关连接。中转网关是网络中转中心,您可用它来互连 VPC 和本地网络。有关更多信息,请参阅《Amazon VPC Transit Gateway 指南》中的开始使用中转网关

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

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

确定 EC2 实例的可用区 ID
  1. 连接到您的 EC2 实例。有关更多信息,请参阅《Amazon EC2 用户指南》中的连接到您的 EC2 实例

  2. 按以下所示,使用 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 文件系统的主机名。

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

    echo "10.0.2.153 fs-01234567.efs.us-east-2.amazonaws.com" | sudo tee -a /etc/hosts
  2. 确保 EC2 实例和挂载目标的 VPC 安全组具有允许根据需要访问 EFS 文件系统的规则。有关更多信息,请参阅 使用 Amazon EC2 实例和挂载目标的安全组

步骤 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,iam file-system-id /mnt/efs/
使用 EFS 访问点挂载文件系统
  • 使用以下命令,通过 EFS 访问点挂载文件系统。

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

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

测试 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 文件中添加条目以自动挂载文件系统。有关更多信息,请参阅 在现有 EC2 Linux 实例上启用自动挂载

警告

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

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

完成本教程后,请执行以下步骤以清理资源并保护您的 AWS 账户。

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

    $ sudo umount ~/efs
  2. 访问 https://console.aws.amazon.com/efs/,打开 Amazon Elastic File System 控制台。

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

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

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

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

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

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

    警告

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

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

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