本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon EFS:工作原理
接下来,您可以查找 Amazon EFS 的工作原理、实施细节以及安全注意事项。
主题
概览
Amazon EFS 提供了一个简单、无服务器的 set-and-forget 弹性文件系统。使用 Amazon EFS,您可以创建文件系统,在 Amazon EC2 实例上挂载文件系统,然后在文件系统中读取和写入数据。您可以通过网络文件系统版本 4.0 和 4.1 (NFSv4) 协议在虚拟私有云 (VPC) 中安装 Amazon EFS 文件系统。我们建议将最新一代的 Linux NFSv4.1 客户端,例如最新的亚马逊 Linux、亚马逊 Linux 2、Red Hat、Ubuntu 和 macOS Big Sur AMI 中的客户端,与亚马逊 EFS 挂载助手一起使用。有关说明,请参阅 使用 amazon-efs-utils 工具。
有关支持该协议的Amazon EC2 Linux 和 macOS 亚马逊机器映像 (AMI) 的列表,请参阅NFS 支持。对于某些 AMI,您必须安装 NFS 客户端才能在 Amazon EC2 实例上挂载文件系统。有关说明,请参阅 安装 NFS 客户端。
您可以从多个 NFS 客户端同时访问您的 Amazon EFS 文件系统,因此扩展到单个连接之外的应用程序可以访问文件系统。在同一可用区内运行的 Amazon EC2 和其他Amazon计算实例Amazon Web Services 区域可以访问文件系统,因此许多用户可以访问和共享公共数据源。
有关可以在Amazon Web Services 区域何处创建 Amazon EFS 文件系统的列表,请参阅A mazon Web Services 一般参考。
要在 VPC 中访问您的 Amazon EFS 文件系统,您需要在 VPC 中创建一个或多个装载目标。
对于使用标准存储类的文件系统,您可以在的每个可用区中创建装载目标Amazon Web Services 区域。
对于使用 One Zone 存储类的文件系统,您只能创建与文件系统位于同一可用区域中的单个装载目标。
有关更多信息,请参阅EFS 存储类:
装载目标为 NFSv4 终端节点提供一个 IP 地址,您可以在其中装载 Amazon EFS 文件系统。您使用其域名服务 (DNS) 名称挂载文件系统,该名称将解析为与 EC2 实例位于同一可用区中的 EFS 挂载目标的 IP 地址。您可以在的每个可用区中创建一个装载目标Amazon Web Services 区域。如果 VPC 的可用区中有多个子网,则在其中一个子网中创建挂载目标。随后,该可用区中的所有 EC2 实例都将共享该挂载目标。
Amazon EFS 文件系统一次只能在一个 VPC 中拥有挂载目标。
挂载目标本身设计为具有高可用性。在设计高可用性和故障转移到其他可用区域时,请记住,虽然每个可用区中挂载目标的 IP 地址和 DNS 是静态的,但它们是由多个资源支持的冗余组件。
使用其 DNS 名称挂载文件系统后,可以像使用任何其他符合 POSIX 标准的文件系统一样使用它。有关 NFS 级别的权限和相关注意事项的信息,请参阅在网络文件系统 (NFS) 级别处理用户、组和权限。
当连接到您的 Amazon VPC 时,您可以将 Amazon EFS 文件系统安装到本地数据中心服务器上,也可以将Amazon VPN您的 EFS 文件系统安装在本地服务器上,将数据集迁移到 EFS、启用云突发场景或将本地数据备份到 Amazon EFS。Amazon Direct Connect
亚马逊 EFS 如何与 Amazon EC2 和其他支持的计算实例配合使用
本节介绍如何将使用标准和单区存储类的 Amazon EFS 文件系统安装到 Amazon VPC 中的 EC2 实例。
Amazon EFS(标准存储类)
下图显示了多个 EC2 实例访问一个 Amazon EFS 文件系统,该文件系统配置了来自多个可用区的标准存储类别Amazon Web Services 区域。

在此图中,Amazon Virtual Viral Viral Viral Prive(VPC) 由于文件系统使用标准存储类,因此在每个可用区中创建了装载目标。出于性能和成本原因,我们建议您从同一可用区内的装载目标访问文件系统。其中一个可用区具有两个子网。但是,将仅在一个子网中创建挂载目标。创建此设置的方式如下所示:
-
创建您的 Amazon EC2 资源并启动 Amazon EC2 实例。有关 Amazon EC2 的更多信息,请参阅 Amazon EC2-虚拟服务器托管
。 -
创建 Amazon EFS 文件系统时,选择标准存储类。
-
Connect 您的 Amazon EC2 实例,挂载 Amazon EFS 文件系统。
有关详细步骤,请参阅Amazon Elastic File System。
具有单区存储类的 Amazon EFS
下图显示了多个 EC2 实例使用不同可用区中的单区存储来访问 Amazon EFS 文件系统Amazon Web Services 区域。

在此插图中,VPC 有两个可用区,每个区域都有一个子网。文件系统使用 One Zone 存储类,因此它只能有一个装载目标。为了获得更好的性能和成本,我们建议您从装载目标访问文件系统,该挂载目标与您要安装文件系统的 EC2 实例位于同一可用区。
在此示例中,us-west-2c 可用区中的 EC2 实例将为访问其他可用区中的挂载目标支付 EC2 数据访问费用。创建此设置的方式如下所示:
-
创建您的 Amazon EC2 资源并启动 Amazon EC2 实例。有关 Amazon EC2 的更多信息,请参阅 Amazon EC2
。 -
使用单区存储创建 Amazon EFS 文件系统。
-
Connect 您的每个 Amazon EC2 实例,并使用每个实例的相同装载目标装载 Amazon EFS 文件系统。
亚马逊 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连接亚马逊 VPC 付费。有关更多信息,请参阅 Amazon Direct Connect 定价
下图显示了如何从本地访问 Amazon EFS 文件系统的示例(本地服务器已安装文件系统)。

