七條有關(guān)AWS EFS性能的重要提示
譯文【51CTO.com快譯】您是否使用過Amazon EFS?它的主要用途是讓您能夠?yàn)槟切┗?/span>Linux的應(yīng)用負(fù)載和程序,構(gòu)建出基于云端的網(wǎng)絡(luò)文件系統(tǒng)。由于EFS的結(jié)構(gòu)和功能都類似于本地的基礎(chǔ)架構(gòu),因此您可以輕松地傳輸各種既有的文件。不過,在您打算將任何應(yīng)用負(fù)載移入EFS之前,請(qǐng)先對(duì)EFS進(jìn)行“試駕”,并在移入之后,定期執(zhí)行各項(xiàng)性能方面的優(yōu)化。
當(dāng)然,有過實(shí)際項(xiàng)目經(jīng)驗(yàn)的小伙伴都知道:在大多數(shù)情況下,性能并不是一門精確的科學(xué),而且會(huì)涉及到應(yīng)用的各個(gè)真實(shí)環(huán)境與使用狀態(tài)。因此,在優(yōu)化性能時(shí),我們往往無(wú)法一蹴而就,需要持續(xù)、甚至反正地進(jìn)行自動(dòng)化或人工等方面的設(shè)置和嘗試。
在本文中,您將學(xué)習(xí)到AWS EFS的基本概念,如何對(duì)其進(jìn)行配置和試用,以及如何通過七個(gè)重要方面,來(lái)保持EFS的應(yīng)用負(fù)載能夠平穩(wěn)高效地持續(xù)運(yùn)行。
什么是AWS EFS?
彈性文件系統(tǒng)(Elastic File System,EFS)是AWS中的一種存儲(chǔ)服務(wù),可被用于在云端重新創(chuàng)建網(wǎng)絡(luò)文件系統(tǒng)?;诰W(wǎng)絡(luò)文件系統(tǒng)v4(NFSv4)的EFS,主要是針對(duì)基于Linux的應(yīng)用負(fù)載和程序而設(shè)計(jì)的。您可以順暢地將其與AWS的其他服務(wù)、以及本地資源整合使用。
與其他存儲(chǔ)服務(wù)相比,AWS EFS能夠提供的功能最接近本地現(xiàn)有的文件存儲(chǔ)(具體請(qǐng)參見--https://cloud.netapp.com/blog/ebs-efs-amazons3-best-cloud-storage-system)。通過它,您可以輕松地將本地現(xiàn)有的文件結(jié)構(gòu)轉(zhuǎn)移到云端,并享有如同訪問本地文件那些進(jìn)行各種流暢操作的體驗(yàn)。為了達(dá)到該目的,您既可以通過在EC2(Elastic Compute Cloud)中托管應(yīng)用程序,然后將實(shí)例附加到EFS上,也可以將EFS用作獨(dú)立的文件系統(tǒng)。
在EFS中,您可以選擇如下兩種訪問方式:
· 標(biāo)準(zhǔn)訪問(Standard Access)是針對(duì)您的基本應(yīng)用負(fù)載而設(shè)計(jì)的。其特點(diǎn)是以較高的成本換取較低的訪問延遲。
· 不頻繁訪問(Infrequent Access)專為需要長(zhǎng)時(shí)間存放,卻鮮少使用的文件而設(shè)計(jì)。其特點(diǎn)是:以較低的成本換取較高的訪問延遲。
當(dāng)然,無(wú)論您選用哪一種訪問方式,EFS都是按照使用收費(fèi)的。也就是說,它僅收取您實(shí)際使用的存儲(chǔ)和傳輸帶寬的費(fèi)用。
如何試用EFS?
在將文件傳輸?shù)?/span>EFS之前,您往往需要試用該服務(wù)。據(jù)此,您不但可以熟悉其相關(guān)的配置,評(píng)估其運(yùn)行的性能,而且能夠通過與當(dāng)前的本地系統(tǒng)作比較,更全面地預(yù)估在使用EFS時(shí)所需要的資源配置水平。下面,讓我們從EFS提供的“免費(fèi)套餐(free tier)”開始吧。
免費(fèi)的EFS tier提供了可以使用12個(gè)月的5 GB存儲(chǔ)空間。如果您手頭已經(jīng)具有了可以將文件系統(tǒng)掛載到的EC2中的實(shí)例,那么EFS的試用并不困難。當(dāng)然,如果您不喜歡該“套餐”的話,也可以選用一種適用于EC2的免費(fèi)tier,它提供的750小時(shí)使用時(shí)長(zhǎng),足夠讓您從容地完成各項(xiàng)測(cè)試。
為了建立自己的demo,您可以通過命令行界面(CLI)、或管理控制臺(tái)(Management Console)來(lái)創(chuàng)建各種資源。具體有關(guān)如何使用管理控制臺(tái)來(lái)設(shè)置和連接相應(yīng)的服務(wù),我們?cè)诖司筒毁樖隽恕H绻信d趣的話,可以通過鏈接-- https://docs.aws.amazon.com/efs/latest/ug/getting-started.html,去參考AWS的相關(guān)文檔。
值得一提的是,請(qǐng)您在試用過程中,盡可能實(shí)際地去模擬對(duì)于目標(biāo)文件系統(tǒng)的各種使用操作。例如:您可以添加多個(gè)實(shí)例,使用單線程和多線程兩種方式去編寫文件,以及采用標(biāo)準(zhǔn)和不頻繁兩種訪問方式去訪問各類數(shù)據(jù)。
七條有關(guān)AWS EFS性能的重要提示
一旦您決定了采用EFS服務(wù),那么就需要將自己的關(guān)注點(diǎn)轉(zhuǎn)移到確保能夠獲得最大投資回報(bào)上。以下是我為您總結(jié)的七條有關(guān)優(yōu)化和提升AWS EFS性能的重要提示。并且您無(wú)需為那些不需要的資源支付額外的費(fèi)用。
1.監(jiān)視您的EFS突發(fā)信用
Burst credits是EFS最容易被忽視的方面之一。這些credits被設(shè)計(jì)為在流量較高的時(shí)候,暫時(shí)提高您的應(yīng)用性能。但是,它們只會(huì)持續(xù)較短的時(shí)間,并且需要一段時(shí)間才能夠恢復(fù)。因此,這就意味著如果credits被用完了,那么應(yīng)用的性能就可能會(huì)突降。
每個(gè)EFS卷通常是以0.5 MB/s的傳輸速率開始的。Burst credits可以將吞吐量補(bǔ)充并拉升到100 MB/s,且持續(xù)7.2分鐘。而增加此類指標(biāo)的唯一方法是:增加EFS卷中存儲(chǔ)的數(shù)據(jù)量。也就是說,在最高可達(dá)到10 GB的數(shù)據(jù)量時(shí),您可以持續(xù)獲得良好的性能。
2.使用異步寫入操作
異步寫入操作可以讓您通過消減數(shù)據(jù)傳輸?shù)牟糠致窂剑瑏?lái)減少寫入操作所產(chǎn)生的延遲。在啟用異步寫入之后,數(shù)據(jù)會(huì)先被緩沖到某個(gè)EC2的實(shí)例中,再寫入EFS。
不過,值得注意的是,此項(xiàng)操作可能會(huì)影響數(shù)據(jù)的一致性。因此,如果您要求文件系統(tǒng)保持實(shí)時(shí)同步的話,最好不要采用該操作方法。
3.不要從EFS中運(yùn)行應(yīng)用程序
如果您直接嘗試著在EFS中運(yùn)行應(yīng)用程序的話,則可能會(huì)碰到性能不佳狀況。畢竟,EFS并非被設(shè)計(jì)為運(yùn)行或托管應(yīng)用程序。它既無(wú)法執(zhí)行針對(duì)大文件的讀取,又無(wú)法為管理代碼庫(kù)、或部署應(yīng)用程序提供所需的速度。
相反,您應(yīng)該從EBS(Elastic Block Store)和EC2處托管或運(yùn)行應(yīng)用程序(請(qǐng)參見-- https://dzone.com/articles/confused-by-aws-storage-options-s3-ebs-amp-efs-explained),并為附件文件重新存儲(chǔ)EFS。例如,您可以讓EFS只提供的內(nèi)容,而將其對(duì)應(yīng)的服務(wù)限制在EC2中,以確保應(yīng)用能夠獲得預(yù)期的性能。
4.監(jiān)視平均I/O吞吐量
跟蹤平均I/O吞吐量,可以幫助我們確定現(xiàn)有應(yīng)用的瓶頸,進(jìn)而設(shè)法壓縮存儲(chǔ)的區(qū)域。例如:如果某一個(gè)應(yīng)用程序需要用到多個(gè)文件,那么我們就可以將這些文件組合為一個(gè),進(jìn)而減少對(duì)于吞吐量的需求。相反,針對(duì)那些頻繁請(qǐng)求多個(gè)小文件的操作,很可能會(huì)在較短的時(shí)間內(nèi)迅速達(dá)到并超出預(yù)先設(shè)定的吞吐量限制。
可見,通過減少可能的文件請(qǐng)求數(shù)量,我們可以降低每秒鐘的I/O操作。這不但有助于減少延遲的開銷,而且能夠保持一定的性能區(qū)間。
5.認(rèn)真管理備份
由于沒有可用的快照功能,因此如果您想在EFS中創(chuàng)建備份的話,則可能會(huì)遇到困難。通常,您必須使用AWS Backup服務(wù),或是執(zhí)行EFS-to-EFS來(lái)進(jìn)行備份。不過,無(wú)論采用哪種方法,您都需要保存好各種備份的副本,并嚴(yán)密監(jiān)控備份所需要的存儲(chǔ)空間。
此外,在創(chuàng)建備份時(shí),您最好安排在非工作時(shí)間,并以限速?gòu)?fù)制的方式進(jìn)行創(chuàng)建。這樣不但可以避免影響到各項(xiàng)標(biāo)準(zhǔn)操作的性能,而且可以防止意外burst credits的發(fā)生。
6.選擇正確的性能模式
在使用EFS時(shí),您可以選擇兩種性能模式:
· 通用意圖(General Purpose) - 提供較低的吞吐量,以換取較低的延遲操作。它被設(shè)計(jì)為用于標(biāo)準(zhǔn)化的任務(wù),例如:web主機(jī)或內(nèi)容管理。而且,這是EFS的默認(rèn)性能設(shè)置。
· 最大I/O(Max I/O) — 提供較高的吞吐量,以換取較高的延遲。它被設(shè)計(jì)為用于處理繁瑣的計(jì)算任務(wù),例如:媒體處理或大數(shù)據(jù)分析(請(qǐng)參見--https://dzone.com/articles/a-beginners-guide-to-big-data)。
7.采用并發(fā)連接
EFS被設(shè)計(jì)為允許大規(guī)模的并發(fā)連接,并且可以同時(shí)附加多達(dá)上千個(gè)EC2實(shí)例。據(jù)此,您可以通過分擔(dān)不同的應(yīng)用程序與負(fù)載,來(lái)顯著地提高整體性能。當(dāng)然,在配置這些連接時(shí),您仍然會(huì)受到各個(gè)卷的總吞吐量、以及傳輸速度的限制。
總結(jié)
Amazon EFS雖然是一個(gè)功能強(qiáng)大的工具,但是與許多其他自配置(self-configured)的服務(wù)一樣,它仍然需要您定期進(jìn)行優(yōu)化。為了避免不必要的開銷,您應(yīng)該定期監(jiān)視EFS的burst credits和平均I/O吞吐量。同時(shí),為了確保具有最佳的性能,您既可以使用異步寫入操作,又應(yīng)當(dāng)避免從EFS上直接運(yùn)行應(yīng)用程序。此外,為了避免產(chǎn)生額外的計(jì)費(fèi),您不但需要管理好各種備份,而且要為應(yīng)用負(fù)載選擇正確的性能模式。最后,您還可以利用并發(fā)連接來(lái)提高整體性能。
原文標(biāo)題:8 Crucial Performance Tips for Amazon EFS 作者: Ilai Bavati
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】