七条有关AWS EFS性能的重要提示

【51CTO.com快译】 您是否使用过
Amazon EFS
?它的主要用途是让您能够为那些基于
Linux
的应用负载和程序,构建出基于云端的网络文件系统。由于
EFS

的结构和功能都类似于本地的基础架构,因此您可以轻松地传输各种既有的文件。不过,在您打算将任何应用负载移入EFS之前,请先对EFS进行“试驾”,并在移入之后,定期执行各项性能方面的优化。

当然,有过实际项目经验的小伙伴都知道:在大多数情况下,性能并不是一门精确的科学,而且会涉及到应用的各个真实环境与使用状态。因此,在优化性能时,我们往往无法一蹴而就,需要持续、甚至反正地进行自动化或人工等方面的设置和尝试。

在本文中,您将学习到
AWS EFS
的基本概念,如何对其进行配置和试用,以及如何通过七个重要方面,来保持
EFS
的应用负载能够平稳高效地持续运行。



什么是AWS EFS?

弹性文件系统(
Elastic File System

EFS
)是
AWS
中的一种存储服务,可被用于在云端重新创建网络文件系统。基于网络文件系统
v4

NFSv4

)的EFS,主要是针对基于

Linux
的应用负载和程序而设计的。您可以顺畅地将其与
AWS
的其他服务、以及本地资源整合使用。
 

与其他存储服务相比,
AWS EFS

能够提供的功能最接近本地现有的文件存储(具体请参见-

-https://cloud.netapp.com/blog/ebs-efs-amazons3-best-cloud-storage-system
)。通过它,您可以轻松地将本地现有的文件结构转移到云端,并享有如同访问本地文件那些进行各种流畅操作的体验。为了达到该目的,您既可以通过在
EC2

Elastic Compute Cloud
)中托管应用程序,然后将实例附加到
EFS
上,也可以将
EFS
用作独立的文件系统。


EFS
中,您可以选择如下两种访问方式:

· 
标准访问(
Standard Access
)是针对您的基本应用负载而设计的。其特点是以较高的成本换取较低的访问延迟。

· 
不频繁访问(
Infrequent Access
)专为需要长时间存放,却鲜少使用的文件而设计。其特点是:以较低的成本换取较高的访问延迟。

当然,无论您选用哪一种访问方式,
EFS
都是按照使用收费的。也就是说,它仅收取您实际使用的存储和传输带宽的费用。
 

如何试用EFS?

在将文件传输到
EFS

之前,您往往需要试用该服务。据此,您不但可以熟悉其相关的配置,评估其运行的性能,而且能够通过与当前的本地系统作比较,更全面地预估在使用EFS时所需要的资源配置水平。下面,让我们从EFS提供的“免费套餐(

free tier

)”开始吧。

免费的
EFS
 
tier
提供了可以使用
12
个月的
5 GB
存储空间。如果您手头已经具有了可以将文件系统挂载到的
EC2

中的实例,那么EFS的试用并不困难。当然,如果您不喜欢该“套餐”的话,也可以选用一种适用于

EC2

的免费tier,它提供的

750
小时使用时长,足够让您从容地完成各项测试。
 


为了建立自己的demo,您可以通过命令行界面(

CLI
)、或管理控制台(
Management Console

)来创建各种资源。具体有关如何使用管理控制台来设置和连接相应的服务,我们在此就不赘述了。如果您感兴趣的话,可以通过链接-


 


https://docs.aws.amazon.com/efs/latest/ug/getting-started.html


,去参考
AWS
的相关文档。
 

值得一提的是,请您在试用过程中,尽可能实际地去模拟对于目标文件系统的各种使用操作。例如:您可以添加多个实例,使用单线程和多线程两种方式去编写文件,以及采用标准和不频繁两种访问方式去访问各类数据。
 

七条有关AWS EFS性能的重要提示

一旦您决定了采用
EFS

服务,那么就需要将自己的关注点转移到确保能够获得最大投资回报上。以下是我为您总结的七条有关优化和提升A

WS EFS
性能的重要提示。并且您无需为那些不需要的资源支付额外的费用。
 

1.监视您的EFS突发信用

Burst
c
redits

EFS

最容易被忽视的方面之一。这些c

redits

