【背景】
在現(xiàn)代云平臺(tái)中,存儲(chǔ)設(shè)備,如基于閃存的固態(tài)硬盤(SSD)已經(jīng)被虛擬化為全系統(tǒng)的共享資源,以提供跨越多個(gè)應(yīng)用實(shí)例的存儲(chǔ)服務(wù)。這使得云平臺(tái)能夠通過在多個(gè)多租戶虛擬機(jī)(VM)之間進(jìn)行分片來有效利用存儲(chǔ)容量和帶寬。為了提高云平臺(tái)中的資源效率,供應(yīng)商提供可驅(qū)逐的虛擬機(jī)(即Spot VMs或Harvest VMs)。這些可驅(qū)逐的虛擬機(jī)允許用戶以低優(yōu)先級(jí)使用未分配的資源,也就是說,可驅(qū)逐的虛擬機(jī)的資源可以在任何時(shí)候被普通的虛擬機(jī)所回收。最近的研究通過用基于啟發(fā)式的收集方法改進(jìn)可驅(qū)逐虛擬機(jī)的資源分配和調(diào)度來推進(jìn)這項(xiàng)技術(shù)。
現(xiàn)有的云平臺(tái)通過在多租戶應(yīng)用之間按需切分存儲(chǔ)資源,有效地利用了存儲(chǔ)資源。然而,我們的研究披露,云存儲(chǔ)在分配和未分配的存儲(chǔ)方面仍然嚴(yán)重利用不足。盡管云供應(yīng)商已經(jīng)開發(fā)了采集技術(shù),允許可驅(qū)逐的虛擬機(jī)(VM)使用未分配的再資源,但這些技術(shù)不能直接應(yīng)用于存儲(chǔ)資源,因?yàn)槿狈?duì)存儲(chǔ)設(shè)備的空間、帶寬和數(shù)據(jù)安全隔離的系統(tǒng)支持。
在本文中,我們提出了BlockFlex,一個(gè)基于學(xué)習(xí)的存儲(chǔ)采集框架,它可以在現(xiàn)代云平臺(tái)中以細(xì)粒度的方式采集可用的基于閃存的存儲(chǔ)資源。我們重新思考了存儲(chǔ)虛擬化的抽象,并為可驅(qū)逐的虛擬機(jī)實(shí)現(xiàn)了分配和未分配的存儲(chǔ)的透明采集。BlockFlex探索了啟發(fā)式和基于學(xué)習(xí)的方法,以最大限度地提高存儲(chǔ)利用率,同時(shí)在存儲(chǔ)設(shè)備層面確保常規(guī)和可驅(qū)逐虛擬機(jī)之間的性能和安全隔離。我們利用可編程的固態(tài)硬盤(SSD)開發(fā)BlockFlex,并通過各種數(shù)據(jù)中心工作負(fù)載證明其效率。
【問題】
1. 資源采集技術(shù)無法直接使用到外部存儲(chǔ)資源中
許多工作提出通過資源采集技術(shù)采集云上的內(nèi)存和CPU資源供資源緊張的節(jié)點(diǎn)使用,從而提升系統(tǒng)的資源利用率。然而,先前關(guān)于資源采集的工作主要集中在CPU和內(nèi)存資源上,這些資源不能直接應(yīng)用于云存儲(chǔ)。包含以下三點(diǎn)原因。首先,目前的云存儲(chǔ)虛擬化方法不支持存儲(chǔ)采集,資源的動(dòng)態(tài)重新分配是不可行的。第二,云存儲(chǔ)通常存儲(chǔ)敏感的應(yīng)用數(shù)據(jù),這就需要對(duì)存儲(chǔ)分配和取消分配進(jìn)行仔細(xì)的管理。第三,由于塊擦除和元數(shù)據(jù)更新,云存儲(chǔ)可能會(huì)遭受巨大的收割開銷,這需要特定的優(yōu)化來實(shí)現(xiàn)高效的存儲(chǔ)收割。
2. 現(xiàn)有的云平臺(tái)中存儲(chǔ)資源沒有被充分利用
這篇文章對(duì)從流行的云平臺(tái)中收集到的事件追蹤的研究顯示,存儲(chǔ)I/O在未分配(未出售)和分配的存儲(chǔ)方面仍然明顯利用不足。例如,這篇文章發(fā)現(xiàn)40%的云存儲(chǔ)服務(wù)器有25%的存儲(chǔ)沒有被分配,而分配的存儲(chǔ)的I/O利用率平均低于33%(見圖1)。云平臺(tái)中的存儲(chǔ)利用率低下是由于已分配的存儲(chǔ)資源利用率低下和大量未分配的資源造成的。這篇文章根據(jù)阿里巴巴和谷歌的開源云trace來進(jìn)行存儲(chǔ)利用率研究。這些追蹤記錄跟蹤了虛擬機(jī)和物理服務(wù)器上分配的存儲(chǔ)資源的使用情況。阿里巴巴的云trace包含了4K服務(wù)器在8天內(nèi)的虛擬機(jī)使用記錄,而谷歌的云trace是從12.5K服務(wù)器在29天內(nèi)收集的。由于不同的云trace強(qiáng)調(diào)了云存儲(chǔ)使用的不同方面(例如,存儲(chǔ)容量、I/O帶寬、服務(wù)器利用率和虛擬機(jī)利用率)。
圖1 分配的云存儲(chǔ)的帶寬利用率
如圖1所示,所有虛擬機(jī)的分配存儲(chǔ)的帶寬利用率都低于33%,所有虛擬機(jī)在整個(gè)生命周期內(nèi)的平均帶寬利用率為9.2%。對(duì)于通常承載多個(gè)虛擬機(jī)的物理服務(wù)器,我們得到一個(gè)類似的趨勢(shì):物理存儲(chǔ)設(shè)備的帶寬利用率低于31%,平均帶寬利用率為8.6%。如圖2所示,20%的虛擬機(jī)幾乎沒有使用其分配的存儲(chǔ)容量,50%的虛擬機(jī)平均只使用了26.4%的分配存儲(chǔ)容量,而只有20%的虛擬機(jī)使用了高達(dá)90%的分配存儲(chǔ)。
圖2 分配的云存儲(chǔ)的容量利用率
【存儲(chǔ)資源可采集性探索】
可采集的存儲(chǔ)資源包含兩個(gè)來源:未分配的存儲(chǔ)和已分配的存儲(chǔ)。這篇文章分析了已分配和未分配的虛擬機(jī)中的可用存儲(chǔ)隨時(shí)間的變化,并檢查(1)是否可以從虛擬機(jī)中的存儲(chǔ)資源中采集一部分存儲(chǔ)資源;(2)采集的存儲(chǔ)資源可以持續(xù)多長(zhǎng)時(shí)間;(3)可以采集多少存儲(chǔ)資源。
1.已分配的存儲(chǔ)資源:考慮到一個(gè)假設(shè)的采集型虛擬機(jī)從普通虛擬機(jī)中請(qǐng)求不同比例(10%、25%和50%)的存儲(chǔ)帶寬,調(diào)查有多少臺(tái)服務(wù)器有這樣的可用帶寬,以及這些資源可用于采集的時(shí)間。如圖3所示,超過91%的服務(wù)器在12小時(shí)內(nèi)有可采集的帶寬,大約76%的服務(wù)器在3天內(nèi)有可采集的帶寬。當(dāng)我們?cè)谳^短的時(shí)間內(nèi)(即少于12小時(shí))采集存儲(chǔ)時(shí),可用服務(wù)器的部分始終很高。這是由于分配的虛擬機(jī)的存儲(chǔ)利用率一直很低,如圖1所示。
圖3 已分配的存儲(chǔ)資源可采集性
2. 未分配的存儲(chǔ)資源:給定一個(gè)假設(shè)的采集型虛擬機(jī),要求不同的存儲(chǔ)容量(128GB、256GB和512GB),我們分析有多少臺(tái)服務(wù)器可以滿足這個(gè)采集虛擬機(jī)的請(qǐng)求,以及可用的存儲(chǔ)能持續(xù)多久。如圖4所示,32%的服務(wù)器可以滿足12小時(shí)的128GB存儲(chǔ)容量的要求。如果 harvest VM 請(qǐng)求的存儲(chǔ)時(shí)間較短,比如 1 小時(shí),50% 的服務(wù)器可以滿足請(qǐng)求。隨著 harvest VM 增加要求的存儲(chǔ)容量,可采集的服務(wù)器的數(shù)量會(huì)減少。
圖4 未分配的存儲(chǔ)資源可采集性
【方法和設(shè)計(jì)】
1.設(shè)計(jì)目標(biāo)
這篇文章提出了BlockFlex來支持高效的外存資源采集,設(shè)計(jì)目標(biāo)如下:
- 存儲(chǔ)采集應(yīng)該滿足采集虛擬機(jī)的存儲(chǔ)需求,同時(shí)盡量減少普通虛擬機(jī)的意外搶占。
- 存儲(chǔ)采集對(duì)上層虛擬機(jī)來說應(yīng)該是透明的,以盡量減少對(duì)虛擬機(jī)和應(yīng)用程序的改變,并促進(jìn)其生產(chǎn)部署。
- 在提高全局存儲(chǔ)利用率的同時(shí),存儲(chǔ)采集應(yīng)該對(duì)普通虛擬機(jī)產(chǎn)生最小的負(fù)面影響,以保證云服務(wù)的質(zhì)量。
- 當(dāng)它從已分配和未分配的存儲(chǔ)中臨時(shí)分配未使用的數(shù)據(jù)塊給采集的虛擬機(jī)時(shí),存儲(chǔ)采集應(yīng)確保數(shù)據(jù)安全。
圖5展示了BlockFlex系統(tǒng)架構(gòu)圖。為了管理采集的存儲(chǔ),一個(gè)新的抽象名為ghost vSSD(gSSD)被提出,位于軟件定義的閃存之上。ghost vSSD可以連接到創(chuàng)建的vSSD上,因此,不需要對(duì)虛擬機(jī)進(jìn)行修改。BlockFlex將在每個(gè)vSSD中部署一個(gè)預(yù)測(cè)器。對(duì)于采集的虛擬機(jī),BlockFlex將預(yù)測(cè)其需要的存儲(chǔ)容量和帶寬,以及需求將持續(xù)多久。對(duì)于常規(guī)虛擬機(jī),BlockFlex將預(yù)測(cè)它們的可用存儲(chǔ)容量和帶寬,以及它們的可用時(shí)間。對(duì)于未使用的存儲(chǔ)資源,BlockFlex將使用兩種基于啟發(fā)式的方法來預(yù)測(cè)可用于采集的持續(xù)時(shí)間?;陬A(yù)測(cè),BlockFlex將進(jìn)行最適合的匹配,并將未使用的存儲(chǔ)分配給采集的虛擬機(jī)。如果資源搶占發(fā)生在采集的虛擬機(jī)上(由錯(cuò)誤預(yù)測(cè)引起),BlockFlex將把采集的存儲(chǔ)釋放給普通的虛擬機(jī),并處理不同場(chǎng)景下的異常情況。
圖5 BlockFlex的系統(tǒng)架構(gòu)圖
2. 存儲(chǔ)采集的新抽象
BlockFlex提供了新的存儲(chǔ)資源抽象gSSD。BlockFlex允許常規(guī)vSSD主動(dòng)創(chuàng)建gSSD,并將其添加到由vSSD管理器管理的gSSD池中,而不是在請(qǐng)求時(shí)采集存儲(chǔ)空間(見圖5)。當(dāng)vSSD的預(yù)測(cè)器預(yù)測(cè)它將有可用的存儲(chǔ)資源用于采集時(shí),它就會(huì)創(chuàng)建一個(gè)gSSD。這些預(yù)測(cè)是定期發(fā)生的(默認(rèn)情況下是每三分鐘一次)。為了創(chuàng)建一個(gè)新的gSSD,BlockFlex將從vSSD中獲取空閑塊并為它們創(chuàng)建一個(gè)映射表。盡管一個(gè)gSSD的閃存塊可以從vSSD中獲取,但相應(yīng)的gSSD和vSSD不會(huì)共享這些獲取的閃存塊(如圖6所示)。因此,不需要在運(yùn)行時(shí)在gSSD和vSSD之間同步映射表項(xiàng)。
圖6 gSSD抽象
如圖7所示,為了便于快速查找gSSD,在vSSD管理器中把gSSD組織在一組列表中,并考慮在三個(gè)方面進(jìn)行排序:存儲(chǔ)帶寬、容量和可用于采集的時(shí)間。根據(jù)觀察來優(yōu)化列表:(1)存儲(chǔ)帶寬和容量與一個(gè)vSSD中可用的通道數(shù)量相關(guān);(2)每個(gè)gSSD的可用采集時(shí)間需要定期更新;以及(3)不會(huì)在gSSD的生命周期內(nèi)更新最大存儲(chǔ)容量和帶寬。因此,如圖7所示,BlockFlex維護(hù)一組按<容量、帶寬>排序的gSSD列表。在每個(gè)列表中,gSSD按其過期時(shí)間從最遠(yuǎn)的一個(gè)到最近的一個(gè)進(jìn)行排序。有一個(gè)定時(shí)器定期運(yùn)行(默認(rèn)情況下每15分鐘一次)來更新gSSD池中的過期時(shí)間。對(duì)于過期但尚未分配給任何采集的虛擬機(jī)的gSSD,BlockFlex將從列表中刪除它們。
圖7 gSSD管理方式
在收到存儲(chǔ)采集的請(qǐng)求后,BlockFlex將檢查gSSD池,以確定與請(qǐng)求的存儲(chǔ)容量、帶寬和可用于采集的時(shí)間最適合的匹配。BlockFlex使用最適合的匹配策略來盡量減少存儲(chǔ)資源的浪費(fèi)。這些請(qǐng)求的參數(shù)來自于部署在相應(yīng)采集虛擬機(jī)的vSSD中的預(yù)測(cè)器。由于gSSD池是排序的,我們使用二進(jìn)制搜索,首先找到與請(qǐng)求的存儲(chǔ)容量和帶寬相匹配的相應(yīng)列表。之后,我們走過這個(gè)列表,直到確定一個(gè)可用的gSSD,其過期時(shí)間與要求的可采集時(shí)間相匹配。
當(dāng)采集的虛擬機(jī)完成其工作時(shí),采集的gSSD將被回收到vSSD管理器的池中。在gSSD回收時(shí),vSSD的地址映射表中的相應(yīng)條目將被刪除。BlockFlex將檢查gSSD是否會(huì)很快過期(即默認(rèn)情況下在30分鐘內(nèi))。如果是,BlockFlex將擦除閃存塊以保證數(shù)據(jù)安全,并刪除gSSD實(shí)例。否則,BlockFlex將把該gSSD添加到gSSD池中,以供將來使用。由于擦除操作很昂貴,BlockFlex利用SSD的通道并行性來并行執(zhí)行。
3. 儲(chǔ)存采集的預(yù)測(cè)
對(duì)于未分配(未售出)的虛擬機(jī),采用一種基于啟發(fā)式的方法,基于對(duì)云平臺(tái)中未分配存儲(chǔ)的特征的研究。云計(jì)算供應(yīng)商通常會(huì)過度配置虛擬機(jī),為他們的服務(wù)提供彈性。他們以不同的存儲(chǔ)容量保留不同的常規(guī)虛擬機(jī)。常見的尺寸包括128GB、256GB和512GB,以簡(jiǎn)化VM的管理和部署。根據(jù)本文的研究,它們的可用性因其容量而異。我們使用相同存儲(chǔ)容量的未售出的虛擬機(jī)先前可用時(shí)間的直方圖,給每個(gè)未售出的虛擬機(jī)標(biāo)記一個(gè)預(yù)測(cè)的雙倍時(shí)間。例如,對(duì)于存儲(chǔ)容量為512GB的未售出的虛擬機(jī),我們可以將其中的20%作為gSSD,其可用時(shí)間為12小時(shí),20%為6小時(shí),其余為1小時(shí)。這種分布可以根據(jù)相應(yīng)云平臺(tái)的啟發(fā)式研究而改變。這些gSSD大小的分布取決于為未售出的虛擬機(jī)配置的存儲(chǔ)容量。
作者預(yù)測(cè)分配的虛擬機(jī)的可采集存儲(chǔ)資源,以及采集的虛擬機(jī)的需求存儲(chǔ)資源。由于對(duì)分配的虛擬機(jī)和采集的虛擬機(jī)的預(yù)測(cè)都是由其工作負(fù)載決定的,它們使用相同的基于學(xué)習(xí)的方法,但學(xué)習(xí)參數(shù)不同。作者使用長(zhǎng)短期記憶(LSTM)模型來開發(fā)我們的預(yù)測(cè)器,因?yàn)樗鼈冊(cè)跁r(shí)間序列預(yù)測(cè)方面的優(yōu)勢(shì)和相對(duì)低的開銷。LSTM的輸入是收集自帶寬、IOPS(如maxiops、miniops)和存儲(chǔ)利用率的統(tǒng)計(jì)措施。默認(rèn)情況下,BlockFlex每三分鐘使用之前15分鐘收集到的統(tǒng)計(jì)數(shù)據(jù)對(duì)模型進(jìn)行訓(xùn)練。這引入了最小的性能和內(nèi)存開銷。帶寬預(yù)測(cè)器和容量預(yù)測(cè)器都使用相同的LSTM模型,但我們對(duì)其學(xué)習(xí)率和隱藏層大小進(jìn)行了略微不同的調(diào)整,以提高準(zhǔn)確性(如圖8所示)。這些預(yù)測(cè)器將分別產(chǎn)生預(yù)測(cè)的帶寬(以通道為單位)和預(yù)測(cè)的容量(以GB為單位)。
圖8 預(yù)測(cè)器的工作流程
【實(shí)驗(yàn)結(jié)果】
實(shí)驗(yàn)性能對(duì)比包含兩個(gè)方面,分別為存儲(chǔ)資源利用率和性能。存儲(chǔ)資源利用率包含容量、帶寬和未分配資源利用率。
容量利用率:圖9展示了對(duì)未充分利用的存儲(chǔ)容量的影響。作者將使用BlockFlex時(shí)的平均和最大利用率與沒有收割的虛擬機(jī)的基線利用率進(jìn)行比較。我們看到所有虛擬機(jī)的平均利用率提高了1.25倍(43%對(duì)54%的利用率),而那些存儲(chǔ)利用率低于60%的虛擬機(jī)的平均利用率提高了1.75倍(20%對(duì)35%)。這顯示了BlockFlex可以獲得的好處,特別是在從存儲(chǔ)利用率低的虛擬機(jī)中采集閃存塊時(shí)。
圖9 存儲(chǔ)資源利用率實(shí)驗(yàn)圖
帶寬利用率:圖10展示了從帶寬的角度來分析未被充分利用的存儲(chǔ)資源。結(jié)果顯示,所有的虛擬機(jī)都有1.34倍(22%對(duì)30%)的穩(wěn)定改進(jìn)。BlockFlex還將最大利用率提高了1.27倍(53% vs. 66%)。與利用不足的存儲(chǔ)一樣,通過不完全利用常規(guī)虛擬機(jī)的帶寬來避免重占。這表明BlockFlex可以從未被充分利用的資源中改善云存儲(chǔ)的帶寬和容量利用率。
圖10 帶寬利用率實(shí)驗(yàn)圖
未分配資源利用率:圖10展示了通過采集未分配的虛擬機(jī)來提高利用率。BlockFlex將總體利用率提高了1.17倍(69%對(duì)81%)。利用率低于60%的服務(wù)器提高了1.42倍(45% vs. 64%)。對(duì)于利用不足和未分配的存儲(chǔ)資源,我們平均觀察到1.25倍的改善,這表明BlockFlex可以顯著利用利用不足和未出售的存儲(chǔ)資源來提高利用率。對(duì)于利用率極低的情況(低于60%),觀察到平均1.48倍的改善。這表明BlockFlex可以成功地將可采集的存儲(chǔ)資源與采集的虛擬機(jī)的需求相匹配。
圖11 未分配資源利用率實(shí)驗(yàn)圖
性能:圖12展示了BlockFlex帶來的性能改善。通過采集額外的通道,采集的虛擬機(jī)的帶寬得到了明顯的改善。當(dāng)將已售方案與靜態(tài)方案進(jìn)行比較時(shí),工作負(fù)載性能平均提高了16-51%。對(duì)于非賣出方案,由于缺乏對(duì)常規(guī)VM的干擾,存儲(chǔ)帶寬提高了22-60%。PageRank的改進(jìn)效果最好,因?yàn)槠涔ぷ髫?fù)載在I/O上花費(fèi)的時(shí)間比TeraSort或ML Prep工作負(fù)載多。未出售方案比已售方案平均提供了6%的額外帶寬改進(jìn)。當(dāng)我們將其轉(zhuǎn)化為端到端的執(zhí)行時(shí)間時(shí),我們看到使用已售存儲(chǔ)的平均性能提高了20%,而使用未售存儲(chǔ)的性能提高了25%。這表明在利用已售或未售存儲(chǔ)時(shí),BlockFlex可以為IO密集型應(yīng)用獲得顯著的性能優(yōu)勢(shì)。額外的閃存通道可以使寫量大的工作負(fù)載受益,因?yàn)樵黾恿薎/O的并行性。對(duì)于ML Prep和PageRank工作負(fù)載,我們看到在采集5分鐘后,增加了10-21%。在整整60分鐘后,讀取帶寬的平均增長(zhǎng)趨于穩(wěn)定,并達(dá)到22-60%的整體改善。
圖12 性能實(shí)驗(yàn)圖
【總結(jié)】
這篇文章引入了外存存儲(chǔ)資源采集BlockFlex,這是一種提升存儲(chǔ)資源利用率的方法,可以提升系統(tǒng)的性能。BlockFlex是基于對(duì)現(xiàn)有的云存儲(chǔ)場(chǎng)景下,對(duì)存儲(chǔ)資源利用率的觀察發(fā)現(xiàn)利用率偏低,從而設(shè)計(jì)新的存儲(chǔ)抽象,提升系統(tǒng)資源利用率。通過實(shí)驗(yàn),BlockFlex在各種云存儲(chǔ)負(fù)載下對(duì)外存的利用率上都有優(yōu)勢(shì)。同時(shí),BlockFlex討論了由于存儲(chǔ)采集導(dǎo)致的異常情況,并提出將異常錯(cuò)誤暴露給用戶處理。最終,BlockFlex在存儲(chǔ)資源利用率和性能上有很大改進(jìn)。
審核編輯:湯梓紅
-
存儲(chǔ)
+關(guān)注
關(guān)注
13文章
4266瀏覽量
85685 -
SSD
+關(guān)注
關(guān)注
20文章
2851瀏覽量
117247 -
固態(tài)硬盤
+關(guān)注
關(guān)注
12文章
1453瀏覽量
57272 -
存儲(chǔ)設(shè)備
+關(guān)注
關(guān)注
0文章
159瀏覽量
18575
原文標(biāo)題:存儲(chǔ)資源采集,高效利用資源!
文章出處:【微信號(hào):SSDFans,微信公眾號(hào):SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論