本發(fā)明涉及計(jì)算機(jī)分布式存儲系統(tǒng)領(lǐng)域,尤其涉及針對分布式存儲系統(tǒng)的遠(yuǎn)程性能監(jiān)控、自動化調(diào)優(yōu)系統(tǒng);應(yīng)用了云存儲技術(shù)、數(shù)據(jù)管理技術(shù)以及分布式監(jiān)控技術(shù)構(gòu)建了一個(gè)數(shù)據(jù)采集、性能分析和自動化調(diào)優(yōu)平臺。
背景技術(shù):
隨著數(shù)據(jù)的爆炸性增長以及高速處理需求,應(yīng)用程序?qū)τ跀?shù)據(jù)的存儲和訪問性能的要求也越來越高。然而由于制造工藝和當(dāng)前技術(shù)的限制,單個(gè)存儲服務(wù)器或者存儲陣列已經(jīng)無法提供PB級或者更大的存儲容量。單節(jié)點(diǎn)的處理性能和訪問性能遠(yuǎn)不能滿足現(xiàn)實(shí)應(yīng)用。各大公司部署了分布式存儲系統(tǒng)解決容量和性能問題。
分布式存儲系統(tǒng)能夠管理分布式的存儲資源,提供了單一的命名空間,方便了數(shù)據(jù)共享,提供較高的聚集數(shù)據(jù)訪問帶寬。但是分布式存儲系統(tǒng)為了保證高可靠性、一致性、有用性等要求,邏輯架構(gòu)復(fù)雜,同時(shí)其可調(diào)參數(shù)眾多,將分布式存儲系統(tǒng)部署到數(shù)據(jù)中心并且調(diào)整軟硬件參數(shù)以發(fā)揮集群最大性能對于運(yùn)維人員是必須解決的問題。當(dāng)前的性能監(jiān)控軟件大部分僅僅以WEB界面顯示集群的運(yùn)行狀態(tài),和一些半自動化工具如異常報(bào)警機(jī)制等,整體監(jiān)控系統(tǒng)主要依靠運(yùn)維人員的經(jīng)驗(yàn)手動優(yōu)化系統(tǒng)。
技術(shù)實(shí)現(xiàn)要素:
為了克服現(xiàn)有技術(shù)存在的問題,本發(fā)明提供一種針對分布式存儲系統(tǒng)的性能監(jiān)控調(diào)優(yōu)系統(tǒng)及方法,可實(shí)現(xiàn)自動化定位分布式存儲系統(tǒng)瓶頸、調(diào)優(yōu)分布式存儲系統(tǒng)以及最大化發(fā)揮硬件性能。
為了實(shí)現(xiàn)上述目的,本發(fā)明采取的技術(shù)方案為:
一種針對分布式存儲系統(tǒng)的性能監(jiān)控調(diào)優(yōu)系統(tǒng),包括數(shù)據(jù)處理模塊以及數(shù)據(jù)采集模塊;數(shù)據(jù)采集模塊與分布式存儲系統(tǒng)的節(jié)點(diǎn)一一對應(yīng),每個(gè)數(shù)據(jù)采集模塊通過探針實(shí)時(shí)獲取對應(yīng)節(jié)點(diǎn)的硬件性能參數(shù)和軟件性能參數(shù);數(shù)據(jù)處理模塊包括瓶頸分析模塊和系統(tǒng)調(diào)優(yōu)模塊;瓶頸分析模塊根據(jù)所述軟件性能參數(shù)確定對應(yīng)節(jié)點(diǎn)上IO棧的各個(gè)分層中占據(jù)IO棧當(dāng)前處理時(shí)間最大的IO棧分層以及確定該節(jié)點(diǎn)上IO棧的各個(gè)分層中與相同時(shí)間間隔的歷史數(shù)據(jù)相比處理時(shí)間變化率最大的IO棧分層;系統(tǒng)調(diào)優(yōu)模塊依照貪心算法,在對應(yīng)節(jié)點(diǎn)硬件性能未超出最大負(fù)載的情況下,對瓶頸分析模塊確定的IO棧分層所對應(yīng)的分布式存儲系統(tǒng)配置參數(shù)進(jìn)行調(diào)整;所述IO棧是指分布式存儲系統(tǒng)中處理讀寫請求時(shí)所需要的各個(gè)層次階段。
所述數(shù)據(jù)處理模塊還包括性能反饋模塊,性能反饋模塊比較所述調(diào)整前后的系統(tǒng)性能變化,如果系統(tǒng)性能提升,則保留調(diào)整結(jié)果,若系統(tǒng)性能未提升,甚至變差,則回滾此次調(diào)整。
所述硬件性能參數(shù)和軟件性能參數(shù)經(jīng)所述數(shù)據(jù)采集模塊處理為格式化數(shù)據(jù)后發(fā)送給所述數(shù)據(jù)處理模塊,所述數(shù)據(jù)處理模塊將接收的格式化數(shù)據(jù)存儲在數(shù)據(jù)庫中,格式化數(shù)據(jù)由參數(shù)名、參數(shù)值和時(shí)間戳組成。
所述數(shù)據(jù)處理模塊還包括數(shù)據(jù)清理模塊,數(shù)據(jù)清理模塊周期性刪除所述數(shù)據(jù)庫中指定時(shí)間之前的數(shù)據(jù),或者刪除所述數(shù)據(jù)庫中指定時(shí)間間隔內(nèi)的數(shù)據(jù)。
所述系統(tǒng)調(diào)優(yōu)模塊在節(jié)點(diǎn)硬件性能超出最大負(fù)載的情況下,查找占用硬件資源較多的IO棧分層,并嘗試釋放該層占用的部分硬件資源,若釋放資源后分布式存儲系統(tǒng)性能波動較小,則確定釋放資源,若分布式存儲系統(tǒng)性能快速下降,則將資源重新分配給該層。
一種針對分布式存儲系統(tǒng)的性能監(jiān)控調(diào)優(yōu)方法,包括以下步驟:
1)建立分布式存儲系統(tǒng)IO棧并依據(jù)邏輯結(jié)構(gòu)對IO棧進(jìn)行分層;
2)在分布式存儲系統(tǒng)各個(gè)節(jié)點(diǎn)實(shí)時(shí)采集與IO棧各個(gè)分層相關(guān)的性能參數(shù)(如分布式存儲系統(tǒng)IO棧每一層內(nèi)部的運(yùn)行參數(shù))數(shù)據(jù)以及對應(yīng)節(jié)點(diǎn)的硬件性能參數(shù)(如CPU,內(nèi)存,IO,網(wǎng)卡等性能參數(shù))數(shù)據(jù);
3)將采集自分布式存儲系統(tǒng)各個(gè)節(jié)點(diǎn)的數(shù)據(jù)統(tǒng)一存放(例如,此處數(shù)據(jù)的存放可以采用數(shù)據(jù)庫等方式)并定期整理(此類數(shù)據(jù)由于增長過快,需要定時(shí)壓縮、清理,從而完成無意義數(shù)據(jù)的刪除和數(shù)據(jù)壓縮);
4)基于時(shí)空比較方法對采集到的數(shù)據(jù)從兩方面進(jìn)行比較:針對分布式存儲系統(tǒng)某節(jié)點(diǎn),利用所述性能參數(shù)數(shù)據(jù)比較IO棧每一層的當(dāng)前處理時(shí)間,并找出占IO棧處理時(shí)間最大的IO棧分層(最耗時(shí)IO棧部分),同時(shí),對比IO棧每一層的當(dāng)前處理時(shí)間和相同時(shí)間間隔下的歷史處理時(shí)間數(shù)據(jù),并找出處理時(shí)間變化率最大的IO棧分層(變化率最大IO棧部分),這兩個(gè)部分的調(diào)優(yōu)對于整體性能的優(yōu)化具有很大的影響;
5)建立調(diào)優(yōu)映射表,該映射表包括與IO棧每一層對應(yīng)的分布式存儲系統(tǒng)內(nèi)的配置參數(shù),此張表表示的配置參數(shù)主要由影響IO棧的最關(guān)鍵參數(shù)組成,這個(gè)表由用戶分析并且輸入到調(diào)優(yōu)模塊,同時(shí)這個(gè)表也很大程度上依靠不同的分布式存儲系統(tǒng)自身特性;
6)從所述調(diào)優(yōu)映射表查找所述占IO棧處理時(shí)間最大的IO棧分層和所述變化率最大的IO棧分層(即最耗時(shí)IO棧部分和變化率最大IO棧部分這兩種關(guān)鍵IO棧部分)對應(yīng)的配置參數(shù),然后采用貪心算法,在不超過分布式存儲系統(tǒng)對應(yīng)節(jié)點(diǎn)的服務(wù)器硬件最大性能上限下,對查找到的配置參數(shù)進(jìn)行自動化調(diào)優(yōu)。
所述調(diào)優(yōu)具體包括以下步驟:對查找到的配置參數(shù)進(jìn)行調(diào)整,分析比較調(diào)整后和調(diào)整前的分布式存儲系統(tǒng)的性能變化,確認(rèn)此次調(diào)優(yōu)是否成功;如果系統(tǒng)性能有所提升,則確認(rèn)此次調(diào)整,如果性能下降,則回滾此次調(diào)整。
所述存放前,對采集的數(shù)據(jù)進(jìn)行格式化,使采集的數(shù)據(jù)變?yōu)橛蓞?shù)名、參數(shù)值和時(shí)間戳組成的格式化數(shù)據(jù)。
所述定時(shí)整理具體包括以下步驟:周期性刪除指定時(shí)間之前的數(shù)據(jù),或者刪除指定時(shí)間間隔內(nèi)的數(shù)據(jù)。
所述步驟6)中,在超過對應(yīng)節(jié)點(diǎn)的硬件最大性能上限的情況下,查找占用硬件資源較多的IO棧分層(某一層),并嘗試釋放該層占用的部分硬件資源,若釋放資源后分布式存儲系統(tǒng)性能波動較小(在給定的閾值以內(nèi)),則確定釋放資源,若分布式存儲系統(tǒng)性能快速下降(超過給定的閾值),則將資源重新分配給該層,以保證性能。
本發(fā)明的有益效果體現(xiàn)在:
本發(fā)明首先將分布式存儲系統(tǒng)IO棧映射到真實(shí)的分布式存儲系統(tǒng),然后由數(shù)據(jù)采集模塊、瓶頸分析模塊、系統(tǒng)調(diào)優(yōu)模塊等模塊完成分析調(diào)優(yōu)任務(wù),本發(fā)明能夠應(yīng)用于真實(shí)的分布式存儲系統(tǒng),自動化分析發(fā)現(xiàn)集群的瓶頸并調(diào)優(yōu)。本發(fā)明通過建立一整套自動化分析調(diào)優(yōu)系統(tǒng),使分布式存儲系統(tǒng)的性能得到了提高。
附圖說明
圖1是性能監(jiān)控調(diào)優(yōu)系統(tǒng)運(yùn)行拓?fù)浣Y(jié)構(gòu)示意圖;
圖2是數(shù)據(jù)分析調(diào)優(yōu)模塊流程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步地詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的實(shí)施例僅僅用于解釋本發(fā)明的基本構(gòu)想,并不用于限定本發(fā)明。
不同的分布式存儲系統(tǒng)雖然系統(tǒng)設(shè)計(jì)不同,各具特點(diǎn),但是它們需要解決的問題是相同的,同時(shí)其設(shè)計(jì)邏輯構(gòu)架大同小異,這是本發(fā)明的前提假設(shè),同時(shí)它也是一定成立的。
本發(fā)明的性能監(jiān)控、調(diào)優(yōu)系統(tǒng)的部署拓?fù)淙鐖D1所示,該系統(tǒng)包括數(shù)據(jù)處理模塊以及部署在分布式存儲系統(tǒng)節(jié)點(diǎn)的數(shù)據(jù)采集模塊。數(shù)據(jù)處理模塊部署在任意服務(wù)器,此服務(wù)器可以和分布式存儲系統(tǒng)節(jié)點(diǎn)運(yùn)行在同一個(gè)服務(wù)器,也可以是不同的服務(wù)器。分布式存儲系統(tǒng)當(dāng)中不同角色的服務(wù)器安裝與其相應(yīng)的數(shù)據(jù)采集模塊(因?yàn)榉植际酱鎯ο到y(tǒng)當(dāng)中每個(gè)的服務(wù)器有其各自特定作用,部署在每個(gè)服務(wù)器的數(shù)據(jù)采集模塊可能收集的數(shù)據(jù)種類有相同部分,也有不同部分),數(shù)據(jù)采集模塊和分布式存儲節(jié)點(diǎn)是一一對應(yīng)的,也就是一臺服務(wù)器內(nèi)運(yùn)行的分布式存儲系統(tǒng)節(jié)點(diǎn)部署一個(gè)數(shù)據(jù)采集模塊,數(shù)據(jù)采集模塊負(fù)責(zé)將不同服務(wù)器中實(shí)時(shí)系統(tǒng)性能的數(shù)據(jù)采集并進(jìn)行初步處理后發(fā)送至管理節(jié)點(diǎn)(部署所述數(shù)據(jù)處理模塊的服務(wù)器),此處的數(shù)據(jù)傳輸可以使用網(wǎng)絡(luò)傳輸、進(jìn)程內(nèi)通信等方式,管理節(jié)點(diǎn)負(fù)責(zé)接收數(shù)據(jù)采集模塊發(fā)送的數(shù)據(jù)并進(jìn)行存儲和處理。
數(shù)據(jù)采集模塊用于在分布式存儲系統(tǒng)各個(gè)節(jié)點(diǎn)收集各項(xiàng)所需性能指標(biāo)數(shù)據(jù),并將數(shù)據(jù)向管理節(jié)點(diǎn)發(fā)送。在數(shù)據(jù)采集模塊中,需要用戶首先依據(jù)不同的分布式存儲系統(tǒng)構(gòu)架從邏輯層面劃分IO棧,這里的IO棧指分布式存儲系統(tǒng)中處理讀寫請求時(shí)系統(tǒng)處理數(shù)據(jù)所需要的不同層次階段,由用戶根據(jù)不同的分布式存儲系統(tǒng)從IO的流程當(dāng)中抽象出來。IO棧有兩種:讀IO棧和寫IO棧。讀IO棧是指從客戶端發(fā)出讀請求到集群收到讀請求后返回客戶端讀取到的數(shù)據(jù)這一過程,寫IO棧是指從客戶端發(fā)出寫請求到集群接收到寫請求后經(jīng)過一系列處理將請求的數(shù)據(jù)寫入到底層存儲設(shè)備完成數(shù)據(jù)持久化這一過程。讀IO??梢苑譃樗膶樱簯?yīng)用層、網(wǎng)絡(luò)傳輸層、數(shù)據(jù)流處理層和后端存儲層;寫IO??梢苑譃槲鍖樱簯?yīng)用層、網(wǎng)絡(luò)傳輸層、數(shù)據(jù)流處理層、事務(wù)層和后端存儲層。其中應(yīng)用層包括構(gòu)建在分布式存儲系統(tǒng)上層的應(yīng)用軟件,網(wǎng)絡(luò)傳輸層包括客戶端傳輸?shù)椒植际酱鎯?jié)點(diǎn)和本次讀寫當(dāng)中涉及的存儲節(jié)點(diǎn)主副本之間的網(wǎng)絡(luò)通信,數(shù)據(jù)流處理層包含了從所有客戶端發(fā)來的讀寫請求的初始處理,事務(wù)層將所有IO寫請求序列化,后端存儲層針對寫請求,將數(shù)據(jù)寫入到后端存儲設(shè)備,完成數(shù)據(jù)的持久化,而針對讀請求則將數(shù)據(jù)從后端存儲設(shè)備讀取。
當(dāng)用戶完成劃分分布式存儲系統(tǒng)的IO棧,需要將不同的性能參數(shù)分配至IO棧的不同層,以此來獲得分布式存儲系統(tǒng)中不同階段的實(shí)時(shí)性能數(shù)據(jù)。然后,數(shù)據(jù)采集模塊通過探針實(shí)時(shí)獲取節(jié)點(diǎn)硬件性能參數(shù)和分布式存儲系統(tǒng)軟件中各層次的軟件性能參數(shù),其中,探針是指為了實(shí)時(shí)獲取分布式存儲系統(tǒng)運(yùn)行中的性能數(shù)據(jù)而放入分布式存儲系統(tǒng)代碼不同階段的數(shù)據(jù)采集程序,通過探針可以準(zhǔn)確實(shí)時(shí)得到分布式存儲系統(tǒng)的性能參數(shù),硬件性能參數(shù)是指在每個(gè)服務(wù)器中CPU、內(nèi)存、網(wǎng)絡(luò)等方面的性能數(shù)據(jù),軟件性能參數(shù)是指分布式存儲系統(tǒng)中每個(gè)階段的延時(shí)、正在處理的操作數(shù)、請求隊(duì)列長度等一系列可以展現(xiàn)系統(tǒng)內(nèi)部性能的數(shù)據(jù)。
數(shù)據(jù)采集模塊將獲取的數(shù)據(jù)進(jìn)行初步處理,具體包括將數(shù)據(jù)格式化成三元組格式(參數(shù)名,參數(shù)值,時(shí)間戳),將數(shù)據(jù)初步處理后發(fā)送給管理節(jié)點(diǎn)。管理節(jié)點(diǎn)將各個(gè)節(jié)點(diǎn)通過數(shù)據(jù)采集模塊發(fā)來的數(shù)據(jù)收集起來存儲到數(shù)據(jù)庫,以備下一步使用。同時(shí)管理節(jié)點(diǎn)也會周期性刪除一些數(shù)據(jù),或者依照一定的時(shí)間戳間隔,刪掉時(shí)間戳間隔內(nèi)的數(shù)據(jù),保證數(shù)據(jù)庫數(shù)據(jù)容量不至過大和較快檢索速度。
數(shù)據(jù)處理模塊主要包括數(shù)據(jù)清理模塊和數(shù)據(jù)分析調(diào)優(yōu)模塊,數(shù)據(jù)清理模塊定時(shí)清理用戶指定時(shí)間間隔之前的數(shù)據(jù)和對用戶指定時(shí)間間隔內(nèi)的數(shù)據(jù)整理,比如,刪除一個(gè)月之前的數(shù)據(jù),并對一個(gè)月之內(nèi)的數(shù)據(jù)按照15分鐘間隔抽樣,15分鐘內(nèi)的數(shù)據(jù)刪除,增加相鄰三元組格式(參數(shù)名,參數(shù)值,時(shí)間戳)數(shù)據(jù)的數(shù)據(jù)戳的間隔,數(shù)據(jù)分析調(diào)優(yōu)模塊周期性的進(jìn)行數(shù)據(jù)分析調(diào)優(yōu),每個(gè)節(jié)點(diǎn)的數(shù)據(jù)是獨(dú)立分析的,互不影響。數(shù)據(jù)分析調(diào)優(yōu)模塊主要有兩個(gè)部分,第一個(gè)部分完成性能瓶頸的查找,即瓶頸分析模塊,第二個(gè)部分完成系統(tǒng)性能的調(diào)優(yōu),即系統(tǒng)調(diào)優(yōu)模塊。此外,數(shù)據(jù)處理模塊還包括性能反饋模塊。
如圖2所示,以下舉例說明對于一個(gè)節(jié)點(diǎn)的性能瓶頸自動化分析和調(diào)優(yōu)過程,其他節(jié)點(diǎn)的分析和調(diào)優(yōu)過程和此節(jié)點(diǎn)相同。
1)瓶頸分析
首先從數(shù)據(jù)庫將從任一節(jié)點(diǎn)收集來的三元組格式數(shù)據(jù)讀取出來,此處讀取數(shù)據(jù)量由用戶決定,可以是從現(xiàn)在到過去半個(gè)小時(shí)的數(shù)據(jù)量,并計(jì)算在當(dāng)前時(shí)刻到與當(dāng)前時(shí)間固定的間隔內(nèi)IO棧每層的平均延遲值,同時(shí)計(jì)算過去歷史時(shí)間間隔內(nèi)的IO棧每層平均延遲值,應(yīng)當(dāng)指出此處歷史時(shí)間可以是根據(jù)實(shí)際實(shí)施時(shí)選定的,此時(shí),已經(jīng)獲取到關(guān)于IO棧性能的當(dāng)前值和歷史值,下一步需要對當(dāng)前IO棧每層的平均延遲值依照大小進(jìn)行排序,選取最耗時(shí)的部分,同時(shí)依據(jù)IO棧每一層的當(dāng)前值、歷史值和其相對應(yīng)的時(shí)間戳得到IO棧每一層的延遲值的變化率,對IO棧變化率進(jìn)行比較,獲取具有最大的變化率的部分。
2)系統(tǒng)調(diào)優(yōu)
此時(shí)需要用戶自定義的映射表,此映射表主要由IO棧每一層和其相對應(yīng)的系統(tǒng)配置參數(shù)組成,根據(jù)映射表查找上一步確定的最耗時(shí)IO棧部分和變化率最大的IO棧部分所對應(yīng)的系統(tǒng)配置參數(shù),此時(shí)從數(shù)據(jù)庫讀取此節(jié)點(diǎn)傳入的硬件性能參數(shù),包含CPU、內(nèi)存,IO和網(wǎng)絡(luò)等,在不超出硬件最大負(fù)載的情況下,依照貪心算法盡可能的調(diào)整系統(tǒng)配置參數(shù),此時(shí)所指的調(diào)整系統(tǒng)配置參數(shù)包括調(diào)整線程個(gè)數(shù)等分布式存儲軟件參數(shù),管理節(jié)點(diǎn)將調(diào)整命令發(fā)給此節(jié)點(diǎn)進(jìn)行對應(yīng)系統(tǒng)配置參數(shù)調(diào)整。
3)性能反饋
比照調(diào)整前和調(diào)整后的分布式存儲系統(tǒng)性能變化,如果系統(tǒng)性能提升,則此次調(diào)優(yōu)成功,向用戶提交此次調(diào)優(yōu)(目的:第1,是向用戶表明系統(tǒng)的可用性;第2,用戶可以記錄調(diào)優(yōu)系統(tǒng)對存儲系統(tǒng)的操作,方便后期人工對存儲系統(tǒng)操作),若系統(tǒng)性能并未優(yōu)化,甚至變差,則回滾此次調(diào)整。
本發(fā)明中,由于自動化分析和調(diào)優(yōu)過程周期性的運(yùn)行,則不同周期運(yùn)行時(shí),單個(gè)節(jié)點(diǎn)IO棧耗時(shí)部分和IO棧變化率部分是不同的,則通過周期性的循環(huán)優(yōu)化,對于IO棧每一層次都會進(jìn)行優(yōu)化調(diào)整。同時(shí)通過數(shù)據(jù)處理模塊可實(shí)現(xiàn)對所有節(jié)點(diǎn)性能數(shù)據(jù)分析和調(diào)優(yōu),使每個(gè)節(jié)點(diǎn)都能發(fā)揮其硬件最大性能,則分布式存儲系統(tǒng)性能得到最大發(fā)揮。例如,申請人所在的項(xiàng)目組針對ceph分布式對象存儲系統(tǒng),已經(jīng)完成本發(fā)明的原型系統(tǒng),相比于初始安裝后ceph對象系統(tǒng)的IOPS性能提高了5%左右。