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)