為了比較這兩種云盤,我跑了20多天的測試
上個月,筆者對國內(nèi)兩大云廠商(阿里云和騰訊云)的云服務器、云數(shù)據(jù)庫和云存儲三種產(chǎn)品做了性能評測,算是對兩家的部分計算和存儲產(chǎn)品(數(shù)據(jù)庫也可視作一種存儲形式)做了簡要對比。雖然評測文章在 V2EX 等社區(qū)的反饋還不錯,但確實還存在不少缺失。除了不好評測的售后服務等指標外,還缺少了對其他使用更為普遍的云存儲產(chǎn)品。
因此,筆者近期抽空完善《云計算產(chǎn)品性能測試指南》,新加入了對兩種云存儲產(chǎn)品(云盤)的性能和價格對比。本次測試總計耗時 20 多天,測試的強度和時間都非常充分,本文將記錄此次測試的過程和對比結(jié)果。
1. 哪兩種云盤?
云存儲類別下,目前兩大云產(chǎn)商提供了以下產(chǎn)品:
塊存儲(阿里云、騰訊云)
文件存儲(阿里云)
對象存儲(阿里云、騰訊云)
內(nèi)容分發(fā)網(wǎng)絡(阿里云、騰訊云)
表格存儲(阿里云)
歸檔存儲(阿里云)
可以看出,阿里云的云存儲產(chǎn)品類別更為豐富,云計算先行者的優(yōu)勢突出。
在上述六種產(chǎn)品中,筆者上次已經(jīng)對比過對象存儲。內(nèi)容分發(fā)網(wǎng)絡(CDN)測試起來花的時間又特別長,進行有意義的比較需要的數(shù)據(jù)特別大,而且目前沒找到自動化的工具,因此這次不考慮測試 CDN(歡迎推薦可以自動化測試 CDN 性能的工具)。
那么剩下的兩家均提供的產(chǎn)品,就是塊存儲(Block Storage)了。塊存儲,簡單來說就是提供了塊設備存儲的接口,一個硬盤就是一個塊設備。在云產(chǎn)商提供的產(chǎn)品中,所謂的普通云盤、高效云盤、SSD 云盤,都是塊存儲設備。
如果你對存儲類型不太熟悉,建議閱讀以下文章:
從OpenStack的角度看塊存儲的世界
三種存儲類型比較-文件、塊、對象存儲
知乎話題:塊存儲、文件存儲、對象存儲這三者的本質(zhì)差別是什么?
上一篇評測文章中,其實也對普通云盤的性能進行了對比,但包含在云服務器性能測試中。對于選擇普通云盤做對比,有的讀者也提出了異議。
確實,企業(yè)用戶一般不會用服務器的本地存儲保持核心數(shù)據(jù),因為本地磁盤的數(shù)據(jù)遷移困難,而自建 raid5 磁盤陣列的數(shù)據(jù)持久性頁不高,因此大多采用 SSD 云盤或高效云盤等分布式存儲成為主流選擇。一線云廠商比拼的也主要是分布式塊存儲,如 AWS 的 EBS 就是一種分布式塊存儲設備。
為了較為完整地比較兩大廠商的塊存儲產(chǎn)品,筆者近期對兩家的高效云盤和 SSD 云盤進行了壓測,算是對上一篇的補充。期間犯了不少錯,多花了不少冤枉錢,不過總算最終得出了比較可信、直觀的數(shù)據(jù)。
2. 廠商預期的性能
在介紹測試詳情之前,先來看一看廠商對自家產(chǎn)品的描述。
在各自的產(chǎn)品介紹頁面(騰訊云、阿里云),均給出了詳細的性能指標及具體的計算公式。
阿里云:
高效云盤
IOPS:min(1000 + 6 * 容量, 3000)
吞吐量:min(50 + size * 0.1, 80)
訪問時延:1-3ms
SSD 云盤
IOPS:min(30 * 容量, 20000)
吞吐量:min(50 + size * 0.5, 256)
訪問時延:1-3ms
騰訊云:
高效云盤
IOPS:min(1500 + 容量 * 8, 4500)
吞吐量:min(75 + size * 0.147, 130)
訪問時延:< 3ms
SSD 云盤
IOPS:min(容量 * 24, 2400)
吞吐量:min(150 + (容量 - 250) * 0.147, 260)
訪問時延:< 3ms
其中:
IOPS:每秒讀寫(I/O)操作的次數(shù),數(shù)值越高越好。
吞吐量:一般用MBPS,每秒傳輸?shù)腗B字節(jié)數(shù)來衡量,下文用英文 Throughput 替代。
訪問時延:訪問時延,完成一個 I/O 請求所需的時間,下文用英文 Latency 替代。
上述三項指標中,兩家只給出了 Latency 的數(shù)值范圍。不過,這個可以說是最重要的性能指標。其他指標不變的情況下,Latency 為 1ms 的性能是 3ms 的 3 倍。
另外,從給出的計算公式中,無法直觀地比較 IOPS、TP。因此,筆者用繪制了云盤性能與容量(volume)的關(guān)系圖。
上圖中,紅色虛線為騰訊云云盤,藍色實線為阿里云云盤。
由于騰訊云的云盤最大容量為 4000GB,而阿里云為 32678GB,但是為了方便查看,只繪制出了容量在 [0, 4000] 范圍內(nèi)的性能數(shù)據(jù)。另外,在圖中以 Hybrid 代稱高效云盤,下文同。
從上圖來看:
騰訊云高效云盤的預期性能遙遙領先于阿里云,尤其是最低吞吐量都比阿里云的峰值要高;
但是在 SSD 云盤方面,阿里云的預期性能優(yōu)勢比較大,只有在容量 1TB 以上時才低于對手。
不過,以上只是廠商預期的性能數(shù)據(jù),不代表產(chǎn)品的真實性能就是如此。產(chǎn)品實際表現(xiàn)如何,與預期性能差距有多大,還需要我們親自測試、使用才可得知。
3. 測試準備工作
在開始測試之前,筆者在兩家產(chǎn)商分別購買了測試服務器及云盤。
測試所使用的虛擬機配置為:
CPU:4核 Intel Xeon
內(nèi)存:4GB DDR3
操作系統(tǒng):Ubuntu 14.04 64位。
選取的測試云盤如下:
高效云盤:50GB、400GB
SSD 云盤:250GB、500GB
測試阿里云的 500GB SSD 云盤時碰到了兩個大杯具,首先是余額不足導致測試程序中斷,一切重來。。第二個杯具和 SSD 云盤的性能有關(guān),具體下文中會提到。。。
下文中,筆者不會具體介紹測試步驟,只說明執(zhí)行了哪些測試及測試結(jié)果,具體步驟請看此前在 Github 上分享的項目:CloudTesting/test_cbs。
4. 執(zhí)行哪些測試
一般來說,塊存儲性能主要看 IOPS、Throughput 和 Latency三個指標,廠商也大多提供這三個指標的峰值作為購買參考。
上一篇評測中,筆者就是使用 fio 對普通云盤進行測試,對比了三個指標的差異。不過現(xiàn)在回過頭來看,測試的壓力還不夠大,使用的塊大小、隊列深度還不夠全,雖然最終結(jié)果差異或許并不會太大。
因此,這次針對高效云盤(HDD+SSD)和 SSD 云盤的測試,筆者將根據(jù) SNIA 發(fā)布的企業(yè)級SSD評測規(guī)范(Solid State Storage Performance Test Specification Enterprise v1.1)進行,以下簡稱該規(guī)范為 PTS 。
SNIA 是存儲網(wǎng)絡行業(yè)協(xié)會(Storage Networking Industry Association,SNIA)的簡稱,這是一個由廠商和大學成立的行業(yè)組織,致力于開發(fā)和推廣存儲系統(tǒng)標準。
除了 IOPS、Throughput 和 Latency 三項基礎測試外,PTS 還包含了以下五種測試:
Write Saturation (WSAT):持續(xù)應用工作負載,測試性能隨著時間如何變化。
Demand Intensity Response Time Histograms (DIRTH)
Cross Stimulus Recovery (XSR)
Host Idle Recovery (HIR):測試宿主機閑置時間對性能恢復的影響。
Enterprise Composite Workload (ECW)
SNIA 官方有提供測試服務,但是收費,而且也不適用于云存儲設備。
因此,筆者選擇了一家云計算公司根據(jù) PTS 規(guī)范實現(xiàn)的自動化測試庫(代碼地址:https://github.com/cloudharmony/block-storage),其中包含了 IOPS、TP、Latency、WSAT 和 HIR 五類測試,其他的沒有實現(xiàn)。
SSD 云盤的測試中沒有 WSAT 和 HIR 兩項,具體原因后面會提到。
注意,PTS 測試中所有 fio 命令的隊列深度均為 64。具體測試細節(jié)請看官方提供的 PDF 文件。
4.1 PTS 測試耗時長
根據(jù) PTS 規(guī)范,每項 SSD 性能測試需要經(jīng)過1、凈化、2、準備工作負載、3、進入穩(wěn)態(tài)、4、測試等四個環(huán)節(jié),因此整個測試過程用時非常長,而且云盤容量越大,耗時越長。筆者在測試時,平均每塊云盤大概花了 2 天的時間。由于各種原因,這次至少買了 10 塊云盤做測試,因此也就有了標題中“ 20 天持續(xù)壓測”的說法。**
以騰訊云 500G SSD 云盤的測試時間為例說明:
此次測試采用的是第三方提供的自動化測試庫,整個步驟都是可重復的,對測試數(shù)據(jù)有疑問的同學可自行驗證。在這里說明下測試所需時間,是為了提示大家啟動測試程序后該干嘛就干嘛,同時保證賬戶中有充足的余額(尤其是后者)。
在介紹測試結(jié)果之前,說明一下對兩家廠商測試過程的差異(云盤均為直接格式化,未分區(qū))。
騰訊云由于不支持單獨購買按量付費的服務器,因此開了 4 臺 VM,每臺配一種測試云盤。
阿里云支持單獨按量購買云盤,因此只開了 2 臺 VM,每臺掛載 2 塊云盤,測試時針對每個云盤單獨啟動一個測試程序。
5. 性能測試數(shù)據(jù)
經(jīng)過漫長的時間,上周末終于完成了對 6 塊云盤的 IOPS、TP、Latency、WSAT、HIR 五項測試。
測試數(shù)據(jù)大約 190MB,其中,文件夾的命名規(guī)律為:廠商_云盤類型_容量。除了aliyun_ssd_500x 和 aliyun_ssd_250x 外,每個文件夾下均有一個 report.pdf 文件,為測試程序自動生成,里面包含了測試結(jié)果、數(shù)據(jù)和圖表。
另外,筆者用 Highcharts 制作了一些可交互圖表,可用來查看匯總后的各項數(shù)據(jù)。地址如下:http://www.codingpy.com/specials/cbs_test/。
6. 阿里云的一個大坑
筆者在本文撰寫快要結(jié)束時,看到阿里云 SSD 云盤的性能比預期的差很多,回頭去調(diào)查原因。這才猛然發(fā)現(xiàn)阿里云 SSD云盤必須搭配 I/O 優(yōu)化實例才能給發(fā)揮最大性能。當時就想破口大罵。。。
踩過這個坑的朋友不知道有多少?
因此,之前的 SSD 云盤數(shù)據(jù)(即 aliyun_ssd_500x 和 aliyun_ssd_250x 兩個文件夾下的數(shù)據(jù))就不具備可比性了。筆者只好重開 ECS 進行測試,為了節(jié)約時間,SSD 云盤將只測試 IOPS、Throughput、Latency 這三個基礎指標。
本文先對比高效云盤,重新測試完后,過幾日再與大家分享具體的 SSD 云盤性能對比。
7. 高效云盤性能對比
下面我們來看看高效云盤的測試性能,與產(chǎn)商預期的性能值之間是否存在差異,差異又有多大。
先來回顧一下廠商預期的性能,請看下圖左邊部分。
上圖顯示,騰訊云高效云盤的預期性能遙遙領先于阿里云,其中最低的吞吐量都比阿里云的峰值要高。
但是真實測試數(shù)據(jù)如何?請看下面的測試結(jié)果。
7.1 基礎指標測試
首先是 50GB 容量的 IOPS、Throughput、Latency 三項指標的數(shù)據(jù)(可點擊圖片查看大圖,或查看交互式圖表):
400GB 容量的性能對比(可點擊圖片查看大圖,或查看交互式圖表):
圖注:RW Ratio 指的是 I/O 操作中的讀寫比例,0/100 表示順序?qū)? 100/0 表示順序讀。
從上述圖表對比來看, 可以得出結(jié)論1:
在 50GB、400GB 兩個容量級別上,騰訊云高效云盤的各項性能指標表現(xiàn)均優(yōu)于阿里云,而且優(yōu)勢也比較明顯。
接下來,我們比較一下測試值與預期值之間的差異。由于預期值都是理論情況下的峰值,我們從測試數(shù)據(jù)中提取出各自的峰值。
看完上面的數(shù)據(jù),你至少會有這兩個疑惑:
騰訊云的測試峰值怎么接近預期值的兩倍?
阿里云 400GB 高效云盤的延遲怎么那么高,離預期的 1-3ms 差距很大?是不是數(shù)據(jù)有誤?
第一個疑惑,騰訊云兩個容量的測試峰值均為預期值的兩倍。產(chǎn)品首頁中沒有直接說明,只能去翻產(chǎn)品文檔,最終在 CBS 使用約束頁面中找到了一段解釋:
產(chǎn)品文檔中承諾的IO性能,如1TB的SSD云硬盤,隨機IOPS能達到24000IOPS。含義是讀寫可同時達到24000IOPS,4KB/8KB的 IO都可做到,16KB的IO大小,則無法做到24000(由于吞吐已經(jīng)達到了260MB/s的限制)。
簡單來說,就是騰訊云高效云盤的讀寫操作可同時達到預期性能峰值(數(shù)據(jù)塊 16KB 以下)。這樣,騰訊云的數(shù)據(jù)就可以解釋的通了。
筆者選擇的測試峰值是數(shù)據(jù)塊 512b、50/50 讀寫比例下的數(shù)據(jù),這時讀寫均達到了預期的 IOPS 峰值,總 IOPS 接近預期峰值的 2 倍。而順序讀、順序?qū)懙闹刀冀咏A期的峰值。
而阿里云方面,讀寫無法同時達到預期性能峰值。
第二個疑惑,阿里云 50GB 高效云盤的 Latency 在正常范圍,怎么 400GB 的就超標了?筆者一開始還以為數(shù)據(jù)錯了,為此重開了虛擬機,用 ioping 做了簡單的比對。結(jié)果如下圖:
重新測試之后,筆者確信了此前自動測試庫跑出的數(shù)據(jù)應該是沒問題的。至于高時延背后的原因,可能是“鄰居”比較多、IO 操作比較活躍吧。 Latency 的自動測試大概跑了 4 個多小時,重新測試時性能也沒有變化,阿里云這個算不算違反了服務協(xié)議(SLA)呢?
解決上面的疑惑之后, 我們可以得出以下結(jié)論:
結(jié)論2:騰訊云達到了預期的性能;阿里云部分沒有達到,400GB 容量的時延過高。
結(jié)論3:騰訊云高效云盤的時延在 1ms 以下,IOPS、吞吐量的優(yōu)勢更加突出。
7.2 WSAT、HIR
下面來看 WSAT 和 HIR 測試的情況。上面提到,WSAT測試是指在持續(xù)應用工作負載,測試性能隨著時間如何變化。
WSAT 自動測試最終得出的是一段時間內(nèi),IOPS 的平均值,結(jié)果如下:
上述數(shù)據(jù),與兩家廠商預期的峰值非常接近,說明兩家的高效云盤能夠長時間達到 IOPS 性能峰值。但是這里看不出性能如何隨時間變化,必須從生成的 PDF 中查找,筆者截圖如下:
從上述 4 張趨勢圖來看,可以得出結(jié)論4:
兩家高效云盤的 IOPS 表現(xiàn)均比較穩(wěn)定,幾乎呈一條直線,只有阿里云的 400GB 云盤有些略微波動。
最后來比較 HIR 測試的結(jié)果。HIR 主要測試宿主機閑置時間對性能恢復的影響。
從上述 4 張趨勢圖來看,可以得出結(jié)論5:
容量越大,似乎閑置時間對性能恢復的影響越明顯;阿里云 400GB 高效云盤的性能波動受閑置時間影響較明顯。
綜合上述五項測試的結(jié)果,可以認為騰訊云高效云盤的綜合性能應該是阿里云高效云盤的2倍以上(結(jié)論6)。
8. 加入價格因素
延續(xù)上一篇的風格,在比較完性能指標之后, 我們再加入價格因素。

