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

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

Amazon EFS:工作原理

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

Overview

Amazon EFS 提供了一个简单、无服务器、集式且忘记的弹性文件系统。借助 Amazon EFS,您可以创建文件系统、在 Amazon EC2 实例上挂载文件系统,然后在文件系统中读取和写入数据。您可以通过网络Amazon EFS文件系统版本 4.0 和 4.1 (NFSv4 协议在 Virtual Private Cloud (VPC) 中挂载 文件系统。我们建议您将最新一代 Linux NFSv4.1 客户端(例如,在最新的 Amazon Linux、、Red Amazon Linux 2Hat、Ubuntu 和 macOS Big Sur AMIs 中找到的客户端)与 Amazon EFS 挂载帮助程序结合使用。有关说明,请参阅使用 amazon-efs-utils 工具

有关支持此协议的 Amazon EC2 Linux 和 macOS Amazon 系统映像 (AMIs) 的列表,请参阅NFS 支持。对于某些 AMIs您必须安装 NFS 客户端以在Amazon EC2实例上挂载 文件系统。有关说明,请参阅安装 NFS 客户端

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

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

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

  • 对于使用标准存储类的文件系统,您可以在AWS该区域的每个可用区中创建一个挂载目标。

  • 对于使用单区存储类的文件系统,您只需创建一个与文件系统位于同一可用区中的挂载目标。

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

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

注意

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

挂载目标本身设计为具有高可用性。在设计实现高可用性和故障转移到其他可用区时,请记住,尽管每个可用区中的挂载目标的 IP 地址和 DNS 是静态的,但它们是由多个资源支持的冗余组件。

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

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

如何与 Amazon EFS 和其他支持的计算实例Amazon EC2一起使用

本节介绍如何将使用标准和单区存储类的 Amazon EFS 文件系统挂载到 中的 EC2 实例Amazon VPC。

Amazon EFS 使用标准存储类的

下图显示了多个 EC2 实例,这些实例访问 Amazon EFS 文件系统,该系统配置了来自 AWS 区域的多个可用区的标准存储类。


        显示 VPC 中的 3 个可用区(包含 EC2 实例和挂载目标)以及挂载的 EFS 文件系统的示意图。

在此图中 Amazon Virtual Private Cloud (VPC) 有三个可用区。由于文件系统使用标准存储类别,因此在每个可用区中都创建了一个挂载目标。出于性能和成本原因,我们建议您从同一可用区内的挂载目标访问文件系统。其中一个可用区具有两个子网。但是,将仅在一个子网中创建挂载目标。创建此设置的方式如下所示:

  1. 创建您的 Amazon EC2 资源并启动您的 Amazon EC2 实例。有关 Amazon EC2 的更多信息,请参阅 Amazon EC2 – 虚拟服务器托管

  2. 在创建 文件系统时选择 RegionalAmazon EFS durability and availability (区域持久性和可用性)。

  3. 连接到您的每个Amazon EC2实例,然后挂载Amazon EFS文件系统。

有关详细步骤,请参阅开始使用 Amazon Elastic File System

Amazon EFS 使用单区存储类的

下图显示了访问 Amazon EFS 文件系统的多个 EC2 实例。该文件系统配置有来自 AWS 区域中多个可用区的单区存储。


          显示 VPC 中的 2 个可用区(包含 EC2 实例、仅一个挂载目标和一个挂载的 EFS 单区文件系统)的示意图。

在此图中,VPC 有两个可用区,每个可用区都有一个子网。文件系统使用单区存储类,因此它只能有一个挂载目标。为了提高性能和成本,我们建议您从挂载文件系统的 EC2 实例所在的可用区中的挂载目标访问文件系统。

在此示例中us-west-2c 可用区中的 EC2 实例将支付 EC2 数据访问费用,以访问不同可用区中的挂载目标。创建此设置的方式如下所示:

  1. 创建您的 Amazon EC2 资源并启动您的 Amazon EC2 实例。有关 的更多信息Amazon EC2,请参阅 Amazon EC2

  2. 使用 单区存储创建 Amazon EFS 文件系统。

  3. 连接到您的每个Amazon EC2实例,并为每个实例使用相同的挂载目标挂载Amazon EFS文件系统。

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

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

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

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

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

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

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

显示 Amazon EFS 与 结合使用AWS Direct Connect以在本地服务器上挂载 EFS 文件系统的示意图。

只要您能够使用本地服务器与 VPC 之间的 AWS Direct Connect 连接访问某个挂载目标的子网,就可以在 VPC 中使用该挂载目标。要从本地服务器访问 Amazon EFS,请向挂载目标安全组添加规则,以允许从本地服务器进入 NFS 端口 (2049) 的入站流量。

要创建类似设置,您需要执行以下操作:

  1. 在您的本地数据中心和 AWS Direct Connect 之间建立 Amazon VPC 连接。有关 AWS Direct Connect 的更多信息,请参阅 AWS Direct Connect

  2. 创建您的 Amazon EFS 文件系统。

  3. 将 Amazon EFS 文件系统挂载在本地服务器上。

有关详细步骤,请参阅演练:使用 AWS Direct Connect 和 VPN 在本地创建和挂载文件系统

Amazon EFS 如何与 AWS Backup 一起使用

要为文件系统提供全面的备份实现,您可以将 Amazon EFS 与 AWS Backup 配合使用。AWS Backup 是一种完全托管的备份服务,可以轻松地在云中的 AWS 服务与本地之间以集中、自动化的方式备份数据。使用 AWS Backup,您可以集中配置备份策略并监控 AWS 资源的备份活动。Amazon EFS 始终优先考虑文件系统操作,而后才考虑备份操作。要了解有关使用 AWS Backup 备份 EFS 文件系统的更多信息,请参阅配合使用 AWS Backup 和 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 客户端。入门练习提供了分步说明。

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

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

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

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

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

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

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

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

身份验证和访问控制

您必须具有有效的凭证来发起 Amazon EFS API 请求,例如创建文件系统。此外,您还必须具有创建或访问资源的权限。默认情况下,当您使用 AWS 账户的根账户凭证时,可以创建和访问该账户拥有的资源。但是,我们建议不要使用根账户凭证。此外,还必须向您在账户中创建的任何 AWS Identity and Access Management (IAM) 用户和角色授予创建或访问资源的权限。有关许可的更多信息,请参阅适用于 Amazon EFS 的 Identity and Access Management

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

中的数据一致性 Amazon EFS

Amazon EFS 提供了应用程序期望从 NFS 获得的关闭到打开一致性语义。

在 中Amazon EFS,写入操作在以下情况下使用标准存储类在文件系统上的可用区之间持久存储:

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

  • 应用程序关闭文件。

根据访问模式,Amazon EFS 提供了比关闭到打开一致性语义更强大的一致性保证。执行同步数据访问和执行非附加写入的应用程序对数据访问具有先写后读一致性。

存储类和生命周期管理

借助 Amazon EFS,您可以从一系列专为不同使用案例设计的存储类中进行选择:

  • EFS 标准– 经常访问的数据的区域存储类。它通过在 AWS 区域中的多个可用区中冗余存储文件系统数据,从而提供最高级别的可用性和持久性。

  • EFS 标准-不经常访问 (IA)– 用于不经常访问的数据的区域存储类。它通过跨 AWS 区域的多个可用区冗余存储文件系统数据,从而提供最高级别的可用性和持久性。

  • EFS 单区 – 适用于在 AWS 区域中单个可用区内冗余存储的经常访问的文件。

  • EFS 单区 – IA – 一个成本更低的存储类,用于 AWS 区域中单个可用区内以冗余方式存储的不经常访问的文件。

EFS 标准存储类是区域存储类,跨 区域中多个地理位置独立的可用区冗余存储文件系统数据和元数据AWS。它们提供了最高级别的可用性和持久性,即使区域中的一个或多个可用区不可用,也能提供数据的持续可用性。

EFS 单区存储类是较低成本的单可用区存储类。它们将文件系统数据和元数据冗余存储在 AWS 区域中的单个可用区中。

这两种 IA 存储类别都降低了不经常访问的文件的存储成本。如果您需要能够随时访问完整数据集,并且希望为访问频率较低的文件自动节省存储成本,我们建议您使用 IA 存储。示例包括保持文件可访问性以满足审计要求,执行历史分析或执行备份和恢复。有关Amazon EFS存储类别的更多信息,请参阅管理 EFS 存储类

Amazon EFS 生命周期管理自动针对您的文件系统管理经济高效的文件存储。启用后,生命周期管理会将在一段设定时间内未访问的文件迁移到不经常访问存储类、Standard-IA 或 One Zone-IA。您可以使用生命周期策略 定义这段时间。要了解有关生命周期管理的更多信息,请参阅Amazon EFS 生命周期管理