摘 要: 分析了信息系統(tǒng)中普遍采用的小型機(jī)搭配磁盤(pán)陣列的部署架構(gòu)所帶來(lái)的成本高、擴(kuò)展性差的現(xiàn)狀。針對(duì)這種現(xiàn)狀提出了一種基于X86平臺(tái)的高性能數(shù)據(jù)庫(kù)集群技術(shù),通過(guò)測(cè)試論證了這種技術(shù)的高性能與高可靠,最后通過(guò)該項(xiàng)技術(shù)在電信信息系統(tǒng)中的實(shí)際應(yīng)用說(shuō)明了該方案的可行性。
關(guān)鍵詞: PCIE-Flash卡;RDMA;存儲(chǔ)虛擬化
0 引言
隨著互聯(lián)網(wǎng)時(shí)代的不斷發(fā)展,搭建廉價(jià)、開(kāi)放、共享、可擴(kuò)展的信息系統(tǒng)平臺(tái)已成為信息系統(tǒng)的轉(zhuǎn)型方向,這不僅需要去除電信在傳統(tǒng)運(yùn)營(yíng)思維下形成的對(duì)高性能高成本的設(shè)備和軟件的依賴(lài),也需要對(duì)信息系統(tǒng)進(jìn)行改造,從高質(zhì)量、高復(fù)雜度向可擴(kuò)展、低成本轉(zhuǎn)變,做到資源效益的最大化。隨著硬件技術(shù)的發(fā)展,一方面X86平臺(tái)架構(gòu)的PC服務(wù)器與傳統(tǒng)小型機(jī)在性能方面的差距不斷縮小,另一方面以SSD(固態(tài)硬盤(pán)Solid State Drive)為代表的高性能存儲(chǔ)介質(zhì)的出現(xiàn),使得配備了這種存儲(chǔ)介質(zhì)的X86服務(wù)器不需要外接磁盤(pán)陣列就能具有極高的I/O吞吐能力。通過(guò)以上兩種平臺(tái)技術(shù),結(jié)合遠(yuǎn)程數(shù)據(jù)直接存取RDMA(Remote Direct Memory Access)及存儲(chǔ)虛擬化技術(shù),本文提出了一種基于X86平臺(tái)的高性能數(shù)據(jù)庫(kù)集群技術(shù)在信息系統(tǒng)中的應(yīng)用方案。
1 傳統(tǒng)小型機(jī)與磁盤(pán)陣列部署架構(gòu)的分析
傳統(tǒng)小型機(jī)與磁盤(pán)陣列的部署架構(gòu)以高可靠性、高可用性、可服務(wù)性(Reliability、Availability、Serviceability簡(jiǎn)稱(chēng)RAS)[1]有效地支撐了信息系統(tǒng)的高效運(yùn)行,但傳統(tǒng)架構(gòu)在當(dāng)前互聯(lián)網(wǎng)高速發(fā)展的環(huán)境下也面臨以下問(wèn)題:(1)在非結(jié)構(gòu)化數(shù)據(jù)處理方面能力不足;(2)系統(tǒng)成本高昂,同等處理能力的小型機(jī)價(jià)格大約是PC服務(wù)器的10倍;(3)硬件平臺(tái)的兼容性差,各廠家的小型機(jī)平臺(tái)都存在技術(shù)壁壘,操作系統(tǒng)無(wú)法兼容;(4)擴(kuò)展性有限,傳統(tǒng)小型機(jī)和磁盤(pán)陣列的處理能力屬于TB級(jí),而在面對(duì)PB級(jí)數(shù)據(jù)時(shí),無(wú)法高性能地進(jìn)行處理。隨著信息系統(tǒng)向著開(kāi)源、開(kāi)放、廉價(jià)的方向演進(jìn),以及業(yè)內(nèi)“去IOE”進(jìn)程的深化,將會(huì)有越來(lái)越多的信息系統(tǒng)不再使用傳統(tǒng)架構(gòu)進(jìn)行部署。
2 X86平臺(tái)與SSD等技術(shù)的現(xiàn)狀分析
2.1 X86平臺(tái)現(xiàn)狀
全球最新的服務(wù)器X86處理器將進(jìn)入14 nm工藝時(shí)代,這意味著X86架構(gòu)的服務(wù)器將會(huì)具備更高的處理性能、更長(zhǎng)的穩(wěn)定運(yùn)行時(shí)間以及更低的能耗。下一代20 nm工藝的DDR4(第四代雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器Dual Data Rate Synchronous Dynamic Random Access Memory)內(nèi)存芯片將開(kāi)始應(yīng)用于數(shù)據(jù)中心高端服務(wù)器,基于差分信號(hào)技術(shù)的DDR4內(nèi)存,其傳輸速率將會(huì)達(dá)到6.4 Gb/s。
2.2 SSD技術(shù)現(xiàn)狀分析
固態(tài)硬盤(pán)SSD(Solid State Drives)是用固態(tài)電子存儲(chǔ)芯片陣列而制成的硬盤(pán)[2]。與傳統(tǒng)HDD(Hard Disk Drive)硬盤(pán)相比具有讀寫(xiě)速度快的優(yōu)勢(shì),目前基于PCIE總線技術(shù)的固態(tài)硬盤(pán)的讀寫(xiě)速度甚至超過(guò)了500 MB/s,但SSD也存在著容量較低、使用壽命受限、價(jià)格較高等缺點(diǎn)。在本方案中,采用了SSD盤(pán)用于提升數(shù)據(jù)庫(kù)集群的整體I/O吞吐能力。
2.3 RDMA技術(shù)分析
遠(yuǎn)程直接數(shù)據(jù)存取RDMA(Remote Direct Memory Access)技術(shù)是為了解決網(wǎng)絡(luò)傳輸中服務(wù)器端數(shù)據(jù)處理的延遲而產(chǎn)生的[3]。RDMA通過(guò)網(wǎng)絡(luò)把資料直接傳入計(jì)算機(jī)的存儲(chǔ)區(qū),將數(shù)據(jù)從一個(gè)系統(tǒng)快速移動(dòng)到遠(yuǎn)程系統(tǒng)存儲(chǔ)器中,而不對(duì)操作系統(tǒng)造成任何影響,這樣就不需要占用服務(wù)器的處理功能。它消除了外部存儲(chǔ)器復(fù)制和文本交換操作,因而能釋放內(nèi)存帶寬和CPU的使用,能有效提升應(yīng)用系統(tǒng)性能。在本文提出的方案中,RDMA技術(shù)的引入可以有效提升不同數(shù)據(jù)節(jié)點(diǎn)間的數(shù)據(jù)交互速度,降低數(shù)據(jù)處理延時(shí)。
2.4 存儲(chǔ)虛擬化技術(shù)分析
存儲(chǔ)虛擬化(Storage Virtualization)技術(shù)是一種屏蔽存儲(chǔ)異構(gòu)環(huán)境,整合存儲(chǔ)資源,統(tǒng)一提供有用的全面功能服務(wù)的一種虛擬化技術(shù)[4]。通過(guò)這種技術(shù)可以將存儲(chǔ)資源虛擬成一個(gè)“存儲(chǔ)池”,從而提高整體利用率并降低管理成本,同時(shí)也可以實(shí)現(xiàn)在復(fù)雜環(huán)境下的數(shù)據(jù)遷移與數(shù)據(jù)同步,提升存儲(chǔ)環(huán)境的整體性能和可用性水平。在本方案中,通過(guò)存儲(chǔ)虛擬化技術(shù)將所有服務(wù)器節(jié)點(diǎn)的磁盤(pán)虛擬成一個(gè)“存儲(chǔ)池”,統(tǒng)一進(jìn)行數(shù)據(jù)的分配與備份,以此提升數(shù)據(jù)的安全性。
3 基于X86平臺(tái)的高性能數(shù)據(jù)庫(kù)集群技術(shù)方案
通過(guò)以上技術(shù)手段,本文提出了一種基于X86服務(wù)器平臺(tái),采用高性能SSD盤(pán)搭配SAS機(jī)內(nèi)盤(pán)的混合存儲(chǔ)模式,并通過(guò)存儲(chǔ)虛擬化整合多節(jié)點(diǎn)存儲(chǔ),網(wǎng)絡(luò)采用支持RDMA功能的萬(wàn)兆網(wǎng)絡(luò),部署的數(shù)據(jù)庫(kù)集群架構(gòu),在成本大幅降低的基礎(chǔ)上達(dá)到與傳統(tǒng)架構(gòu)近似的性能。
3.1 實(shí)施目標(biāo)
本文以X86架構(gòu)PC服務(wù)器集群為核心,以新型高性能網(wǎng)絡(luò)為通道,以存儲(chǔ)虛擬化軟件為紐帶,構(gòu)建多節(jié)點(diǎn)、高性能、高可用、高吞吐量、可靈活橫向擴(kuò)展的全新數(shù)據(jù)庫(kù)集群[5]解決方案。本方案通過(guò)某電信綜合網(wǎng)元激活系統(tǒng)的應(yīng)用進(jìn)行測(cè)試,以驗(yàn)證方案可行性與先進(jìn)性。
3.2 驗(yàn)證方案
以四臺(tái)X86機(jī)架式服務(wù)器為平臺(tái),在Linux操作系統(tǒng)之上,構(gòu)建多節(jié)點(diǎn)數(shù)據(jù)庫(kù)集群。每臺(tái)服務(wù)器內(nèi)置1塊SSD硬盤(pán),作為一級(jí)存儲(chǔ),實(shí)現(xiàn)數(shù)據(jù)庫(kù)高速讀緩存;服務(wù)器內(nèi)置SAS盤(pán),作為二級(jí)存儲(chǔ),用于數(shù)據(jù)庫(kù)大數(shù)據(jù)容量存儲(chǔ);外置NAS磁盤(pán)陣列,以ISCSI方式連接,作為三級(jí)低速存儲(chǔ),用以定時(shí)快照數(shù)據(jù)庫(kù)數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)容災(zāi)。
集群內(nèi)部通過(guò)支持RDMA協(xié)議的萬(wàn)兆交換機(jī)構(gòu)建高速網(wǎng)絡(luò),服務(wù)器之間通過(guò)直接訪問(wèn)對(duì)方的內(nèi)存來(lái)存取數(shù)據(jù),不經(jīng)過(guò)傳統(tǒng)網(wǎng)絡(luò)層的額外數(shù)據(jù)緩沖,也不需要進(jìn)行SCSI協(xié)議轉(zhuǎn)換與CPU的處理,從而達(dá)到更高的性能和更低的時(shí)延。
通過(guò)存儲(chǔ)虛擬化軟件,將各節(jié)點(diǎn)中本地硬盤(pán)作為共享存儲(chǔ)使用;通過(guò)兩兩服務(wù)器間的數(shù)據(jù)鏡像,確保數(shù)據(jù)跨設(shè)備冗余;最終構(gòu)建4節(jié)點(diǎn)數(shù)據(jù)庫(kù)集群。集群中任一節(jié)點(diǎn)故障都不會(huì)造成數(shù)據(jù)庫(kù)集群的數(shù)據(jù)和應(yīng)用中斷。
當(dāng)數(shù)據(jù)庫(kù)計(jì)算能力或存儲(chǔ)容量不足時(shí),可以通過(guò)在線增加集群的單元節(jié)點(diǎn)的方式來(lái)進(jìn)行橫向擴(kuò)展。部署架構(gòu)圖如圖1所示。
3.3 配置方案
?。?)通過(guò)存儲(chǔ)虛擬化軟件將不同服務(wù)器上的SSD硬盤(pán)及SAS盤(pán)配置成共享存儲(chǔ),并設(shè)置跨主機(jī)的數(shù)據(jù)鏡像。如圖2所示。
?。?)為保證數(shù)據(jù)庫(kù)的讀寫(xiě)性能,需要將SSD硬盤(pán)設(shè)置為數(shù)據(jù)庫(kù)的讀緩存,將數(shù)據(jù)庫(kù)中讀寫(xiě)頻繁、對(duì)I/O性能要求最高的數(shù)據(jù)文件,全部配置在SSD硬盤(pán)所提供的文件系統(tǒng)或硬盤(pán)邏輯卷組上。
?。?)對(duì)于配置定時(shí)進(jìn)行數(shù)據(jù)快照保存至NAS設(shè)備,根據(jù)應(yīng)用特點(diǎn),確定快照間隔時(shí)間。并區(qū)分?jǐn)?shù)據(jù)庫(kù)與日志的快照時(shí)間,盡可能使日志快照緊隨其產(chǎn)生之后。
?。?)對(duì)于數(shù)據(jù)庫(kù)備份的配置,增加一臺(tái)備份介質(zhì)服務(wù)器,與主服務(wù)器相似配置(可做生產(chǎn)服務(wù)器的備機(jī)),數(shù)據(jù)備份至備份服務(wù)器內(nèi)置的串行連接SCSI(Serial Attached SCSI)盤(pán)以及磁帶庫(kù)。備份可以通過(guò)與生產(chǎn)數(shù)據(jù)共享網(wǎng)絡(luò)完成,也可通過(guò)單獨(dú)的備份萬(wàn)兆網(wǎng)絡(luò)完成。備份數(shù)據(jù)將通過(guò)數(shù)據(jù)庫(kù)集群中的每一個(gè)節(jié)點(diǎn)。首先在各自節(jié)點(diǎn)完成重復(fù)數(shù)據(jù)刪除,再通過(guò)萬(wàn)兆網(wǎng)絡(luò)傳輸?shù)絺浞萁橘|(zhì)服務(wù)器,從而完成首次磁盤(pán)備份。然后根據(jù)備份策略由備份介質(zhì)服器自動(dòng)將數(shù)據(jù)從磁盤(pán)介質(zhì)復(fù)制到磁帶庫(kù)中,整個(gè)復(fù)制過(guò)程與被保護(hù)的數(shù)據(jù)庫(kù)集群無(wú)關(guān)。
4 測(cè)試結(jié)果及分析
4.1 測(cè)試平臺(tái)參數(shù)
在實(shí)驗(yàn)室搭建了如下的實(shí)驗(yàn)平臺(tái),具體參數(shù)見(jiàn)表1。
4.2 測(cè)試過(guò)程及結(jié)果分析
本次測(cè)試使用到的測(cè)試工具為:VXBench及SwingBench。
VXBench是磁盤(pán)I/O測(cè)試的工具,可以測(cè)試基于磁盤(pán)虛擬化并共享的場(chǎng)景下的磁盤(pán)I/O吞吐量、IOPS和延時(shí)。
SwingBench工具可以模擬Oracle數(shù)據(jù)庫(kù)insert/update/select等應(yīng)用場(chǎng)景,測(cè)試上述不同場(chǎng)景下的事務(wù)處理能力,包括每分鐘處理事務(wù)數(shù)據(jù)TPM、每秒處理事務(wù)數(shù)TPS、事務(wù)處理響應(yīng)時(shí)間Response Time等指標(biāo)。
本次測(cè)試,導(dǎo)入測(cè)試數(shù)據(jù)庫(kù)數(shù)據(jù),數(shù)據(jù)量約2T,通過(guò)應(yīng)用服務(wù)器模擬數(shù)據(jù)庫(kù)的增、刪、改、查操作,對(duì)數(shù)據(jù)庫(kù)集群進(jìn)行長(zhǎng)時(shí)間、高并發(fā)的壓測(cè),以驗(yàn)證本方案是否有效。
4.2.1 高可用測(cè)試
(1)基于集群節(jié)點(diǎn)重啟測(cè)試,主要驗(yàn)證主機(jī)異常重啟對(duì)系統(tǒng)的影響,結(jié)果如表2。
測(cè)試結(jié)論:基于四節(jié)點(diǎn)RAC,采用兩節(jié)點(diǎn)盤(pán)鏡像后再條帶化的方式,其結(jié)果如下:
?、僦貑喂?jié)點(diǎn),系統(tǒng)正常;
?、谥貑晒?jié)點(diǎn),如果重啟的節(jié)點(diǎn)正好是同一份鏡像的兩節(jié)點(diǎn),系統(tǒng)異常;
?、燮渌?lèi)方式重啟兩節(jié)點(diǎn),系統(tǒng)正常;
?、苤貑⑷?jié)點(diǎn),系統(tǒng)異常。
(2)基于四節(jié)點(diǎn)RAC、Oracle心跳異常測(cè)試,主要驗(yàn)證主機(jī)心跳網(wǎng)卡中斷對(duì)系統(tǒng)的影響,如表3所示。
測(cè)試結(jié)論:Oracle心跳網(wǎng)卡采用系統(tǒng)bonding綁定方式,拔其中任意一根網(wǎng)卡對(duì)生產(chǎn)不造成影響。當(dāng)拔兩根網(wǎng)卡后,該系統(tǒng)業(yè)務(wù)切換至正常生產(chǎn)的系統(tǒng)上。整個(gè)RAC正常。
?。?)基于四節(jié)點(diǎn)RAC、模擬磁盤(pán)故障測(cè)試,主要驗(yàn)證磁盤(pán)損壞對(duì)系統(tǒng)的影響,如表4所示。
?。?)集群擴(kuò)展性測(cè)試
測(cè)試場(chǎng)景:將集群中四個(gè)節(jié)點(diǎn)去掉一個(gè),然后重新加入集群,觀測(cè)系統(tǒng)運(yùn)行狀況。測(cè)試情況如表5。
4.2.2 集群性能測(cè)試
?。?)基于SSD盤(pán)的跨節(jié)點(diǎn)數(shù)據(jù)鏡像測(cè)試
測(cè)試過(guò)程:將節(jié)點(diǎn)1和節(jié)點(diǎn)2主機(jī)上的SSD盤(pán)做成一個(gè)卷組,在這個(gè)卷組上,使用節(jié)點(diǎn)1的SSD盤(pán)建立一個(gè)邏輯卷lv01,大小為600 GB,使用節(jié)點(diǎn)2的SSD盤(pán)建立一個(gè)邏輯卷lv02,大小也為600 GB,執(zhí)行鏡像腳本,將節(jié)點(diǎn)1上的lv01中的數(shù)據(jù)同步到節(jié)點(diǎn)2上的lv02。
測(cè)試結(jié)果如下:
節(jié)點(diǎn)2的SSD寫(xiě)盤(pán)速率在606 MB/s左右,節(jié)點(diǎn)1的SSD讀盤(pán)速率約在597 MB/s左右,服務(wù)器的CPU使用率約在15%,內(nèi)存使用率約在45%。
測(cè)試結(jié)論:卷組能夠充分利用萬(wàn)兆網(wǎng)卡的RDMA功能進(jìn)行數(shù)據(jù)復(fù)制,基本不消耗CPU的能力。
?。?)基于SSD盤(pán)的邏輯卷I/O壓力測(cè)試
測(cè)試場(chǎng)景:本地或遠(yuǎn)程讀寫(xiě)SSD盤(pán)性能數(shù)據(jù),使用VXBench工具進(jìn)行測(cè)試。
性能測(cè)試數(shù)據(jù)如圖3~5所示。
測(cè)試結(jié)論:本地讀寫(xiě)與遠(yuǎn)端讀寫(xiě)IOPS和吞吐能力、時(shí)延等性能相近;SSD盤(pán)的本地與遠(yuǎn)程讀寫(xiě)的峰值在750 MB/s左右,基本達(dá)到中高端存儲(chǔ)的讀寫(xiě)能力。
?。?)基于SSD磁盤(pán)和SAS磁盤(pán)的性能及差別
測(cè)試場(chǎng)景:服務(wù)器直接寫(xiě)本地SSD和SAS盤(pán),在塊大小為4 KB、8 KB、64 KB三種情況下分別進(jìn)行測(cè)試,測(cè)試工具為VXBench。
性能測(cè)試數(shù)據(jù)如圖6、圖7所示。
測(cè)試結(jié)論:?jiǎn)蝹€(gè)SSD盤(pán)的寫(xiě)IOPS超過(guò)10萬(wàn),比SAS盤(pán)快100倍;單個(gè)SSD盤(pán)的寫(xiě)讀寫(xiě)速度達(dá)到500M/s,比SAS盤(pán)快10倍。
?。?)基于RDMA技術(shù)進(jìn)行跨節(jié)點(diǎn)讀寫(xiě)與不使用RDMA技術(shù)進(jìn)行跨節(jié)點(diǎn)讀寫(xiě)的比較
測(cè)試場(chǎng)景:服務(wù)器通過(guò)萬(wàn)兆網(wǎng)絡(luò)跨節(jié)點(diǎn)讀寫(xiě)SSD磁盤(pán),分別啟用和不啟用RDMA,比較兩者的差異,測(cè)試工具為VXBench。
性能測(cè)試數(shù)據(jù)如圖8、圖9所示。
測(cè)試數(shù)據(jù)分析:在數(shù)據(jù)塊較小的場(chǎng)景下,啟用RDMA和不啟用RDMA,讀寫(xiě)速率沒(méi)有明顯差別;在數(shù)據(jù)庫(kù)較大的場(chǎng)景下,啟用了RDMA比不啟用RDMA,讀寫(xiě)速率增加了一倍。
性能測(cè)試效果如表6所示。
5 結(jié)束語(yǔ)
本文提出了一種基于X86平臺(tái)的高性能數(shù)據(jù)庫(kù)集群技術(shù),通過(guò)RDMA、存儲(chǔ)虛擬化、數(shù)據(jù)庫(kù)集群等技術(shù)提供了一種有效的數(shù)據(jù)庫(kù)應(yīng)用方案,基本達(dá)到了傳統(tǒng)架構(gòu)下的處理能力,并提升了平臺(tái)的穩(wěn)定性。這種方案通過(guò)廉價(jià)的硬件成本實(shí)現(xiàn)了X86平臺(tái)的高性能響應(yīng),存儲(chǔ)虛擬化及鏡像技術(shù)的應(yīng)用,確保了在高讀寫(xiě)并發(fā)情況下數(shù)據(jù)的安全,相比于傳統(tǒng)的小型機(jī)與磁盤(pán)陣列架構(gòu)具有較高的性?xún)r(jià)比與應(yīng)用推廣價(jià)值。
參考文獻(xiàn)
[1] SCHMIDT D J. Holistic handset power management: transisitor to platform[R]. IWPC, 2010.4.
[2] 袁飛.固態(tài)硬盤(pán)的研究與應(yīng)用[D].成都:電子科技大學(xué),2010.
[3] GARCIA D, HILL J, BARRON D, et al. An RDMA protocol speci fication(Version 1.0)[EB/OL].(2014-09-29)http://www.rdmaconsortium.org/home.
[4] 廖瑩寒,朱敏.兩級(jí)存儲(chǔ)虛擬化模型[J].計(jì)算機(jī)應(yīng)用與軟件,2012(4):180-182.
[5] 梁勇.數(shù)據(jù)庫(kù)集群故障切換技術(shù)的研究與實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科技大學(xué),2010.