教程:从不同的文件系统挂载文件系统 VPC - Amazon Elastic File System

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

教程:从不同的文件系统挂载文件系统 VPC

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

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

注意

不支持在基于微软 Windows 的客户端上使用亚马逊EFS。

先决条件

要完成本教程,您必须具备以下条件:

  • 在使用此过程之前,该amazon-efs-utils组工具已安装在EC2实例上。有关安装 amazon-efs-utils 的说明,请参阅安装亚马逊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 Transit Gateways 指南中的中VPC转网关入门

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

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

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

  2. 使用describe-availability-zonesCLI命令确定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-targetsCLI命令在 use2-az2 AZ 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. 在EC2实例/etc/hosts的文件中添加一行表示挂载目标 IP 地址。该条目使用 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 实例和挂载目标使用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,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. 打开 Amazon Elastic File System 控制台,网址为https://console.aws.amazon.com/efs/

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

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

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

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

  7. 在导航窗格中,选择安全组

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

    警告

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

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

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