以前工做中作了不少存儲測試相關的事情,對存儲測試有一些想法,最近想用幾篇文章來介紹下分佈式存儲測試相關的一些內容,這部份內容對學習存儲有很好的促進做用,歡迎你們關注~微信
首先,咱們須要明確咱們爲何要作測試,或者說明確咱們作測試的目標是什麼?網絡
從宏觀上看,存儲測試要考慮三個維度:多線程
分別從這三個維度展開一下分佈式
測試工具能夠作什麼?工具
測試工具提供了諸多參數選項,能夠儘量逼真地模仿用戶程序的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 ...
經過調節這些參數,咱們就能夠測試出不一樣關注點的性能數據。線程
後面的文章將會介紹怎麼經過調節這些參數來對不一樣的關注點進行測試3d
視線擡高,咱們的關注點再也不是某個用戶的應用程序,而是不少用戶的應用程序。這時,咱們須要關注的是,一個集羣客戶端的性能瓶頸在哪。實際使用中,一個集羣客戶端能夠承載多少用戶應用程序的IO需求。未雨綢繆,提早規劃好用戶程序及集羣客戶端數。
視線再擡高,關注點脫離單個集羣客戶端,這時,咱們須要關注的是,多少個客戶端滿負荷工做能打滿存儲集羣,也就是須要測試出整個存儲集羣的IO能力。
對於機械磁盤,集羣的IO能力一般是能夠經過底層磁盤的IO能力來進行估算的,這是由於機械磁盤性能低下,存儲集羣程序IO棧及網絡延時的影響有限,集羣IO能力變化不大。
對於非機械磁盤,其性能越好,存儲集羣程序IO棧及網絡延時的影響會體現地愈加明顯,這時測試存儲集羣IO能力也就更加有意義。
一樣,未雨綢繆,有了存儲集羣IO能力的參考值,咱們能夠提早規劃集羣客戶端及用戶應用程序。
本文簡單介紹了存儲測試的幾個常見目標,後續文章會詳細介紹經常使用測試工具(fio、dd)的使用方式、存儲測試方法論、測試結果分析等內容,歡迎關注 : )
專一筆者公衆號,閱讀更多幹貨文章:)