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

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

Amazon EFS:工作原理

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

概述

Amazon EFS 在 AWS 云中提供文件存储。借助 Amazon EFS,您可以创建文件系统、在 Amazon EC2 实例上挂载文件系统,然后在文件系统中读取和写入数据。您可以通过网络文件系统 4.0 和 4.1 版 (NFSv4) 协议在 VPC 中挂载 Amazon EFS 文件系统。我们建议您使用当前一代 Linux NFSV4.1 客户端(例如在最新的 Amazon Linux、Redhat 和 Ubuntu AMI 中找到的客户端)以及 Amazon EFS 挂载帮助程序。有关说明,请参阅 使用 amazon-efs-utils 工具

有关支持此协议的 Amazon EC2 Linux Amazon 系统映像 (AMI) 的列表,请参阅 NFS 支持。对于某些 AMI,则需要安装 NFS 客户端以便将文件系统挂载到 Amazon EC2 实例上。有关说明,请参阅安装 NFS 客户端

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

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

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

注意

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

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

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

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

Amazon EFS 如何与 Amazon EC2 协同工作

下图显示了一个访问 Amazon EFS 文件系统的示例 VPC。在这里,VPC 中的 EC2 实例挂载有文件系统。

在此图中,VPC 有三个可用区,每个可用区中都创建了一个挂载目标。我们建议您从同一可用区内的挂载目标访问文件系统。其中一个可用区具有两个子网。但是,将仅在一个子网中创建挂载目标。创建此设置的方式如下所示:

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

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

  3. 连接至您的 Amazon EC2 实例并挂载 Amazon EFS 文件系统。

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

Amazon EFS 如何与 AWS Direct Connect 以及 AWS 托管 VPN 协同工作

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

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

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

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

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

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

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

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

  1. 在您的本地数据中心和 Amazon VPC 之间建立 AWS Direct Connect 连接。有关 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) – 有关示例,请参阅演练:使用 AWS CLI 创建 Amazon EFS 文件系统并将其挂载到 Amazon EC2 实例上

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

    • 使用 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 控制 NFS 对 Amazon EFS 的访问

Amazon EFS 中的数据一致性

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

在 Amazon EFS 中,写入操作在以下情况下将持久存储在可用区中:

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

  • 应用程序关闭文件。

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

存储类别和生命周期管理​

借助 Amazon EFS,您可以为文件系统使用两个存储类别:

  • Infrequent Access – Infrequent Access (IA) 存储类别是一种成本更低的存储类别,旨在以经济高效的方式存储长时间存在的、不经常访问的文件。

  • Standard – Standard 存储类别用于存储经常访问的文件。

EFS IA 存储类别可降低不经常访问的文件的存储成本。这样做并不会损害 EFS 提供的高可用性、高持久性、弹性和 POSIX 文件系统访问。如果您需要能够随时访问完整数据集,并希望针对访问频率较低的文件自动节省存储成本,我们建议您使用 EFS IA 存储。示例包括保持文件可访问性以满足审计要求,执行历史分析或执行备份和恢复。要了解有关 EFS 存储类别的更多信息,请参阅EFS存储类

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