AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

利用 EFS 快速搭建 NFS 文件系统

  • 2020-02-27
  • 本文字数:4193 字

    阅读完需:约 14 分钟

利用 EFS 快速搭建 NFS 文件系统

Amazon Elastic File System (Amazon EFS) 是 AWS 云上一个全托管的弹性 NFS 文件系统服务。EFS 具有简单易用并可扩展的特性,与 AWS 的其他云服务紧密集成,同时也可以被本地数据中心所使用。EFS 设计为可根据文件存储变化而自动进行扩缩容,同时对应用不产生中断。用户无须手动去进行存储空间的管理。EFS 托管服务会自动管理文件存储底层的基础架构,用户无须关心文件系统部署、补丁管理和配置维护的技术细节,相比以往自建 NFS 服务器的方式,运维效率得到提高,成本也相应下降。


目前 EFS 已在在西云数据运营的 AWS 中国(宁夏)区域和光环新网运营的 AWS 中国(北京)区域上线。

EFS 架构与基本概念

在控制台实际操作前,我们可以先简单了解一下 EFS 的架构和基本概念



上图是一个 AWS 区域中 EC2 实例访问 EFS 的架构示例,几个常见的概念简述如下:


  • 文件系统(Filesystem)


EFS 是一个区域性的服务,即托管文件系统的数据和元数据会自动存储在 AWS 区域内的多个可用区,以实现跨可用区的数据保护。VPC 内的 EC2 实例或用户数据中心内的服务器均可通过网络以 Network File System version4(NFS v4.1 和 V4.0)协议对文件系统进行访问。


  • 挂载目标(Mount Target)


VPC 中的 EC2 实例通过挂载目标来访问文件系统。挂载目标提供了 VPC 内的一个 IP 地址,每个可用区可以配置一个挂载目标,以便作为该可用区内的 NFS 服务器端点。挂载目标虽然是一个静态 IP,但本身是进行高可用设计的,后面对应的是冗余的资源。EC2 实例挂载时,可以直接指定一个对与文件系统一一对应的 DNS 域名,该域名会自动解析到 EC2 实例所在子网所对应的挂载目标上,从而简化文件系统的挂载工作。如果通过挂载帮助程序,则可以直接指定文件系统 ID。


  • 权限控制


在网络层面,每个挂载目标可以设定一个或多个安全组,即类似于防火墙,可以设定哪些 EC2 实例有权限访问该挂载目标从而挂载文件系统。此外,用户可以使用文件系统策略(File System Policy)和访问点(Access Point)来进行更细粒度的权限控制。

演示

接下来会以宁夏区为例介绍如何快速部署一个 EFS 文件系统并挂载至 EC2 实例上

1. 创建文件系统

1.1 配置网络访问

指定 EFS 文件系统所对应的 VPC,及在对应的子网创建挂载目标并设置安全组。



  • 一个文件系统仅对应一个 VPC,但其他 VPC 的 EC2 实例可以通过 VPC Peering 打通 VPC 间的通道后再进行 EFS 文件系统挂载。

  • 每个可用区建议对应创建一个挂载目标,这样可以确保不同可用区的 EC2 实例均可挂载文件系统。如果该可用区中有多个子网,只需要选择其中一个即可,该可用区下所有子网均可以访问到对应的挂载目标。

  • 如果后续文件系统需要更换 VPC,可以先将挂载目标删除后再进行更换。


本次演示会使用向导所指定的 VPC 默认安全组,同时后续 EC2 实例也会挂载该安全组以便与挂载目标进行通信。

1.2 配置文件系统设置

指定 EFS 文件系统的标签、生命周期管理策略、与性能相关的模式设置和数据加密等



  • 通过标签(Tag)可以为文件系统进行描述

  • 通过生命周期管理策略, EFS 可以自动将指定时间(如 7 或 14 天或至最长 90 天)未访问的数据自动从 EFS Standard 转换至 EFS IA(Infrequent Access, 不常访问)。该功能可以简单的理解为数据自动的冷热分层。EFS IA 对应的是冷存储层,相比 EFS Standard 来说单位存储成本更低,且不会牺牲可用性、持久性和弹性等 EFS 的存储特性。需要注意到除了存储成本,EFS IA 会按照数据访问量进行收费。简单来说,对于不常访问的数据,迁移至 IA 可以看到明显的成本优化。通过生命周期管理策略可以自动进行不常访问的数据的迁移,从而自动进行成本优化而无须人工干预。在这个演示中我们暂时不启用生命周期管理策略。

  • 吞吐量模式:分为突增(Bursting)和预置(Provisioned)两种。在突增模式下,文件系统的吞吐性能随着存储容量增加而增长。典型文件系统的负载通常会猛增,在短时间内吞吐量较高,而其余时间吞吐量较低。因此,突增模式下 EFS 可在一段时间内突增到高吞吐量。对于存储容量较小但又需要较高吞吐量的场景,则可以使用预置模式,直接设定 EFS 文件系统的吞吐量上限。在这个演示我们使用默认的突增模式

  • 性能模式:分为通用(General Purpose)和最大 I/O(Max I/O)两种。通用模式适合于绝多数的 EFS 文件系统使用场景,特别是对延时较为敏感的应用。如果希望有更高的吞吐量和 IOPS 要求,则可以考虑最大 I/O 模式,但该模式下元数据的操作延时会相对较高。在这个演示我们使用默认的通用模式。

  • 加密:EFS 可以与 KMS 结合,从而实现对存储在 EFS 文件系统内的数据进行加密。在这个演示中我们暂时不开启加密功能。