被设计为在流量较高的时候,暂时提高您的应用性能。但是,它们只会持续较短的时间,并且需要一段时间才能够恢复。因此,这就意味着如果credits被用完了,那么应用的性能就可能会突降。

 

每个
EFS
卷通常是以
0.5 MB/s
的传输速率开始的。
Burst credits
可以将吞吐量补充并拉升到
100 MB/s
,且持续
7.2
分钟。而增加此类指标的唯一方法是:增加
EFS
卷中存储的数据量。也就是说,在最高可达到
10 GB
的数据量时,您可以持续获得良好的性能。
 

2.使用异步写入操作

异步写入操作可以让您通过消减数据传输的部分路径,来减少写入操作所产生的延迟。在启用异步写入之后,数据会先被缓冲到某个
EC2
的实例中,再写入
EFS

 

不过,值得注意的是,此项操作可能会影响数据的一致性。因此,如果您要求文件系统保持实时同步的话,最好不要采用该操作方法。
 

3.不要从EFS中运行应用程序

如果您直接尝试着在
EFS
中运行应用程序的话,则可能会碰到性能不佳状况。毕竟,
EFS
并非被设计为运行或托管应用程序。它既无法执行针对大文件的读取,又无法为管理代码库、或部署应用程序提供所需的速度。
 

相反,您应该从
EBS

Elastic Block Store
)和
EC2

处托管或运行应用程序(请参见-


 
https://dzone.com/articles/confused-by-aws-storage-options-s3-ebs-amp-efs-explained
),并为附件文件重新存储
EFS

。例如,您可以让EFS只提供的内容,而将其对应的服务限制在EC

2
中,以确保应用能够获得预期的性能。

4.监视平均I/O吞吐量

跟踪平均
I/O
吞吐量,可以帮助我们确定现有应用的瓶颈,进而设法压缩存储的区域。例如:如果某一个应用程序需要用到多个文件,那么我们就可以将这些文件组合为一个,进而减少对于吞吐量的需求。相反,针对那些频繁请求多个小文件的操作,很可能会在较短的时间内迅速达到并超出预先设定的吞吐量限制。

可见,通过减少可能的文件请求数量,我们可以降低每秒钟的
I/O
操作。这不但有助于减少延迟的开销,而且能够保持一定的性能区间。
 

5.认真管理备份

由于没有可用的快照功能,因此如果您想在
EFS
中创建备份的话,则可能会遇到困难。通常,您必须使用
AWS Backup
服务,或是执行
EFS-to-EFS
来进行备份。不过,无论采用哪种方法,您都需要保存好各种备份的副本,并严密监控备份所需要的存储空间。


此外,在创建备份时,您最好安排在非工作时间,并以限速复制的方式进行创建。这样不但可以避免影响到各项标准操作的性能,而且可以防止意外b

urst
c
redits
的发生。

6.选择正确的性能模式

在使用
EFS
时,您可以选择两种性能模式:

· 
通用意图(
General Purpose




提供较低的吞吐量,以换取较低的延迟操作。它被设计为用于标准化的任务,例如:web主机或内容管理。而且,这是EFS的默认性能设置。

 

· 
最大
I/O

Max I/O

 —

提供较高的吞吐量,以换取较高的延迟。它被设计为用于处理繁琐的计算任务,例如:媒体处理或大数据分析(请参见-

-https://dzone.com/articles/a-beginners-guide-to-big-data
)。

7.采用并发连接

EFS
被设计为允许大规模的并发连接,并且可以同时附加多达上千个
EC2
实例。据此,您可以通过分担不同的应用程序与负载,来显著地提高整体性能。当然,在配置这些连接时,您仍然会受到各个卷的总吞吐量、以及传输速度的限制。
 


总结

Amazon EFS
虽然是一个功能强大的工具,但是与许多其他自配置(
self-configured
)的服务一样,它仍然需要您定期进行优化。为了避免不必要的开销,您应该定期监视
EFS

burst credits
和平均
I/O
吞吐量。同时,为了确保具有最佳的性能,您既可以使用异步写入操作,又应当避免从
EFS
上直接运行应用程序。此外,为了避免产生额外的计费,您不但需要管理好各种备份,而且要为应用负载选择正确的性能模式。最后,您还可以利用并发连接来提高整体性能。

原文标题: 8 Crucial Performance Tips for Amazon EFS
 

作者:

Ilai Bavati
  

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】