Amazon Elastic File System (EFS)

EFS 简介

Amazon Elastic File System (Amazon EFS) 提供无服务器、完全弹性的文件存储,让使用者无需配置或管理存储容量和性能即可共享文件数据。Amazon EFS 旨在按需扩展至 PB 级别,而不会影响应用程序,自动根据使用者添加和删除文件进行增长和缩小。由于 Amazon EFS 具有简单的 Web 服务接口,使用者可以快速轻松地创建和配置文件系统。该服务为使用者管理所有文件存储基础设施,这意味着使用者可以避免部署、修补和维护复杂的文件系统配置的复杂性。

服务旨在实现高度可扩展、高度可用和高度耐用。Amazon EFS 提供以下文件系统类型,以满足使用者的可用性和耐用性需求:

  • 区域(推荐)—— 建议使用区域文件系统存储数据,该系统将数据冗余地存储在同一 AWS 区域内多个地理上分离的可用区中。在多个可用区存储数据可以确保数据的持续可用性,即使在 AWS 区域内的一个或多个可用区不可用的情况下。以 EC2 为例:

  • 一个区域 - 一个区域的文件系统将数据存储在单个可用区中。在单个可用区中存储数据可以保证数据的持续可用性。然而,在某些的情况下,如果整个可用区或其部分丢失或损坏,存储在这些类型的文件系统中的数据可能会丢失。以 EC2 为例:

 除了 EC2 可挂载使用外,还可以使用 AWS Direct Connect 和 AWS Managed VPN 进行本地服务器的挂载使用。如以下架构图:

 还可以将 EFS 的数据进行备份,使用 Amazon EFS 与 AWS Backup 结合。AWS Backup 是一项完全托管的备份服务,它使得在云和本地环境中集中和自动化跨 AWS 服务的数据备份变得简单。使用 AWS Backup,可以集中配置备份策略并监控 AWS 资源的备份活动。Amazon EFS 始终将文件系统操作优先于备份操作。

EFS 简单使用

创建安全组以访问 Amazon EFS 文件系统

我们以 EC2 连接作为示例,所以需要先创建好一个 EC2,需要可以连接上,并且允许对挂载目标在 TCP 端口 2049 上的出站访问。

关联的挂载目标的安全组必须允许所有挂载文件系统的 EC2 实例对 TCP 协议的 2049 端口进行入站访问,以便使用 NFS。

创建 Amazon EFS 文件系统

EFS 文件系统可以挂载到同一区域内不同可用区运行的多个 Amazon EC2 实例。一次只能将文件系统挂载到同一个 Amazon 虚拟私有云(Amazon VPC)的实例上,并且文件系统和 VPC 必须在同一区域内。

配置可以自行选择,如:Lifecycle management、Customize encryption settings

Network access:选择两个可用区的子网,选择创建的安全组

完成网络设置后直接创建即可,不做权限策略。创建完成后,点击 Attach 查看挂载命令

然后就可以看到两中挂载方式,可以通过 DNS 和 IP 进行挂载

使用 DNS 进行挂载

EFS mount helper:

使用 EFS 挂载是需要先下载 EFS 客户端,以 Amazon EC2 Linux 实例为例,使用以下命令进行安装,其他系统可在此官方链接自行查找:Installing the Amazon EFS client - Amazon Elastic File System

sudo yum install -y amazon-efs-utils

然后再进行挂载

sudo mount -t efs -o tls fs-XXX:/ efs

NFS client:

使用 NFS 客户端就无需下载 EFS 客户端,直接挂载即可

sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-XXX.efs.us-west-2.amazonaws.com:/ efs
使用 IP 地址挂载

使用IP地址挂载时,需要确保连接到的挂载目标IP地址与连接EC2实例位于同一个可用区中的挂载目标IP地址

连接到 EC2 创建新目录并挂载 Amazon EFS 文件系统

下载 EFS 客户端(命令在上面)

创建挂载目录

sudo mkdir efs

挂载目录(命令在 EFS 的Attach)

sudo mount -t efs -o tls fs-XXX:/ efs

获取可用和已用磁盘空间,可以看到我们创建的挂载目录被挂载了

sudo df -hT

注意:文件系统值是系统回环地址(127.0.0.1:/)。因为运行的挂载命令使用了 EFS 文件系统 ID,挂载助手将其解析为挂载目标弹性网络接口(ENI)的本地 IP 地址,而不调用外部资源。如果使用 NFS 客户端命令,文件系统值将取决于选择的是 DNS 名称还是 IP 地址。

(如果有多个 EC2 进行挂载,可以在挂载目录创建文件进行测试挂载是否成功,若成功则在两个 EC2 的挂载目录都可以看到创建的文件)

检查新的Amazon Elastic File System(EFS)的性能行为

检查使用灵活的 I/O 性能

使用 fio 检查 EFS 文件系统的写性能特性

sudo fio --name=fio-efs --filesize=2G --filename=./efs/fio-efs-test.img --bs=1M --nrfiles=1 --direct=1 --sync=0 --rw=write --iodepth=200 --ioengine=libaio
使用 Amazon CloudWatch 性能

在 CloudWatch Metrics 中找到 EFS 的指标,选中即可看到线形图,等待几分钟即可

(该文档的架构图取自官方文档How Amazon EFS works - Amazon Elastic File System

03-08
### Elastic File System (EFS) API 文档与使用 Amazon EFS 提供了一套完整的 RESTful API,允许开发者通过编程方式管理文件系统资源。这些API支持创建、删除文件系统,挂载目标的操作,访问描述符的获取等功能[^1]。 对于希望集成 Amazon EFS 到应用程序中的开发人员来说,官方提供的 SDK 和命令行工具(CLI)简化了这一过程。SDK 支持多种主流编程语言,如 Python (Boto3), Java, .NET 等;而 CLI 工具则提供了更便捷的方式来进行日常管理和维护工作[^2]。 当涉及到具体的应用场景时,比如将数据从本地 CSV 文件导入至基于云的服务中,可以借鉴类似的逻辑结构。例如,在处理 Elasticsearch 数据输入时采用 Logstash 进行日志收集和解析,并最终写入到指定索引内[^3]。不过需要注意的是,这里提到的例子主要针对的是Elasticsearch而非EFS的具体操作流程。 为了更好地理解和利用 EFS 的功能特性,建议直接查阅 AWS 官方文档中关于 EFS API 的部分。这其中包括详细的请求格式说明、响应参数解释以及错误码定义等内容。此外,AWS 还提供了一系列最佳实践指南帮助用户优化其云端存储解决方案的设计与实现[^4]。 #### 使用Python(Boto3) 创建EFS实例示例 ```python import boto3 client = boto3.client('efs') response = client.create_file_system( CreationToken='unique-string', PerformanceMode='generalPurpose'|'maxIO' ) print(response['FileSystemId']) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值