美團云混合存儲系統(tǒng):成本及性能優(yōu)化路徑(美團云是什么意思)

美團云混合存儲系統(tǒng):成本及性能優(yōu)化路徑(美團云是什么意思)

前言

在過去60年間,機械硬盤的容量呈指數(shù)級增長的同時體積也越來越小。1956年IBM一塊 5兆的巨型硬盤需要數(shù)人推上車去運輸,到2016年一塊3.5寸的機械硬盤就有10TB的大小,60年增長了9個數(shù)量級。但與容量和體積的變化相比,機械硬盤的性能增長非常緩慢,吞吐率基本保持在200兆每秒上下。IOPS增長更慢,一塊7200轉(zhuǎn)的硬盤在不同的iodepth下的IOPS次數(shù)大概在100-200范圍內(nèi)。這是容量與性能上的失衡。

而另一方面,目前市場上固態(tài)硬盤和機械硬盤報價,單GB的成本可以相差10倍,巨大的差價就是巨大的優(yōu)化空間。

容量與性能、成本的失衡促使美團云存儲研發(fā)團隊開始推進混合存儲系統(tǒng)的研究。

設計混合存儲系統(tǒng)的意義

通常,根據(jù)成本和性能這兩個維度,我們可以將云硬盤分成3檔:

① 容量型云硬盤:成本比較低,性能也比較低的產(chǎn)品

② 效率型云硬盤:成本及性能適中的產(chǎn)品

③ 性能型云硬盤:性能比較高,價格也比較高

容量型 效率型 性能型
IOPS 數(shù)百 小幾千 兩萬
吞吐率(MB/s) 數(shù)十 一百多 兩百多
延遲(ms) <10 <3 <3
單價(元/GB/月)

因為性價比適中,所以我們在云平臺上給用戶創(chuàng)建最多就是效率型的云硬盤。

我們不妨計算一下,如果要求云平臺為100個云硬盤同時提供4000并發(fā)IOPS能力的話,我需要準備一個什么樣的系統(tǒng)。有兩種實施方案:

第一種,如果用傳統(tǒng)的機械硬盤去搭建這個系統(tǒng),大致需要6千塊硬盤,產(chǎn)生48千瓦的功耗,3年TCO就會達到千萬元。

第二種,用單盤性能3萬(保守估計)IOPS的固態(tài)硬盤,則只需40塊,功耗是0.1千瓦,3年TCO只有20萬。

兩種方案同樣達到目標的情況下呈現(xiàn)出50倍的成本差距,固態(tài)硬盤性價比優(yōu)勢更明顯。

因此,當我們設計存儲系統(tǒng)的時候,性能和容量主要為滿足需求,當這需求確定了之后,就會有一個最優(yōu)成本方案。這也是我們設計混合存儲系統(tǒng)的一個主要思路。下面具體講一下如何通過對混合存儲系統(tǒng)進行成本優(yōu)化和性能優(yōu)化來實現(xiàn)這一想法。

混合存儲-成本優(yōu)化路徑

緩存優(yōu)化

在如何平衡需求與成本獲得最優(yōu)解的思考中,我們很自然地想到將機械硬盤的很多flash組合起來形成混合存儲,并讓每一塊flash都發(fā)揮出比較顯著的優(yōu)勢。那么如何優(yōu)化呢?

優(yōu)化的方式有以下兩種:

一種是RAID卡緩存,把閃存當作機械硬盤的混存。如果要是這樣混存的話,其實最簡單的就是在RAID卡上面有加一個小的閃存給做緩存;

另一種是內(nèi)核緩存,為內(nèi)核增加了一些模塊,如用flash給機械硬盤做緩存。

緩存的優(yōu)化方案有很高的性價比,加上去之后效果是立竿見影。但是有一些缺陷,優(yōu)化效果受限于緩存的命中率,對隨機讀測試無效,無法實現(xiàn)產(chǎn)品承諾。所以我們沒有放棄了這一方案。

糾刪碼

降低成本還有一種方式就是糾刪碼,傳統(tǒng)的分布式存儲一般是3塊數(shù)據(jù),每一塊數(shù)據(jù)分3個副本,一共要存12塊。換了糾刪碼的話,3塊數(shù)據(jù)通過數(shù)據(jù)運算產(chǎn)生兩個校驗塊,則是存6塊,達到空間下降一半的效果。

但是糾刪碼分布式存儲條件下,尤其是熱的分布式可讀可寫的情況下,實現(xiàn)糾刪碼是一個非常復雜的過程。而且它在寫作的時候?qū)π阅苁怯杏绊?,因為寫的時候有編碼,而編碼會對IO流程產(chǎn)生一些影響,會對性能產(chǎn)生負面效果。

所以我們嘗試了一些其他的方案。首先我們進行了一個性能測試,用不同的測試方式對SSD隨機寫的性能IOPS和機械硬盤順序?qū)懙腎OPS分別進行了測試。

測試結(jié)果顯示,機械硬盤隨機IO非常差,但是順序IO結(jié)果不錯,大致可以達到跟一塊SSD的水平。這一結(jié)果啟發(fā)了我們,可以在機械硬盤上用順序?qū)懙姆绞街匦聦憽?/p>