1.3 配置客户端访问

通过文件系统策略(File System Policies)可以指定 NFS 客户端对 EFS 文件系统所具有的权限, 包括读写权限,是否要求传输加密等。而访问点(Access Points)是 EFS 文件系统中特定于应用程序的入口点,以管理应用程序对共享数据集的访问。通过访问点发出的所有文件系统请求可以被强制执行用户身份(包括用户组)。访问点还可以为文件系统强制执行不同的根目录,客户端只能访问指定目录或之下目录中的数据。



在这个演示中我们暂时不对文件系统权限和访问点进行配置,仅使用前面配置的安全组来做访问权限的控制。

1.4 审核与创建

最后我们检查一下配置是否正确 ,没问题的话就可以开始创建文件系统了



文件系统成功创建后,可以在控制台查看文件系统状态,挂载目标状态等信息。注意到此时文件系统还没有数据写入,目前的容量显示只有 6KB(文件系统相关元数据的存储开销)


2. 挂载文件系统

2.1 部署 EC2 实例并配置安全组

接下来我们在刚才创建的文件系统对应的 VPC 中部署一台 EC2 实例,需要关联 EFS 文件系统挂载目标所对应的安全组,在这个演示中我们使用了 VPC 默认的安全组



可以看到这个默认安全组放通所有的流量,但是来源仅限于这个安全组。也就是说只要挂载了这个安全组的 EC2 实例,就可以与 EFS 挂载目标进行通信而不受限制。生产环境可以根据实际需要进一步缩小放通的端口范围等


2.2 安装 EFS 挂载帮助程序(Mount Helper)并挂载文件系统

EFS 文件系统支持 NFS 协议,可以直接使用原有的 NFS 客户端来进行 NFS 文件系统挂载。另外 EFS 也提供了一个挂载帮助程序,以简化文件系统挂载,同时提供对 EFS 独特功能(如 IAM 认证,TLS 传输加密和访问点等)。在文件系统状态页面,会有相应的链接和说明告诉用户如何来进行文件系统挂载:



这里我们以安装了 Amazon Linux 2 且类型为 m5.large 的 EC2 实例,演示如何从本地 VPC 用 EFS 挂载帮助程序来挂载文件系统:


首先登录 EC2 实例,安装 EFS 挂载程序:


Bash


sudo yum -y install amazon-efs-utils
复制代码


接着创建挂载点目录:


Bash


sudo mkdir /mnt/efs
复制代码


然后通过 EFS 挂载程序进行文件系统挂载


Bash


sudo mount -t efs fs-c4f11721:/ /mnt/efs
复制代码


注意:


目前通过 yum 安装的 EFS 挂载程序对国内区域的文件系统域名处理有问题,会导致挂载文件系统时出现类似如下报错:


Bash


Failed to resolve "fs-c4f11721.efs.cn-northwest-1.amazonaws.com" - check that your file system ID is correct.See https://docs.aws.amazon.com/console/efs/mount-dns-name for more detail.
复制代码


目前解决方法是通过下面的命令修改配置文件:


Bash


echo -e '\n[mount.cn-north-1]\ndns_name_suffix = amazonaws.com.cn\n\n[mount.cn-northwest-1]\ndns_name_suffix = amazonaws.com.cn' | sudo tee -a /etc/amazon/efs/efs-utils.conf
复制代码


再重新进行挂载即可。


该问题已经在最新的 efs-utils 版本上得到修复,很快新版本会更新至 Amazon Linux RPM Repository 中,目前用户也可以从 Github 上直接下载最新版本的 EFS 挂载程序以规避该问题,具体可查看参考资料中的相关链接

3. 检查文件系统

