之前工作中做了很多存儲測試相關的事情,對存儲測試有一些想法,最近想用幾篇文章來介紹下分散式存儲測試相關的一些內容,這部分內容對學習存儲有很好的促進作用,歡迎大家關注~

  • 白話分散式存儲測試(一)明確測試目標
  • 白話分散式存儲測試(二)熟悉測試工具 【將發布在微信公眾號】
  • 白話分散式存儲測試(三)測試方法論 【將發布在微信公眾號】
  • 白話分散式存儲測試(四)測試結果分析 【將發布在微信公眾號】

首先,我們需要明確我們為什麼要做測試,或者說明確我們做測試的目標是什麼?

從宏觀上看,存儲測試要考慮三個維度:

分別從這三個維度展開一下

一、測試工具

測試工具可以做什麼?

測試工具提供了諸多參數選項,可以儘可能逼真地模仿用戶程序的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)的使用方式、存儲測試方法論、測試結果分析等內容,歡迎關注 : )

專註筆者公眾號,閱讀更多乾貨文章:)

推薦閱讀:
相关文章