曾 發(fā),麻雨欣2,曾貴明,梁 君,榮 剛
(1.中國運載火箭技術(shù)研究院 研發(fā)中心,北京 100076; 2.航天材料及工藝研究所,北京 100076)
根據(jù)IDC(internet data center)的調(diào)查,在2000年以前的十年間發(fā)生過數(shù)據(jù)災(zāi)難的公司中,有55%的公司當(dāng)即倒閉,剩下的45%中,也因數(shù)據(jù)丟失,有29%在兩年內(nèi)倒閉,生存下來的僅占16%[1-2]。地震、火災(zāi)等不可抗因素,硬盤劃傷、網(wǎng)絡(luò)故障、硬件損壞等硬件故障,Bug、內(nèi)存溢出、崩潰等軟件故障,誤操作、誤刪除、惡意攻擊等人為因素[3-4],都將造成數(shù)據(jù)故障或丟失且不可避免,軟硬件越多,應(yīng)用越多,發(fā)生概率越大,損失越大。在此現(xiàn)實下,2010年前,有80%的大企業(yè)已采取數(shù)據(jù)存儲持續(xù)保護設(shè)備[5-7]。由此可知數(shù)據(jù)存儲對企業(yè)的重要。
目前軍工型號產(chǎn)品在線協(xié)同設(shè)計、數(shù)字化制造的應(yīng)用不斷擴大和深入,各分系統(tǒng)和單機單位間業(yè)務(wù)協(xié)同越來越多,由此帶來軍工集團的計算機集群規(guī)模越來越大,業(yè)務(wù)應(yīng)用數(shù)據(jù)越來越大,數(shù)據(jù)故障或丟失對業(yè)務(wù)應(yīng)用系統(tǒng)損失越來越大,對數(shù)據(jù)存儲持續(xù)保護、容災(zāi)安全、讀寫速度的要求越來越高,急需對現(xiàn)有存儲系統(tǒng)進行升級或開發(fā)新型存儲方案。
現(xiàn)在某軍工集團下轄十余個廠所,計算機集群中有上萬個客戶端、幾百臺數(shù)據(jù)庫服務(wù)器和應(yīng)用服務(wù)器集群,數(shù)據(jù)達PB量級,其數(shù)據(jù)存儲方案采用將所有服務(wù)器通過FC(Fibre Channel)光纖交換機與SAN(Storage Area Network)統(tǒng)一存儲相連,對外提供服務(wù),其總體方案如圖1所示。
圖1 現(xiàn)有存儲方案
所有數(shù)據(jù)庫服務(wù)器和應(yīng)用服務(wù)器均配置以太網(wǎng)卡和光纖HBA(Host Bus Adapter)卡,以太網(wǎng)卡接入以太網(wǎng)絡(luò),為前端用戶提供服務(wù),光纖HBA卡通過FC光纖通道交換機與后端SAN統(tǒng)一存儲相連,所有數(shù)據(jù)均存放在后端統(tǒng)一存儲中。
存儲系統(tǒng)為基于FC光纖通道的SAN統(tǒng)一存儲,所有數(shù)據(jù)均存放在同一臺存儲系統(tǒng)中,嚴重拖慢存儲系統(tǒng)性能,并進一步影響到前端業(yè)務(wù)系統(tǒng)。大量非核心數(shù)據(jù)占用大量存儲空間,消耗大量存儲系統(tǒng)性能,存儲系統(tǒng)無法為前端業(yè)務(wù)系統(tǒng)提供足夠存儲空間和存儲性能;加上利用數(shù)據(jù)庫自身功能備份數(shù)據(jù)對存儲資源的消耗,無法為前端業(yè)務(wù)系統(tǒng)提供足夠I/O支撐保障。存儲系統(tǒng)未對數(shù)據(jù)保護,業(yè)務(wù)系統(tǒng)發(fā)生損壞、數(shù)據(jù)丟失、數(shù)據(jù)邏輯錯誤等問題,都將給業(yè)務(wù)系統(tǒng)帶來極大影響,甚至整個系統(tǒng)崩潰。目前,其廠所級應(yīng)用系統(tǒng)癱瘓頻率已達到每月數(shù)次,故障修復(fù)長達數(shù)小時甚至一天,期間很多工作只能中斷,給集團業(yè)務(wù)帶來極大損失。
針對現(xiàn)有存儲方案存在問題和未來大數(shù)據(jù)業(yè)務(wù)應(yīng)用需求,本文面向大型計算機集群業(yè)務(wù)應(yīng)用,充分利用現(xiàn)有存儲設(shè)備,增加一套備份存儲硬件,設(shè)計一套數(shù)據(jù)塊級的大數(shù)據(jù)持續(xù)保護系統(tǒng)(Big Data Continuous Protection System,簡稱BDCPS),在不影響前端應(yīng)用前提下,捕獲、跟蹤數(shù)據(jù)變化,進行實時備份并能恢復(fù)到此前任意時間點,實現(xiàn)數(shù)據(jù)保護,防止數(shù)據(jù)發(fā)生損壞或丟失,并剝離出部分非核心數(shù)據(jù)到新存儲平臺,以減輕業(yè)務(wù)系統(tǒng)存儲壓力,釋放存儲資源,保障前端應(yīng)用高效運行,其總體方案如圖2所示,由圖可見系統(tǒng)配置簡單、結(jié)構(gòu)清晰,各服務(wù)器、現(xiàn)有SAN存儲系統(tǒng)、BDCPS均接入機房LAN(Local Area Network)網(wǎng)絡(luò)與SAN網(wǎng)絡(luò)中。
圖2 BDCPS總體方案
BDCPS同時支持Unix、Linux和Windows平臺,通過部署其中的模塊,為整個計算機集群中的操作系統(tǒng)、數(shù)據(jù)庫、正運行關(guān)鍵業(yè)務(wù)的服務(wù)器提供快速、可靠、完全的數(shù)據(jù)備份和恢復(fù)服務(wù)。系統(tǒng)保護業(yè)務(wù)數(shù)據(jù)同時持續(xù)保護數(shù)據(jù)庫服務(wù)器數(shù)據(jù),保證備份數(shù)據(jù)與業(yè)務(wù)應(yīng)用主機數(shù)據(jù)完全一致,當(dāng)業(yè)務(wù)應(yīng)用出現(xiàn)故障,通過數(shù)據(jù)掛載恢復(fù)業(yè)務(wù)。系統(tǒng)定時將非核心業(yè)務(wù)應(yīng)用數(shù)據(jù)備份至備份存儲設(shè)備中,保證重要數(shù)據(jù)丟失或損壞后能及時恢復(fù)數(shù)據(jù)。新增存儲存放非核心數(shù)據(jù),并承載一些測試、統(tǒng)計、數(shù)據(jù)分析,避免所有工作都由業(yè)務(wù)系統(tǒng)主存儲負載。根據(jù)上述功能需求,將BDCPS劃分為數(shù)據(jù)定時備份、持續(xù)數(shù)據(jù)保護和數(shù)據(jù)查詢統(tǒng)計三個主要功能模塊。
BDCPS內(nèi)部組成結(jié)構(gòu)見圖3,其中:文件數(shù)據(jù)捕獲、跟蹤子模塊負責(zé)截獲業(yè)務(wù)應(yīng)用層或文件層傳輸過來的寫操作及修改信息,再把截獲的信息傳遞給標(biāo)記子模塊;磁盤塊數(shù)據(jù)捕獲、跟蹤子模塊負責(zé)截獲物理磁盤層上數(shù)據(jù)塊的寫操作及修改信息,再把截獲的信息傳遞給標(biāo)記子模塊;標(biāo)記子模塊包括應(yīng)用標(biāo)記和事件標(biāo)記,前者標(biāo)記此次截獲的信息屬于哪個文件以及屬于哪個被保護的應(yīng)用,后者使用事件對數(shù)據(jù)進行劃分并將事件流與應(yīng)用標(biāo)記之后的數(shù)據(jù)合并,標(biāo)記后的數(shù)據(jù)傳遞給緩存區(qū);緩存區(qū)子模塊緩存業(yè)務(wù)系統(tǒng)主機應(yīng)用層數(shù)據(jù)或內(nèi)核層數(shù)據(jù),保證截獲的數(shù)據(jù)傳遞到BDCPS服務(wù)器前不會丟失;網(wǎng)絡(luò)子模塊采用SAN網(wǎng)絡(luò)雙冗余數(shù)據(jù)傳輸,能夠處理網(wǎng)絡(luò)故障和數(shù)據(jù)重發(fā),其數(shù)據(jù)遷移器組件快速高效將數(shù)據(jù)傳輸?shù)紹DCPS服務(wù)器的緩存區(qū);I/O切換子模塊,用于發(fā)生故障時,實現(xiàn)存儲切換,將業(yè)務(wù)系統(tǒng)主機磁盤讀寫重定向到虛擬磁盤,即通過網(wǎng)絡(luò)向BDCPS服務(wù)器讀寫數(shù)據(jù),直到業(yè)務(wù)系統(tǒng)主機數(shù)據(jù)恢復(fù)完成,虛擬卷中數(shù)據(jù)與磁盤數(shù)據(jù)完全同步,I/O切換為原來的狀態(tài);多級緩存子模塊,BDCPS服務(wù)器采用大容量內(nèi)存和SSD(Solid State Drives)固態(tài)硬盤相結(jié)合的多級緩存方式以滿足大量業(yè)務(wù)系統(tǒng)主機數(shù)據(jù)緩存;存儲子模塊,用于數(shù)據(jù)存儲、管理、查詢、統(tǒng)計等以及存儲池中物理磁盤管理,并對冗余數(shù)據(jù)進行去重刪除,減少數(shù)據(jù)存儲所需空間;存儲池,數(shù)據(jù)存儲的物理磁盤,用于業(yè)務(wù)系統(tǒng)主機數(shù)據(jù)備份存儲,包括定時備份和持續(xù)保護實時備份,并形成影子副本(Shadow Copy);遠程備份子模塊,將數(shù)據(jù)定時或?qū)崟r備份到異地的BDCPS服務(wù)器,可根據(jù)需要部署,本文沒有進行遠程備份。文件數(shù)據(jù)捕獲、跟蹤子模塊和磁盤塊數(shù)據(jù)捕獲、跟蹤子模塊是BDCPS的關(guān)鍵子模塊,提供業(yè)務(wù)系統(tǒng)主機中的數(shù)據(jù)變化部分,下文提到的數(shù)據(jù)分流器組件即屬于這兩個子模塊,這兩個子模塊與標(biāo)記子模塊組合,根據(jù)不同數(shù)據(jù)恢復(fù)算法,形成快照模塊,獲得被保護數(shù)據(jù)的一致性快照,并以虛擬磁帶庫形式存儲于BDCPS服務(wù)器,發(fā)生故障時,其邏輯卷通過網(wǎng)絡(luò)子模塊,直接掛載到業(yè)務(wù)系統(tǒng)主機上的虛擬磁盤。
圖3 BDCPS內(nèi)部組成結(jié)構(gòu)
數(shù)據(jù)定時備份、持續(xù)數(shù)據(jù)保護和數(shù)據(jù)查詢統(tǒng)計三個主要功能模塊,則由上述子模塊的不同組合來實現(xiàn),其部署設(shè)置和工作機理見下文詳述。
根據(jù)部署位置劃分,BDCPS分為BDCPS代理和BDCPS服務(wù)器兩大部分。BDCPS代理部署在需保護的業(yè)務(wù)系統(tǒng)服務(wù)器上,實時監(jiān)控服務(wù)器上所存數(shù)據(jù)變化,并把監(jiān)控信息、標(biāo)記信息發(fā)送給BDCPS服務(wù)器存儲起來。當(dāng)故障發(fā)生時,BDCPS代理負責(zé)存儲切換和數(shù)據(jù)恢復(fù)。BDCPS服務(wù)器主要用來存儲數(shù)據(jù),并隨時準(zhǔn)備提供一個完整的數(shù)據(jù)版本給BDCPS代理使用。
BDCPS將每個磁盤即邏輯單位劃分為固定大小的數(shù)據(jù)塊,根據(jù)數(shù)據(jù)保護的恢復(fù)粒度大小,數(shù)據(jù)塊大小可以設(shè)置為4 KB、8 KB、16 KB、32 KB、64 KB,并以數(shù)據(jù)塊為單位記錄磁盤中的數(shù)據(jù)變化,塊大小設(shè)置越小,數(shù)據(jù)恢復(fù)的粒度越小,但相應(yīng)塊數(shù)量越多,需讀寫的塊總數(shù)越多,效率降低。BDCPS自動將業(yè)務(wù)系統(tǒng)主機中磁盤更改過的所有數(shù)據(jù)按時間順序保存下來,每次寫操作都會生成帶有時間戳的數(shù)據(jù)塊版本,并形成I/O記錄,在業(yè)務(wù)系統(tǒng)主機恢復(fù)數(shù)據(jù)時,能夠獲取任意一個時間的數(shù)據(jù)狀態(tài)。
BDCPS采用虛擬化技術(shù)統(tǒng)一管理物理磁盤陣列,將其虛擬化成邏輯存儲池,根據(jù)制定的存儲池配置方案來對存儲池進行劃分,形成一塊塊指定大小的邏輯卷,以便統(tǒng)一管理分配,更大化地利用存儲空間。
為保證系統(tǒng)數(shù)據(jù)安全,對各重要和核心業(yè)務(wù)應(yīng)用服務(wù)器都進行數(shù)據(jù)備份,按如下步驟設(shè)置:不改變現(xiàn)有方案結(jié)構(gòu),將BDCPS接入LAN網(wǎng)絡(luò)與SAN網(wǎng)絡(luò)中;在需備份服務(wù)器中安裝相應(yīng)系統(tǒng)版本的代理模塊;備份數(shù)據(jù)通過虛擬磁帶庫存儲至BDCPS中。
部署完BDCPS后,設(shè)定備份策略自動完成備份任務(wù),其工作流程如下:定時備份模塊根據(jù)備份策略,向各備份源發(fā)送備份任務(wù),備份源上的相應(yīng)代理接到任務(wù)后,抓取備份數(shù)據(jù),移交到數(shù)據(jù)遷移器,遷移器將數(shù)據(jù)通過SAN網(wǎng)絡(luò)以虛擬磁帶方式保存至BDCPS自身存儲磁盤中。當(dāng)備份源數(shù)據(jù)損壞時,可通過BDCPS選擇已備份的任意時間點進行恢復(fù)。
圖4 數(shù)據(jù)定時備份結(jié)構(gòu)
對于現(xiàn)有數(shù)據(jù)庫服務(wù)器和應(yīng)用服務(wù)器集群中前期存儲的部分非核心數(shù)據(jù),數(shù)據(jù)遷移備份到BDCPS自身存儲磁盤后,即根據(jù)策略刪除現(xiàn)有服務(wù)器集群中的原數(shù)據(jù),以釋放現(xiàn)有業(yè)務(wù)系統(tǒng)的存儲資源,可以在不停止現(xiàn)有業(yè)務(wù)處理的情況下,有效增加用于處理核心業(yè)務(wù)數(shù)據(jù)的存儲資源,減輕服務(wù)器存儲壓力,提升其運行速度,重新恢復(fù)前端應(yīng)用的高效運行,需要使用這些數(shù)據(jù)時,再從BDCPS中遷回業(yè)務(wù)系統(tǒng)服務(wù)器。
對集群中各在線業(yè)務(wù)應(yīng)用服務(wù)器及數(shù)據(jù)庫服務(wù)器進行持續(xù)數(shù)據(jù)保護,通過以下方式實現(xiàn):不改變現(xiàn)有方案結(jié)構(gòu),將BDCPS接入LAN網(wǎng)絡(luò)與SAN網(wǎng)絡(luò)中,激活持續(xù)數(shù)據(jù)保護模塊、快照模塊;在需持續(xù)數(shù)據(jù)保護的服務(wù)器中安裝持續(xù)數(shù)據(jù)保護數(shù)據(jù)分流器,通過持續(xù)數(shù)據(jù)保護模塊實現(xiàn)核心業(yè)務(wù)的持續(xù)數(shù)據(jù)保護功能;持續(xù)數(shù)據(jù)保護的數(shù)據(jù)存儲于BDCPS自身存儲磁盤中。
如圖5所示,BDCPS部署完成后,系統(tǒng)自動將需保護服務(wù)器進行有效持續(xù)數(shù)據(jù)保護,在數(shù)據(jù)寫入被保護服務(wù)器自身存儲設(shè)備同時,寫入BDCPS中,保證BDCPS連接中的數(shù)據(jù)與被保護數(shù)據(jù)完全一致,并生成每個I/O記錄點和一致性快照。利用快照功能,可進行連續(xù)的或基于時間點的快照工作,當(dāng)被保護服務(wù)器發(fā)生邏輯錯誤時,快速有效掛載快照點,避免邏輯錯誤造成數(shù)據(jù)損壞。
圖5 數(shù)據(jù)持續(xù)保護結(jié)構(gòu)
BDCPS針對大型計算機集群業(yè)務(wù)應(yīng)用中大數(shù)據(jù)、高并發(fā)特點,數(shù)據(jù)持續(xù)保護特點, 采用大容量高速緩存和SSD 多級緩存架構(gòu)提高寫入性能, 利用多核處理器技術(shù)和并行隊列處理算法, 提高數(shù)據(jù)持續(xù)保護的速度,降低其對業(yè)務(wù)系統(tǒng)存儲性能的影響。
數(shù)據(jù)查詢統(tǒng)計主要基于BDCPS內(nèi)置的影子副本掛載功能實現(xiàn),利用影子副本即時掛載技術(shù),可不停止數(shù)據(jù)持續(xù)保護,直接將多個歷史數(shù)據(jù)狀態(tài)點瞬間掛載到不同主機或虛擬機,與BDCPS磁盤組同時讀寫訪問、分別回滾,其工作方式見圖6。
圖6 數(shù)據(jù)查詢統(tǒng)計結(jié)構(gòu)
影子副本可極大改善數(shù)據(jù)持續(xù)保護的易用性,包括災(zāi)備演練、恢復(fù)、測試和數(shù)據(jù)統(tǒng)計、分析、再利用體驗,并簡化操作步驟,相當(dāng)于將不同時間點的快照數(shù)據(jù),虛擬生成若干個磁盤組,以方便查詢最符合要求的數(shù)據(jù)用于恢復(fù)。當(dāng)不需要這些數(shù)據(jù)掛載點時,可隨時刪除,不影響原有數(shù)據(jù)持續(xù)保護任務(wù)保護的數(shù)據(jù)。影子卷產(chǎn)生的增量變化數(shù)據(jù)不被保留,占用磁盤空間將釋放回存儲池。
若選擇將數(shù)據(jù)持續(xù)保護卷組先進行設(shè)備上或設(shè)備間的復(fù)制,當(dāng)副本數(shù)據(jù)獨立存放于單獨RAID 磁盤,此時再使用影子副本功能做讀寫分離或查詢等,適用于高I/O負載的業(yè)務(wù),同時保持不停止保護和復(fù)制。
為方便測試,本文對系統(tǒng)進行簡化,選用4臺客戶端計算機作為業(yè)務(wù)系統(tǒng)主機、1臺服務(wù)器作為BDCPS服務(wù)器,組成測試網(wǎng)絡(luò),分別安裝BDCPS代理、BDCPS服務(wù),主要硬件配置見表1~表2。
表1 業(yè)務(wù)端硬件配置
表2 BDCPS服務(wù)器硬件配置
限于篇幅,本文選取數(shù)據(jù)持續(xù)保護中數(shù)據(jù)恢復(fù)性能這一重要指標(biāo)作為考核對象,試驗主要測試BDCPS在不同數(shù)據(jù)量和不同業(yè)務(wù)主機數(shù)從BDCPS服務(wù)器獲取數(shù)據(jù)的數(shù)據(jù)恢復(fù)時間,并設(shè)定被保護塊設(shè)備大小為16 KB。恢復(fù)模式分別采用全量恢復(fù)、增量恢復(fù)[8],全量恢復(fù)算法基本思路:設(shè)數(shù)據(jù)保護初始時刻為t0,指定目標(biāo)恢復(fù)時間點為tT,找出從t0到tT分支上所有寫操作記錄,最后在相同源地址的多個寫操作記錄中,取時間戳最接近tT的那個記錄;增量恢復(fù)算法基本思路:設(shè)數(shù)據(jù)保護初始時刻為t0,指定目標(biāo)恢復(fù)時間點為tT,當(dāng)前時刻tc,先查找出tT時刻到tc時刻發(fā)生改變的數(shù)據(jù)扇區(qū),再查找這些扇區(qū)從t0到tT分支上所有寫操作記錄,最后在相同扇區(qū)號的多個寫操作記錄中,取時間戳最接近tT的那個記錄。對單臺主機,測試恢復(fù)數(shù)據(jù)量分別為10 MB、50 MB、200 MB,對比兩種恢復(fù)模式從BDCPS服務(wù)器獲取數(shù)據(jù)的數(shù)據(jù)恢復(fù)時間,結(jié)果見表3。對多臺主機,測試4臺主機并發(fā)恢復(fù)性能,結(jié)果見表4,以及4臺主機平均恢復(fù)時間和恢復(fù)延遲率,結(jié)果見表5。
表3 單臺主機不同恢復(fù)模式性能對比
表4 多主機不同恢復(fù)模式性能對比
表5 多主機平均恢復(fù)性能及服務(wù)延遲率
由表3可知,增量恢復(fù)快過全量恢復(fù),因為全量恢復(fù)需恢復(fù)整個被保護塊設(shè)備,因此恢復(fù)時間隨恢復(fù)數(shù)據(jù)增加而延長。而增量恢復(fù)只是在當(dāng)前狀態(tài)下往前回滾,與恢復(fù)數(shù)據(jù)量無直接關(guān)系,所以恢復(fù)時間隨恢復(fù)數(shù)據(jù)增加而變化不大。由表4和表5可知,多主機并發(fā)恢復(fù)比單主機恢復(fù)時間稍長,主要是BDCPS服務(wù)器并發(fā)檢索各主機數(shù)據(jù)需更多讀磁盤開銷,并需占用較多CPU資源,而每個主機獲得的CPU時間片少了,對恢復(fù)時間也有一定影響。定義每次并發(fā)恢復(fù)中最慢和最快的時間差占整個恢復(fù)時間的比率為服務(wù)延遲率,由表5還可知,服務(wù)延遲率都低于50%,并隨恢復(fù)數(shù)據(jù)增加,偶然因素的影響相對變小,因此延遲率進一步減小。
本文面向大型計算機集群業(yè)務(wù)應(yīng)用,針對現(xiàn)有數(shù)據(jù)存儲方案面臨的問題,設(shè)計一套大數(shù)據(jù)持續(xù)保護系統(tǒng),通過簡單增加一套多功能一體化設(shè)備,不改變現(xiàn)有方案硬件結(jié)構(gòu),就實現(xiàn)對數(shù)據(jù)定時備份、持續(xù)數(shù)據(jù)保護、查詢統(tǒng)計,具有如下優(yōu)勢:
1) 能把任何造成數(shù)據(jù)損壞的問題得到妥善解決,對硬件故障、誤操作造成的邏輯錯誤、單個文件丟失、站點級災(zāi)難皆有完備保護能力,并將數(shù)據(jù)定時備份,使其堅如磐石;
2) 無須人工關(guān)注數(shù)據(jù)保護過程,自動實現(xiàn)數(shù)據(jù)保護,持續(xù)捕捉和跟蹤數(shù)據(jù)發(fā)生的任何改變,能將數(shù)據(jù)恢復(fù)到任意時間點,RPO[9]可接近0,RTO可達秒級,幾乎沒有數(shù)據(jù)丟失,災(zāi)難發(fā)生后數(shù)據(jù)恢復(fù)無需中斷業(yè)務(wù);
3) 集成查詢統(tǒng)計功能,通過影子副本將數(shù)據(jù)掛載到前端查詢、統(tǒng)計服務(wù)器,大大提高查詢檢索效率,且對業(yè)務(wù)應(yīng)用主存儲不帶來性能上損耗,查詢時無需中斷數(shù)據(jù)保護操作;
4) 遷移集群中部分非核心數(shù)據(jù),釋放現(xiàn)有存儲資源,減輕服務(wù)器壓力,提升其運行速度,并使用SSD緩存加速存儲,構(gòu)建靈活緩存,加速讀寫數(shù)據(jù),提高集群的數(shù)據(jù)存儲讀寫速度。