只要您能够使用本地服务器与 VPC 之间的 Amazon Direct Connect 连接访问某个挂载目标的子网,就可以在 VPC 中使用该挂载目标。要从本地服务器访问 Amazon EFS,请向您的挂载目标安全组添加规则,以允许从您的本地服务器进入 NFS 端口 (2049) 的入站流量。
要创建类似设置,您需要执行以下操作:
-
在本地数据中心和 Amazon VPC 之间建立Amazon Direct Connect连接。有关 Amazon Direct Connect 的更多信息,请参阅Amazon Direct Connect
。 -
创建您的 Amazon EFS 文件系统。
-
在本地服务器上挂载 Amazon EFS 文件系统。
有关详细步骤,请参阅演练:使用在本地创建和挂载文件系统Amazon Direct ConnectVPN 和 VPN。
亚马逊 EFS 是如何工作的Amazon Backup
要实现文件系统的全面备份,您可以将 Amazon EFS 与Amazon Backup。 Amazon Backup是一项完全托管的备份服务,可在云中以及本地方便地集中管理和自动执行跨Amazon服务的数据备份。使用Amazon Backup,您可以集中配置备份策略并监控Amazon资源的备份活动。Amazon EFS 始终将文件系统操作优先于备份操作。要了解有关使用 Amazon Backup 备份 EFS 文件系统的更多信息,请参阅Amazon 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您可以在挂载 Amazon EFS 文件系统的
mount
命令中指定此 DNS 名称。假设您在 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 的更多信息,请参阅Amazon EFS。
-
身份验证和访问控制
您必须具有有效的凭证来发起 Amazon EFS API 请求,例如创建文件系统。此外,您还必须具有创建或访问资源的权限。
您在 IAM 账户中创建的用户和角色必须被授予创建或访问资源的权限。有关权限的更多信息,请参阅Amazon Elastic System 的身份和访问管理。
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 个锁。
存储类
Amazon EFS,您可以从一系列适合不同使用案例的存储类中选择:
EFS 标准 — 用于存储经常访问的数据的区域存储类别。它通过在多个可用区中冗余存储文件系统数据来提供最高级别的可用性和耐久性Amazon Web Services 区域。
-
EFS 标准不频繁访问 (Standard-IA) — 用于不经常访问的数据的区域存储类别。它通过在多个可用区中冗余存储文件系统数据来提供最高级别的可用性和耐久性Amazon Web Services 区域。
-
EFS One Zon e — 适用于以冗余方式存储在单个可用区内的经常访问的文件Amazon Web Services 区域。
EFS One Zone-IA (One Zone-IA) — 一种成本较低的存储类别,用于不经常访问的文件,冗余存储在单个可用区内Amazon Web Services 区域。
EFS 标准存储类是区域性存储类,可在同一区域内的多个地理上分隔的可用区中冗余存储文件系统数据和元数据Amazon Web Services 区域。它们提供最高级别的可用性和耐久性,即使一个区域中的一个或多个可用区不可用,也能为数据提供持续的可用性。
EFS One Zone 存储类是成本较低的单可用区存储类。它们以冗余方式将文件系统数据和元数据存储在一个内的单个可用区中Amazon Web Services 区域。
这两种 IA 存储类都降低了并非每天都访问的文件的存储成本。如果您需要随时访问完整数据集,并且想要自动节省访问频率较低的文件的存储成本,我们建议使用 IA 存储。示例包括保持文件可访问性以满足审计要求,执行历史分析或执行备份和恢复。有关 Amazon EFS 存储类的更多信息,请参阅EFS 存储类。
EFS 生命周期管理
Amazon EFS 生命周期管理可自动为您的文件系统管理经济实惠的文件存储。启用后,生命周期管理会将一段时间内未被访问的文件迁移到不经常访问的存储类,即 Standard-IA 或 One Zone-IA。您可以使用生命周期策略定义该时间段。有关更多信息,请参阅Amazon EF 生命周期管理:
EFS 智能分层
Amazon EFS Intelligent‐Tiering 使用生命周期管理来监控您的工作负载的访问模式,并自动将文件转换到相应的低频访问 (IA) 存储类别。通过智能分层,标准存储类(EFS 标准或 EFS One Zone)中在一段时间(例如 30 天)内未被访问的文件将过渡到相应的低频访问 (IA) 存储类别。此外,如果访问模式发生变化,EFS Intelligent-Tiering 会自动将文件移回 EFS 标准或 EFS One Zone 存储类别。这有助于消除无限访问费用的风险,同时提供持续的低延迟。有关更多信息,请参阅Amazon EFS:
EFS 复制
您可以使用 Amazon EFS 复制根据Amazon Web Services 区域自己的喜好创建 Amazon EFS 文件系统的副本。启用后,Amazon EFS Replication 会自动透明地将 EFS 文件系统上的数据和元数据复制到在您选择的目标文件系统中创建Amazon Web Services 区域的新目标 EFS 文件系统。
Amazon EFS 会自动保持源和目标文件系统的同步。Amazon EFS 复制是持续的,旨在提供恢复点目标(RPO)。这些功能应帮助您实现合规性和业务连续性目标。有关更多信息,请参阅 Amazon EFS。