您是否使用过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服务,那么就需要将自己的关注点转移到确保能够获得最大投资回报上。以下是我为您总结的七条有关优化和提升AWS EFS性能的重要提示。并且您无需为那些不需要的资源支付额外的费用。
1.监视您的EFS突发信用
Burst credits是EFS最容易被忽视的方面之一。这些credits被设计为在流量较高的时候,暂时提高您的应用性能。但是,它们只会持续较短的时间,并且需要一段时间才能够恢复。因此,这就意味着如果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只提供的内容,而将其对应的服务限制在EC2中,以确保应用能够获得预期的性能。
4.监视平均I/O吞吐量
跟踪平均I/O吞吐量,可以帮助我们确定现有应用的瓶颈,进而设法压缩存储的区域。例如:如果某一个应用程序需要用到多个文件,那么我们就可以将这些文件组合为一个,进而减少对于吞吐量的需求。相反,针对那些频繁请求多个小文件的操作,很可能会在较短的时间内迅速达到并超出预先设定的吞吐量限制。
可见,通过减少可能的文件请求数量,我们可以降低每秒钟的I/O操作。这不但有助于减少延迟的开销,而且能够保持一定的性能区间。
5.认真管理备份
由于没有可用的快照功能,因此如果您想在EFS中创建备份的话,则可能会遇到困难。通常,您必须使用AWS Backup服务,或是执行EFS-to-EFS来进行备份。不过,无论采用哪种方法,您都需要保存好各种备份的副本,并严密监控备份所需要的存储空间。
此外,在创建备份时,您最好安排在非工作时间,并以限速复制的方式进行创建。这样不但可以避免影响到各项标准操作的性能,而且可以防止意外burst credits的发生。
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上直接运行应用程序。此外,为了避免产生额外的计费,您不但需要管理好各种备份,而且要为应用负载选择正确的性能模式。最后,您还可以利用并发连接来提高整体性能。
原文地址:
https://www.linuxprobe.com/notice-aws-efs-performence.html