當客戶端要讀數(shù)據(jù)的時候,數(shù)據(jù)就直接從閃存里面去讀;當寫的時候,寫到閃存里,同時順序的寫到兩塊機械硬盤上面。這樣的話,讀是從固態(tài)硬盤讀,可以保證良好性能;寫的時候固態(tài)硬盤隨機寫性能也好,換了這方式以后整個系統(tǒng)的性能就實現(xiàn)了均衡。

美團云混合存儲系統(tǒng):成本及性能優(yōu)化路徑(美團云是什么意思)

前文提到在機械硬盤上是順序?qū)?,順序?qū)懹幸粋€問題,因為順序?qū)懴喈斢谂帕嘘犃?,讀的時候就需要知道到隊列的位置去讀。所以這種方式對讀很不利,我們還是要把專用的順序?qū)懙綄S脭?shù)據(jù),回寫到所謂數(shù)據(jù)塊里面。所以,這需要系統(tǒng)允許在比較閑置的時機,將數(shù)據(jù)回寫到Journal,保證這順序有高有低的。實測,線上workload存在明顯的波峰波谷現(xiàn)象,所以也證明了通過糾刪碼實現(xiàn)混合存儲這一方案實現(xiàn)成本優(yōu)化的可行性。

美團云混合存儲系統(tǒng):成本及性能優(yōu)化路徑(美團云是什么意思)

上述混合存儲的思路是基于美團云的塊存儲系統(tǒng)得以實現(xiàn)的,整個系統(tǒng)是美團云存儲團隊完全自主研發(fā)。關(guān)于該存儲系統(tǒng)的詳解,可點擊http://tech.meituan.com/block-store.html分布式塊存儲系統(tǒng)Ursa的設計與實現(xiàn)了解詳情。后續(xù)我們還將分享糾刪碼的相關(guān)內(nèi)容,請持續(xù)關(guān)注美團云官方微信的更新。

混合存儲-性能優(yōu)化路徑

固態(tài)硬盤的性能非常好,如果想要把固態(tài)硬盤性能發(fā)揮出來的話,需要在軟件上做很多的優(yōu)化。第一個方面是優(yōu)化代碼效率,第二是發(fā)覺利用并行性。

代碼效率

在代碼效率方面的優(yōu)化,有幾個方面:

  • 避免使用Iostream

  • Stack vs new/delete

  • Resource poling&caching

  • Logging

  • SSE/AVX(CRC、EC)

  • 避免使用Sendfile()

  • 保持可維護性

上述幾種方式中,Sendfile有一個非常大的問題,它不支持異步文件讀取,這樣的話會影響服務端的并發(fā)處理,反而會降低性能,所以我們不建議用sendfile。還有iostream,我們注意到有些開源存儲系統(tǒng)在使用,雖然在IO提升方面可能是比較方便的方式,但是效率比較低,因此我們也不建議使用。

并行

在并行的方面,有四個優(yōu)化方向:

① 無關(guān)任務獨立并行執(zhí)行

在服務端把無關(guān)的每一個Disk都有一個或多個進程進行服務,客戶端每virtual disk 一個進程;

② 盤內(nèi)并行

使用異步API;

③ 任務流出:流水化處理

磁盤和網(wǎng)絡并行運行。

美團云混合存儲系統(tǒng):成本及性能優(yōu)化路徑(美團云是什么意思)

從這圖上可以看出來網(wǎng)絡的流水化對IOPS提升非常明顯。

④ 任務完成:亂序完成

慢請求不阻塞其他請求。

SubChunk

IOPS方面,機械硬盤吞吐率表現(xiàn)較差一些。所以我們會把機械硬盤上面做SubChunk來提高吞吐率。

美團云混合存儲系統(tǒng):成本及性能優(yōu)化路徑(美團云是什么意思)

確定優(yōu)化方案后,我們對該方案進行了一些性能評估。測試環(huán)境中我們用了三臺服務器,其中一臺服務器配了12塊SSD,另外配了12塊HDD。

美團云混合存儲系統(tǒng):成本及性能優(yōu)化路徑(美團云是什么意思)

美團云混合存儲系統(tǒng):成本及性能優(yōu)化路徑(美團云是什么意思)

美團云混合存儲系統(tǒng):成本及性能優(yōu)化路徑(美團云是什么意思)

  • 在吞吐率方面我們的混合存儲方案性能可以跟SSD性能相差不大;

  • 在IOPS方面可以說兩種方式基本上是沒有什么顯著區(qū)別的;

  • 在延遲上,我們首先用了ping-4KB做測試,大概是一百多us的延遲,然后按照SSD ping-4KB、SSD-Hybrid、SSD3R分別去讀寫數(shù)據(jù)測延遲,SSD-Hybrid與SSD3R的延遲基本持平。這個延遲對于TCP網(wǎng)絡加以太網(wǎng)還是不錯的。

因此這一混合存儲方案從性能和成本是上能夠滿足產(chǎn)品需求的。性能上面還有一些潛力可挖,比如說用RDMA等,對此,我們今后還將持續(xù)優(yōu)化。

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號
公眾號
在線咨詢
分享本頁
返回頂部