周林
【摘 要】為了解決云存儲性能測試中由于產品種類多、部署時間長、硬件依賴差異大等導致的測試重復動作多、測試項多、調優(yōu)參數多、消耗時間長等問題,通過采用開源、跨平臺的編程語言、框架和測試工具,分析了業(yè)界認可的測試工具、性能數據和處理算法,并提出了包含部署、調優(yōu)、測試、數據分析和可視化等流程的自動化測試平臺方案。經過實驗驗證了自動化測試平臺的有效性,并發(fā)現(xiàn)了不同云存儲產品的優(yōu)缺點、調優(yōu)參數的實際作用,為云存儲的技術選型提供了有力技術支撐。
【關鍵詞】云存儲 自動化測試平臺 跨平臺
1 引言
云存儲作為云計算中的一種基礎設施,是云計算不斷向前發(fā)展的基石,也是一種能夠與云計算所需要的PB甚至ZB級別存儲相匹配的現(xiàn)代存儲[1]。它是一種新的網絡存儲技術,通過結合集群技術、網絡技術、分布式文件系統(tǒng)、特定的軟件技術將大量存儲設備構建為一個統(tǒng)一的存儲資源池,提供統(tǒng)一的命名空間,作為一個整體對外提供數據存儲和訪問服務[2-3]。
云存儲是未來存儲的主要發(fā)展方向,市面上已經有很多家相關廠商,技術側重點各有不同,同時由于底層硬件組合對于云存儲的性能也有很大影響,因此在技術選型時對各家云存儲進行廣泛、有效、跨硬件平臺的性能測試就顯得尤為重要。云存儲的測試通常具有測試消耗時間長、測試項多、調優(yōu)參數多、部署時間長、硬件依賴差異大等特點。基于此,本文提出設計一種通用的自動化測試平臺,它能夠一次實施部署后重復使用;批量設置測試任務集,更換硬件平臺后復制測試任務集即可實現(xiàn)自動順序執(zhí)行;測試任務前支持執(zhí)行自定義的參數調整腳本;能夠跨平臺;使用通用開源工具,認可度高且方便復現(xiàn);能夠進行分布式性能監(jiān)控數據收集[4];能夠自動生成圖表直觀展示性能。
2 常用工具和方法介紹
Python是一種面向對象、解釋型的計算機程序語言,可以跨平臺運行,具有豐富、強大的標準庫和第三方擴展庫,功能覆蓋科學計算、Web開發(fā)、數據庫接口、圖形系統(tǒng)多個領域,并且大多成熟而穩(wěn)定;Python在設計上堅持了清晰統(tǒng)一的風格,這使得Python成為一門易讀、易維護且被大量用戶所歡迎的用途廣泛的語言[5]。
Psutil[6](Python的系統(tǒng)和進程工具)是一個跨平臺的Python庫,目前支持Linux、Windows、OSX等平臺,主要用于檢索正在運行的進程、限制進程占用的資源和對運行的進程進行管理;同時還能夠對系統(tǒng)實施監(jiān)控和分析,如能夠獲取CPU、內存、磁盤、網絡和傳感器的信息[7]。
Matplotlib[8]是一個Python的2D繪圖庫,能夠生成出版物質量級別的圖形,并輸出多種圖形格式,也是跨平臺的。它可以生成圖、直方圖、功率譜圖、條形圖、誤差圖以及散點圖等,都只需要使用幾行代碼。
FIO是一個非常強大的I/O性能測試工具,是業(yè)界認可的一種I/O基準測試工具,也是跨平臺的。它支持13種不同類型的I/O引擎以及設置I/O優(yōu)先級、I/O速率等,可以工作在塊設備以及文件兩種存儲模式下,通過一個簡單的配置文件來詳細控制測試的所有細節(jié);除了最終結果外,它還支持將測試過程中的性能數據輸出到文件,方便查看整個過程中的變化曲線[9]。
3 系統(tǒng)設計和實現(xiàn)
3.1 系統(tǒng)總體設計
本文構建的自動化測試平臺主要包含以下三類節(jié)點:
(1)控制節(jié)點:用來控制整個測試流程,收集、處理、展示測試數據;
(2)負載節(jié)點:用來生成負載,直接通過存儲網絡與云存儲連接;
(3)云存儲節(jié)點:用來構建云存儲集群的節(jié)點。
云存儲自動化測試平臺架構如圖1所示:
3.2 系統(tǒng)組件設計
本文構建的自動化測試平臺包含的組件主要如下:
(1)部署:該組件的任務是在特定平臺上生成測試所用的虛擬機,檢查并驗證測試所需軟件是否安裝完備;
(2)調優(yōu):該組件的任務是針對某類測試對云存儲進行參數調整,這也是本平臺的特色之一,可以在測試前指定本輪測試需要驗證云存儲的哪些調整參數;
(3)測試:該組件是測試平臺的核心組件,即在所有測試虛擬機加載測試云存儲、運行相關性能監(jiān)控程序(Psutil)、運行測試程序、監(jiān)控測試程序運行情況等;
(4)分析:該組件的任務是將測試數據、測試期間的性能數據進行處理和分析,形成指定格式的數據;
(5)可視化:該組件的任務是將前面經過處理和分析的數據畫圖,主要就是使用Matplotlib。
3.3 系統(tǒng)流程設計
本文所構建的自動化測試平臺測試流程如圖2所示。
下面將從以下三個維度來描述測試平臺的測試流:
(1)測試任務集
測試任務集就是所有測試任務的一個集合,通過配置文件指定,這樣可實現(xiàn)測試任務的批量執(zhí)行,全程無需人工干預,自動完成所有既定的測試任務,并將所有任務的結果整合到一個頁面展示,方便用戶對比分析。
(2)針對每個測試任務的工作流
一個具體任務的工作流基本跟上文提到的平臺組件一致,具體如下:
部署階段會再次清理前一次測試的所有臨時數據,準備好測試用的虛擬機,驗證所有需要用到的軟件是否完備;
調優(yōu)階段則是根據本次測試任務自定義的配置文件對云存儲的相關參數進行調整,并確保云存儲在參數調整之后集群狀態(tài)恢復正常才進入下一個階段,當前調優(yōu)的支持方式是用戶根據云存儲的特性自定義調優(yōu)腳本,支持的腳本類型是PowerShell、Bash和Python;
準備階段主要是為虛擬機分配云存儲,驗證云存儲的可用性;
測試階段會先運行所有的性能監(jiān)控程序,包括控制節(jié)點、負載節(jié)點、虛擬機、云存儲節(jié)點等,然后再根據選定的測試類型執(zhí)行測試;
分析階段會收集所有的測試數據和性能數據,依靠Python強大的數據處理能力,挑選所有輸出數據中需要的信息組成特定的格式交給下一步使用;
可視化階段就是利用Matplotlib將生成的數據圖表化,并分門別類地組織在一起;
清理回收階段則是釋放所有云存儲、清空數據目錄、所有虛擬機關機。
(3)數據流
在整個測試流中,數據分為以下兩種:
測試數據流:是控制器發(fā)起,負載節(jié)點上的虛擬機生成,通過存儲網絡到達云存儲集群;
控制數據流:是控制器同時向負載節(jié)點和存儲節(jié)點發(fā)起,在測試完成后再分別將數據傳給控制器。
4 自動化測試平臺
本文實現(xiàn)的自動化測試平臺基于B/S架構,用戶通過瀏覽器配置所有測試任務,在瀏覽器查看所有測試結果,雙擊任意測試任務即可查看該任務的詳細報告。測試任務集示例如圖3所示。
上述任務集中前兩個是默認配置,中間兩個是經過調優(yōu)的,最后兩個是使用了PCI-E SSD后的結果。在三大類中選取其中一次測試的IOPS數據分別如圖4至圖6所示。
通過圖4和圖5對比可知,調優(yōu)后雖然IOPS有小幅度降低,但是整體更加趨于平緩,波動很小,這說明存儲性能的穩(wěn)定性更好。
通過圖5和圖6對比可知,PCI-E SSD對于云存儲的加速效果很顯著,有了PCI-E SSD,云存儲的冷熱數據分離優(yōu)勢才能得以體現(xiàn)。
5 結束語
本文通過使用業(yè)界認可的通用、開源、跨平臺的工具和方法,構建了一個包含部署、調優(yōu)、測試、數據分析和可視化等全流程的云存儲自動化測試平臺。測試平臺通過設置任務集、自定義調優(yōu)腳本、自動化性能數據收集處理和自動輸出性能圖表等特色功能,為用戶判斷云存儲性能提供了強有力的數據支撐。實驗數據表明,本文構建的云存儲自動化測試平臺能夠方便快捷地對比不同云存儲產品的性能,并采用簡單自定義調優(yōu)參數來驗證該參數在實際應用中的效果,這樣既為云存儲技術選型提供了依據,又為后期使用的優(yōu)化提供了參考。
參考文獻:
[1] 陳杰. 大數據場景下的云存儲技術與應用[J]. 中興通訊技術, 2012(6): 47-51.
[2] 劉貝,湯斌. 云存儲原理及發(fā)展趨勢[J]. 科技信息, 2011(5): 50-51.
[3] 周可,王樺,李春花. 云存儲技術及其應用[J]. 中興通訊技術, 2010(4): 24-27.
[4] 邱全偉,朱立谷,陽小珊,等. 海量存儲測試平臺監(jiān)控系統(tǒng)的設計與實現(xiàn)[J]. 計算機研究與發(fā)展, 2011(S1): 68-73.
[5] 劉麗媛. 基于Python的半導體測試軟件系統(tǒng)的設計與實現(xiàn)[D]. 北京: 北京交通大學, 2013.
[6] GitHub. giampaolo/psutil[EB/OL]. [2017-05-14]. https://github.com/giampaolo/psutil.
[7] 曹東航. 基于Ganglia的云平臺監(jiān)控的研究與實現(xiàn)[D]. 成都: 電子科技大學, 2016.
[8] GitHub. matplotlib/matplotlib[EB/OL]. [2017-05-14]. https://github.com/matplotlib/matplotlib.
[9] 趙夢茹. 移動終端Linux存儲IO性能分析與優(yōu)化[D]. 西安: 西安電子科技大學, 2014.
[10] 鄭慶. 海量規(guī)模下高性能對象存儲服務技術的研究[D]. 上海: 上海交通大學, 2013.