之前工作中做了很多儲存測試相關的事情,對儲存測試有一些想法,最近想用幾篇文章來介紹下分散式儲存測試相關的一些內容,這部分內容對學習儲存有很好的促進作用,歡迎大家關注~
- 白話分散式儲存測試(一)明確測試目標
- 白話分散式儲存測試(二)熟悉測試工具 【將釋出在微信公眾號】
- 白話分散式儲存測試(三)測試方法論 【將釋出在微信公眾號】
- 白話分散式儲存測試(四)測試結果分析 【將釋出在微信公眾號】
首先,我們需要明確我們為什麼要做測試,或者說明確我們做測試的目標是什麼?
從巨集觀上看,儲存測試要考慮三個維度:
分別從這三個維度展開一下
一、測試工具
測試工具可以做什麼?
測試工具提供了諸多引數選項,可以儘可能逼真地模仿使用者程式的IO模式。比如有使用者告訴你他的程式會多執行緒隨機寫4K大小的資料塊,他想知道他的程式跑在我們的分散式儲存上效能如何? 這時你可以拿使用者程式去直接跑一下,或者你也可以用測試工具模擬下使用者程式來預估效能,但是如果使用者很多呢,如果使用者程式沒有那麼易上手呢?勢必費時費力。 所以,測試工具幫我們應對了這個問題,我們可以提前用測試工具跑出一些常見IO模式的儲存效能報告,這樣當使用者諮詢的時候,我直接根據效能報告來匹配使用者程式的IO模式來進行預估。
通常,我們做儲存測試就是為了獲得特定IO模式或者常見IO模式的效能資料。
儲存測試時的IO模式一般要涵蓋以下三個關注點:
關注點 | 解釋 |
---|---|
關注IO延時 | 不關心每秒可以完成多少次IO,而是關心單次IO從提到到返回結果最快能多快 |
關注IO吞吐 | 在可以接受的IO延時範圍內,每秒最多能完成多少次IO |
關注IO頻寬 | 不關心每秒完成多少次IO,而是關心每秒可以讀寫多少MB的資料 |
測試工具調節IO模式的一些常見引數(以fio為例)有:
blocksize、numjobs、size、rw_pattern、ioengine、direct ...
通過調節這些引數,我們就可以測試出不同關注點的效能資料。
後面的文章將會介紹怎麼通過調節這些引數來對不同的關注點進行測試
二、叢集客戶端
視線抬高,我們的關注點不再是某個使用者的應用程式,而是很多使用者的應用程式。這時,我們需要關注的是,一個叢集客戶端的效能瓶頸在哪。實際使用中,一個叢集客戶端可以承載多少使用者應用程式的IO需求。未雨綢繆,提前規劃好使用者程式及叢集客戶端數。
三、儲存叢集
視線再抬高,關注點脫離單個叢集客戶端,這時,我們需要關注的是,多少個客戶端滿負荷工作能打滿儲存叢集,也就是需要測試出整個儲存叢集的IO能力。
對於機械磁碟,叢集的IO能力通常是可以通過底層磁碟的IO能力來進行估算的,這是因為機械磁碟效能低下,儲存叢集程式IO棧及網路延時的影響有限,叢集IO能力變化不大。
對於非機械磁碟,其效能越好,儲存叢集程式IO棧及網路延時的影響會體現地越發明顯,這時測試儲存叢集IO能力也就更加有意義。
同樣,未雨綢繆,有了儲存叢集IO能力的參考值,我們可以提前規劃叢集客戶端及使用者應用程式。
四、後續
本文簡單介紹了儲存測試的幾個常見目標,後續文章會詳細介紹常用測試工具(fio、dd)的使用方式、儲存測試方法論、測試結果分析等內容,歡迎關注 : )
專注筆者公眾號,閱讀更多幹貨文章:)