上圖中,騰訊云高效云盤按量計費的價格,為根據(jù)官方產(chǎn)品頁面給出的定價計算,包年包月價格為單獨購買云盤時系統(tǒng)顯示價格;阿里云高效云盤的價格根據(jù)其給出的費用規(guī)則計算。這里說明一點,騰訊云在單獨購買云盤時,還只有包年包月這種模式,不夠靈活。
從上圖對比來看:
結(jié)論7:騰訊云和阿里云的包年包月價格相同;
結(jié)論8:騰訊云的按量計費價格比阿里云貴,約為 1.8 倍;
結(jié)論9:阿里云按量計費與包年包月的價格相差很小。
一般來說,數(shù)據(jù)盤中存儲的多為持久性數(shù)據(jù),以按量付費方式購買的企業(yè)用戶應該并不多。所以,在包年包月模式下,騰訊云高效云盤的性價比非常高。
不過由于阿里云兩種模式之間價格差異小,使得用戶在云盤使用方式上更加靈活。在筆者看來,按量計費和包年包月的核心并不在如何收費,而在于云計算產(chǎn)品的使用方式。價格差會使用戶傾向于以某一種方式使用產(chǎn)品,而不是根據(jù)有業(yè)務情況自由選擇。
9. 結(jié)語
上文中,我們分別從 IOPS、Throughput、Latency、WSAT、HIR 五項測試指標,對騰訊云、阿里云的 50GB、400GB 容量的高效云盤進行了性能對比。
經(jīng)過對測試數(shù)據(jù)進行分析,筆者主要得出了以下結(jié)論:
騰訊云高效云盤的各項基礎性能指標均優(yōu)于阿里云,且優(yōu)勢明顯;
騰訊云高效云盤達到了預期的性能,而阿里云部分云盤沒有達到,400GB 容量的時延過高;
阿里云大容量高效云盤的 IOPS 性能受宿主機閑置影響較大;
包年包月模式下,騰訊云高效云盤的性價比非常高;
阿里云高效云盤不同計費模式下費用差別不大,選擇時靈活性更高。
如果你正在考慮采購這兩家產(chǎn)商的高效云盤,希望本文對你有幫助。如果你考慮的廠商不是騰訊云或阿里云,可以參考本文中使用的自動測試庫進行全面測試。不過別忘了,要想獲得最大的云盤性能,則必須購買相應廠商的云服務器,否則云應用的性能反而可能下降。關(guān)于如何測試云服務器的性能,請看筆者上一篇評測。
下一篇筆者將對比騰訊云和阿里云 SSD 云盤的性能。
參考鏈接
云存儲的四大優(yōu)勢
從OpenStack的角度看塊存儲的世界
SNIA SSS Performance Test Specification (PTS) Testing Service
網(wǎng)絡存儲協(xié)會發(fā)布企業(yè)級SSD評測規(guī)范
阿里云:云盤參數(shù)和性能測試方法
阿里云:云盤的特點和應用場景
騰訊云:如何衡量云硬盤的性能
騰訊云:CBS 應用場景
騰訊云:CBS 產(chǎn)品分類及對比
塊存儲測試套件
Key storage performance metrics for virtual environments
Pro Tips For Storage Performance Testing
Understanding IOPS, Latency and Storage Performance
Amazon EBS 卷類型
AWS系列之三 使用EBS
AWS 存儲測試數(shù)據(jù)






























