Amazon EFS:工作原理 - Amazon Elastic File System
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon EFS:工作原理

下面介绍了 Amazon EFS 的工作原理、其实施细节和安全注意事项。

概述

Amazon Elastic File System 提供了一个简单、无服务器的 set-and-forget 弹性文件系统。通过 Amazon EFS,您可以创建文件系统、在 Amazon EC2 实例上挂载文件系统,然后从文件系统中读取和向其写入数据。您可以通过网络文件系统 4.0 和 4.1 版 (NFSv4) 协议在虚拟私有云 (VPC) 中挂载 Amazon EFS 文件系统。我们建议您使用当前一代 Linux NFSV4.1 客户端(例如在最新的 Amazon Linux、Amazon Linux 2、Red Hat、Ubuntu 和 macOS Big Sur AMI 中找到的客户端)以及 Amazon EFS 挂载帮助程序。有关说明,请参阅使用这些 amazon-efs-utils 工具

有关支持此协议的 Amazon EC2 Linux 和 macOS 亚马逊机器映像 (AMI) 的列表,请参阅NFS 支持。对于某些 AMI,必须安装 NFS 客户端才能将文件系统挂载到 Amazon EC2 实例上。有关说明,请参阅安装 NFS 客户端

您可以从多个 NFS 客户端并发访问 Amazon EFS 文件系统,因此超出单个连接的应用程序可以访问文件系统。在同一 Amazon Web Services 区域内的多个可用区中运行的 Amazon EC2 和其他 Amazon 计算实例可以访问此文件系统,以便许多用户可以访问和共享通用数据源。

有关可创建 Amazon EFS 文件系统的 Amazon Web Services 区域列表,请参阅 Amazon Web Services 一般参考

要在 VPC 中访问 Amazon EFS 文件系统,请在 VPC 中创建一个或多个挂载目标。

  • 对于区域性文件系统,可以在 Amazon Web Services 区域的每个可用区中创建挂载目标。

  • 对于单区文件系统,只在与文件系统相同的可用区中创建单个挂载目标。

有关更多信息,请参阅EFS 存储类

挂载目标 提供可以在其中挂载 Amazon EFS 文件系统的 NFSv4 端点的 IP 地址。您使用其域名服务 (DNS) 名称挂载文件系统,该名称将解析为与 EC2 实例位于同一可用区中的 EFS 挂载目标的 IP 地址。您可以在 Amazon Web Services 区域中的每个可用区中创建一个挂载目标。如果 VPC 的可用区中有多个子网,则在其中一个子网中创建挂载目标。随后,该可用区中的所有 EC2 实例都将共享该挂载目标。

注意

一个 Amazon EFS 文件系统一次只能在一个 VPC 中具有挂载目标。

挂载目标本身设计为具有高可用性。在设计实现高可用性和失效转移到其他可用区的功能时,请务必注意,尽管您的挂载目标在每个可用区中的 IP 地址和 DNS 均为静态,但它们是由多个资源支持的冗余组件。

使用其 DNS 名称挂载文件系统后,可以像使用任何其他符合 POSIX 标准的文件系统一样使用它。有关 NFS 级别的权限和相关注意事项的信息,请参阅使用网络文件系统(NFS)级的用户、组和权限

当您使用 Amazon Direct Connect 或 Amazon VPN 连接到您的 Amazon VPC 时,可以将 Amazon EFS 文件系统挂载到本地数据中心服务器上。您可以将 EFS 文件系统挂载到本地服务器上,以便将数据集迁移到 EFS,启用云爆发方案或将本地数据备份到 Amazon EFS。

如何将 Amazon EFS 与 Amazon EC2 结合使用

本节介绍如何将 Amazon EFS 区域性和单区文件系统挂载到 Amazon VPC 中的 EC2 实例。

Amazon EFS 区域性文件系统

下图显示了多个 EC2 实例访问为 Amazon Web Services 区域中的多个可用区配置的 Amazon EFS 文件系统。


          此图显示 VPC 中的三个可用区,其中包含 EC2 实例和挂载目标,以及一个已挂载的 EFS 文件系统。

在此图中,虚拟私有云 (VPC) 有三个可用区。因为文件系统是区域性的,所以在每个可用区中都创建了一个挂载目标。出于性能和成本原因,我们建议您从同一可用区内的挂载目标访问文件系统。其中一个可用区具有两个子网。但是,将仅在一个子网中创建挂载目标。有关更多信息,请参阅 使用 EFS 挂载帮助程序挂载 EFS 文件系统 使用 EFS 挂载帮助程序在 Amazon EC2 Linux 实例上挂载

Amazon EFS 单区文件系统

下图显示了多个 EC2 实例从 Amazon Web Services 区域中的不同可用区访问单区文件系统。


          此图显示 VPC 中的两个可用区,其中包含 EC2 实例、仅一个挂载目标,以及一个已挂载的 EFS 单区文件系统。