至此我们已经完成了文件系统的创建,接下来我们可以进行写入测试,并检查文件系统的状态。


通过 dd 往 EFS 文件系统写入一个 20G 的文件


Bash


sudo time dd if=/dev/zero of=/mnt/efs/20G-dd-$(date +%Y%m%d%H%M%S.%3N) bs=1M count=20480 conv=fsync
20480+0 records in 20480+0 records out 21474836480 bytes (21 GB) copied, 203.763 s, 105 MB/s 0.06user 10.66system 3:23.81elapsed 5%CPU (0avgtext+0avgdata 3040maxresident)k 0inputs+41943040outputs (0major+340minor)pagefaults 0swaps
复制代码


可以看到这里统计的吞吐量是 105MB/s。根据 EFS 官方文档提到的突增吞吐量的说明,小于 1TB 的文件系统,均可突增到 100MB/s;而对于超过 1TB 的文件系统,存储在 EFS 标准上每 1TB 数据则可以突增 100MB/s。另外需要注意到的是,EFS 文件系统的性能实际上与上文提到性能模式、EC2 实例网络带宽、并发压力和 IO 类型等等许多因素都有关,如果需要进行压力测试,可以查看参考资料里关于性能的文档链接


此时检查文件系统状态,此时可以看到文件系统的实际大小已更新为 20GB:


小结

从这个演示我们可以看到 EFS 是一个托管的 NFS 文件服务, 用户只需要进行简单的配置就可以快速部署出一个高可用并可无限扩展的 NFS 文件系统。结合 EFS 的生命周期管理策略,数据可以实现冷热分层,从而降低存储成本。通过文件系统策略和访问点,用户还可以实现更为细粒度的权限控制。相关的技术细节可以参考 EFS 官方文档。


现在就开始动手测试起来吧!

参考资料


作者介绍:林俊,AWS 解决方案架构师,主要负责企业客户的解决方案咨询与架构设计优化,同时致力于 AWS 云存储及 IoT 类服务的应用和推广。


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/quickly-build-nfs-file-system-with-efs/


2020-02-27 16:221024

评论

发布
暂无评论
发现更多内容

蓝易云 - 6元一年的云服务器

百度搜索:蓝易云

Linux 运维 服务器 云服务器 托管

QLab Pro v5.4.1激活版 mac演出控制软件 广泛应用于戏剧、舞蹈、歌剧和其他现场表演

Rose

AI 驱动的视频增强工具Topaz Video AI for mac v5.1.4注册激活版

Rose

AutoCAD 2024 mac破解版 附cad2024注册机

Rose

如何通过京东API优雅地获取商品评论数据

Noah

蓝易云 - sql order by排序null值放最后,怎么写

百度搜索:蓝易云

sql Linux 运维 云服务器 null

蓝易云 - javaee springMVC cookie的存入和取出

百度搜索:蓝易云

spring 浏览器 Cookie 云服务器 JavaEE

蓝易云 - javaee springMVC model的使用

百度搜索:蓝易云

Java Linux 运维 Spring MVC model

热仿真分析服务 散热仿真分析代做

Geek_2d6073

Ample Sound Ample Guitar PF 吉他原声多类型音频工具

Rose

哪里有好用的mac硬盘测速工具?试试Blackmagic Disk Speed Test免费版

Rose

YouTube mac(YouTube客户端)v1.22中文激活版

Rose

【重磅】华为云盘古大模型5.0,正式发布!

华为云开发者联盟

华为云 华为云开发者联盟 华为开发者大会 华为云盘古大模型 企业号2024年6月PK榜

噪声-降噪引脚如何提高系统性能

梦笔生花

Vim 编辑器:高效文本编辑的瑞士军刀

左诗右码

vim

自动化脚本:提升运维效率的秘诀

左诗右码

Shell

蓝易云 - javaee springMVC数字类型转换之通过注解的方式

百度搜索:蓝易云

云计算 服务器 云服务器 Spring MVC Java EE

Adobe ai 2024中文破解版资源 mac/win

Rose

获取欧洲杯赛程数据的有效方法,以及如何开发体育直播平台

软件开发-梦幻运营部

百度大模型安全荣获2024世界智能产业博览会“Find智能科技创新应用典型案例”

百度安全

Photomator for mac 强大的色彩调整功能、对 650 多种 RAW 图像格式的支持

Rose

好用的保护电池健康的小工具 AlDente Pro for Mac v1.27激活版

Rose

Navicat Premium 17 轻松地管理和维护数据库,提高数据处理效率。

Rose

利用 EFS 快速搭建 NFS 文件系统_文化 & 方法_AWS_InfoQ精选文章