在此图中,VPC 有两个可用区,每个可用区都有一个子网。由于文件系统类型为单区,因此它只能有一个挂载目标。为了提高性能并降低成本,我们建议您从与要挂载文件系统的 EC2 实例位于同一可用区的挂载目标访问该文件系统。

在此示例中,us-west-2c 可用区中的 EC2 实例将为访问不同可用区中的挂载目标支付 EC2 数据访问费用。有关更多信息,请参阅挂载单区文件系统

Amazon EFS 如何与 Amazon Direct Connect 和 Amazon 托管 VPN 配合使用

通过使用挂载在本地服务器上的 Amazon EFS 文件系统,可以将本地数据迁移到 Amazon EFS 文件系统中托管的 Amazon Web Services 云中。您还可以利用突增功能。换句话说,您可以将数据从本地服务器移动到 Amazon EFS,并在您的 Amazon VPC 中的一组 Amazon EC2 实例上对其进行分析。然后,您可以将结果永久存储在您的文件系统中,或将结果移回本地服务器。

在将 Amazon EFS 与本地服务器结合使用时,请注意以下事项:

  • 您的本地服务器必须有一个基于 Linux 的操作系统。我们建议使用 Linux 内核版本 4.0 或更高版本。

  • 为了简单起见,我们建议您使用挂载目标 IP 地址而不是 DNS 名称在本地服务器上挂载 Amazon EFS 文件系统。

对您的 Amazon EFS 文件系统的本地访问不会产生额外费用。将向您收取 Amazon Direct Connect 与 Amazon VPC 的连接费用。有关更多信息,请参阅Amazon Direct Connect 定价

下图显示了如何从本地(挂载了文件系统的本地服务器)访问 Amazon EFS 文件系统的示例。


        此图显示 Amazon EFS 如何与 Amazon Direct Connect 一起将 EFS 文件系统挂载到本地服务器上。

只要您能够使用本地服务器与 VPC 之间的 Amazon Direct Connect 连接访问某个挂载目标的子网,就可以在 VPC 中使用该挂载目标。要从本地服务器访问 Amazon EFS,请向挂载目标安全组添加规则,以允许从本地服务器进入 NFS 端口 (2049) 的入站流量。有关更多信息,包括详细步骤,请参阅演练:使用和 VPN 在本地创建Amazon Direct Connect和挂载文件系统

Amazon EFS 如何与 Amazon Backup 配合使用

要为文件系统实现全面的备份,您可以将 Amazon EFS 与 Amazon Backup 配合使用。Amazon Backup 是一种完全托管的备份服务,可以轻松地在云中和本地的 Amazon 服务之间以集中、自动化的方式备份数据。使用 Amazon Backup,您可以集中配置备份策略,并监控 Amazon 资源的备份活动。相对于备份操作,Amazon EFS 始终优先处理文件系统操作。要了解有关使用 Amazon Backup 备份 EFS 文件系统的更多信息,请参阅备份您的 Amazon EFS 文件系统

实现摘要

在 Amazon EFS 中,文件系统是主要资源。每个文件系统都有许多属性,例如,ID、创建令牌、创建时间、以字节为单位的文件系统大小、为文件系统创建的挂载目标的数量,以及文件系统生命周期状态。有关更多信息,请参阅CreateFileSystem

Amazon EFS 还支持使用其他资源来配置主要资源。这些包括挂载目标和访问点:

  • 挂载目标 – 要访问您的文件系统,您必须在 VPC 中创建挂载目标。每个挂载目标具有以下属性:挂载目标 ID、在其中创建挂载目标的子网 ID、为其创建挂载目标的文件系统 ID、可以挂载文件系统的 IP 地址、VPC 安全组以及挂载目标状态。您可以在 mount 命令中使用 IP 地址或 DNS 名称。

    每个文件系统都具有以下形式的 DNS 名称。

    file-system-id.efs.aws-region.amazonaws.com

    您可以在 mount 命令中指定此 DNS 名称以挂载 Amazon EFS 文件系统。假设您在 EC2 实例或本地服务器上的主目录中创建 efs-mount-point 子目录。然后,您可以使用挂载命令来挂载文件系统。例如,在 Amazon Linux AMI 中,您可以使用以下 mount 命令。

    $ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-DNS-name:/ ~/efs-mount-point

    有关更多信息,请参阅创建并管理挂载目标和安全组。首先,您需要在 EC2 实例上安装 NFS 客户端。本开始使用练习提供了 step-by-step 指导。

  • 接入点 – 接入点将操作系统用户、组和文件系统路径应用于使用接入点发出的任何文件系统请求。访问点的操作系统用户和组覆盖 NFS 客户端提供的任何身份信息。文件系统路径作为访问点的根目录向客户端公开。这可确保每个应用程序在访问共享的基于文件的数据集时始终使用正确的操作系统身份和正确的目录。使用访问点的应用程序只能访问其自己的目录及之下目录中的数据。有关更多信息,请参阅使用 Amazon EFS 访问点

挂载目标和标签是与文件系统关联的子资源。您只能在现有文件系统的上下文中创建它们。

Amazon EFS 为您提供 API 操作来创建和管理这些资源。除了每个资源的创建和删除操作外,Amazon EFS 还支持描述操作,此操作使您能够检索资源信息。可使用以下选项创建和管理这些资源:

  • 使用 Amazon EFS 控制台 – 有关示例,请参阅开始使用

  • 使用 Amazon EFS 命令行界面 (CLI) – 有关示例,请参阅 演练:创建 Amazon EC2 EFS 文件系统并使用Amazon CLI

  • 也可以通过编程方式管理这些资源,如下所示:

    • 使用 Amazon 开发工具包 – Amazon 软件开发工具包通过包装底层 Amazon EFS API 来简化编程任务。软件开发工具包客户端还通过使用您提供的访问密钥验证您的请求。有关更多信息,请参阅示例代码和库

    • 直接从应用程序调用 Amazon EFS API - 如果由于某种原因无法使用软件开发工具包,您可以直接从应用程序调用 Amazon EFS API。但是,使用该选项时您需要编写必需的代码来验证请求。有关 Amazon EFS API 的更多信息,请参阅 Azon EFS AP

身份验证和访问控制

您必须具有有效的凭证来发起 Amazon EFS API 请求,例如创建文件系统。此外,您还必须具有创建或访问资源的权限。

必须为您在 Amazon Identity and Access Management (IAM) 中创建的用户和角色授予创建或访问资源的权限。有关权限的更多信息,请参阅适用于 Amazon Elastic File System 的 Identity and Access Management

NFS 客户端的 IAM 授权是 Amazon EFS 的一个附加安全选项,它使用 IAM 来简化网络文件系统 (NFS) 客户端的大规模访问管理。通过针对 NFS 客户端的 IAM 授权,您可以使用 IAM 以本质上可扩展的方式管理对 EFS 文件系统的访问。NFS 客户端的 IAM 授权也针对云环境进行了优化。有关对 NFS 客户端使用 IAM 授权的更多信息,请参阅 使用 IAM 控制文件系统数据访问

Amazon EFS 中的数据一致性

Amazon EFS 提供了应用程序期望从 NFS 获得 close-to-open 的一致性语义。

在 Amazon EFS 中,针对区域性文件系统的写入操作在以下情况下将持久存储在各个可用区中:

  • 应用程序执行同步写入操作 (例如,使用带 open 标记的 O_DIRECT Linux 命令或使用 fsync Linux 命令)。

  • 应用程序关闭文件。

根据访问模式的不同,Amazon EFS 可以提供比 close-to-open 语义更强的一致性保证。执行同步数据访问和执行非附加写入操作的应用程序在数据访问方面具有 read-after-write 一致性。

文件锁定

NFS 客户端应用程序可以使用 NFS 版本 4 文件锁定(包括字节范围锁定)对 Amazon EFS 文件进行读写操作。

请记住以下关于 Amazon EFS 如何锁定文件的内容:

  • Amazon EFS 仅支持建议的锁定,因此读/写操作在执行之前不会检查锁定是否存在冲突。例如,为了避免原子操作出现文件同步问题,您的应用程序必须了解 NFS 语义(例如 close-to-open 一致性)。

  • 在已连接的所有实例和访问文件的用户中,任何一个特定文件最多可以有 512 个锁。

EFS 存储类

Amazon EFS 为不同的数据存储需求提供了不同的存储类。“标准”是用于写入数据的第一个存储类,也是频繁访问的数据的存储类。对于访问频率较低的文件,Amazon EFS 提供 EFS 不频繁访问 (IA) 和 EFS 归档存储类。IA 存储类针对每个季度访问几次的数据进行了成本优化,而归档存储类针对每年仅访问几次或更少次的数据进行了成本优化。有关 Amazon EFS 存储类的更多信息,请参阅EFS 存储类

生命周期管理

要管理您的文件系统,使其在整个生命周期中都能经济高效地存储,请使用生命周期管理。生命周期管理会根据为文件系统定义的生命周期配置自动在存储类别之间转换数据。生命周期配置是一组生命周期策略,用于定义何时将文件系统数据转换为其它存储类。

有关更多信息,请参阅管理文件系统存储

EFS 复制

您可以使用复制功能根据自己的喜好创建 Amazon EFS 文件系统的副本。复制会自动透明地将 EFS 文件系统上的数据和元数据复制到在您选择的环境中创建的新目标 EFS 文件系统。Amazon Web Services 区域 Amazon Web Services 区域

借助于复制,EFS 自动使源文件系统和目标文件系统保持同步。复制是连续的,旨在提供分钟级的恢复点目标 (RPO) 和恢复时间目标 (RTO)。这些特征可以帮助您实现合规性和业务连续性目标。有关更多信息,请参阅 复制文件系统