曾 發,麻雨欣2,曾貴明,梁 君,榮 剛
(1.中國運載火箭技術研究院 研發中心,北京 100076; 2.航天材料及工藝研究所,北京 100076)
根據IDC(internet data center)的調查,在2000年以前的十年間發生過數據災難的公司中,有55%的公司當即倒閉,剩下的45%中,也因數據丟失,有29%在兩年內倒閉,生存下來的僅占16%[1-2]。地震、火災等不可抗因素,硬盤劃傷、網絡故障、硬件損壞等硬件故障,Bug、內存溢出、崩潰等軟件故障,誤操作、誤刪除、惡意攻擊等人為因素[3-4],都將造成數據故障或丟失且不可避免,軟硬件越多,應用越多,發生概率越大,損失越大。在此現實下,2010年前,有80%的大企業已采取數據存儲持續保護設備[5-7]。由此可知數據存儲對企業的重要。
目前軍工型號產品在線協同設計、數字化制造的應用不斷擴大和深入,各分系統和單機單位間業務協同越來越多,由此帶來軍工集團的計算機集群規模越來越大,業務應用數據越來越大,數據故障或丟失對業務應用系統損失越來越大,對數據存儲持續保護、容災安全、讀寫速度的要求越來越高,急需對現有存儲系統進行升級或開發新型存儲方案。
現在某軍工集團下轄十余個廠所,計算機集群中有上萬個客戶端、幾百臺數據庫服務器和應用服務器集群,數據達PB量級,其數據存儲方案采用將所有服務器通過FC(Fibre Channel)光纖交換機與SAN(Storage Area Network)統一存儲相連,對外提供服務,其總體方案如圖1所示。

圖1 現有存儲方案
所有數據庫服務器和應用服務器均配置以太網卡和光纖HBA(Host Bus Adapter)卡,以太網卡接入以太網絡,為前端用戶提供服務,光纖HBA卡通過FC光纖通道交換機與后端SAN統一存儲相連,所有數據均存放在后端統一存儲中。
存儲系統為基于FC光纖通道的SAN統一存儲,所有數據均存放在同一臺存儲系統中,嚴重拖慢存儲系統性能,并進一步影響到前端業務系統。大量非核心數據占用大量存儲空間,消耗大量存儲系統性能,存儲系統無法為前端業務系統提供足夠存儲空間和存儲性能;加上利用數據庫自身功能備份數據對存儲資源的消耗,無法為前端業務系統提供足夠I/O支撐保障。存儲系統未對數據保護,業務系統發生損壞、數據丟失、數據邏輯錯誤等問題,都將給業務系統帶來極大影響,甚至整個系統崩潰。目前,其廠所級應用系統癱瘓頻率已達到每月數次,故障修復長達數小時甚至一天,期間很多工作只能中斷,給集團業務帶來極大損失。
針對現有存儲方案存在問題和未來大數據業務應用需求,本文面向大型計算機集群業務應用,充分利用現有存儲設備,增加一套備份存儲硬件,設計一套數據塊級的大數據持續保護系統(Big Data Continuous Protection System,簡稱BDCPS),在不影響前端應用前提下,捕獲、跟蹤數據變化,進行實時備份并能恢復到此前任意時間點,實現數據保護,防止數據發生損壞或丟失,并剝離出部分非核心數據到新存儲平臺,以減輕業務系統存儲壓力,釋放存儲資源,保障前端應用高效運行,其總體方案如圖2所示,由圖可見系統配置簡單、結構清晰,各服務器、現有SAN存儲系統、BDCPS均接入機房LAN(Local Area Network)網絡與SAN網絡中。

圖2 BDCPS總體方案
BDCPS同時支持Unix、Linux和Windows平臺,通過部署其中的模塊,為整個計算機集群中的操作系統、數據庫、正運行關鍵業務的服務器提供快速、可靠、完全的數據備份和恢復服務。系統保護業務數據同時持續保護數據庫服務器數據,保證備份數據與業務應用主機數據完全一致,當業務應用出現故障,通過數據掛載恢復業務。系統定時將非核心業務應用數據備份至備份存儲設備中,保證重要數據丟失或損壞后能及時恢復數據。新增存儲存放非核心數據,并承載一些測試、統計、數據分析,避免所有工作都由業務系統主存儲負載。根據上述功能需求,將BDCPS劃分為數據定時備份、持續數據保護和數據查詢統計三個主要功能模塊。
BDCPS內部組成結構見圖3,其中:文件數據捕獲、跟蹤子模塊負責截獲業務應用層或文件層傳輸過來的寫操作及修改信息,再把截獲的信息傳遞給標記子模塊;磁盤塊數據捕獲、跟蹤子模塊負責截獲物理磁盤層上數據塊的寫操作及修改信息,再把截獲的信息傳遞給標記子模塊;標記子模塊包括應用標記和事件標記,前者標記此次截獲的信息屬于哪個文件以及屬于哪個被保護的應用,后者使用事件對數據進行劃分并將事件流與應用標記之后的數據合并,標記后的數據傳遞給緩存區;緩存區子模塊緩存業務系統主機應用層數據或內核層數據,保證截獲的數據傳遞到BDCPS服務器前不會丟失;網絡子模塊采用SAN網絡雙冗余數據傳輸,能夠處理網絡故障和數據重發,其數據遷移器組件快速高效將數據傳輸到BDCPS服務器的緩存區;I/O切換子模塊,用于發生故障時,實現存儲切換,將業務系統主機磁盤讀寫重定向到虛擬磁盤,即通過網絡向BDCPS服務器讀寫數據,直到業務系統主機數據恢復完成,虛擬卷中數據與磁盤數據完全同步,I/O切換為原來的狀態;多級緩存子模塊,BDCPS服務器采用大容量內存和SSD(Solid State Drives)固態硬盤相結合的多級緩存方式以滿足大量業務系統主機數據緩存;存儲子模塊,用于數據存儲、管理、查詢、統計等以及存儲池中物理磁盤管理,并對冗余數據進行去重刪除,減少數據存儲所需空間;存儲池,數據存儲的物理磁盤,用于業務系統主機數據備份存儲,包括定時備份和持續保護實時備份,并形成影子副本(Shadow Copy);遠程備份子模塊,將數據定時或實時備份到異地的BDCPS服務器,可根據需要部署,本文沒有進行遠程備份。文件數據捕獲、跟蹤子模塊和磁盤塊數據捕獲、跟蹤子模塊是BDCPS的關鍵子模塊,提供業務系統主機中的數據變化部分,下文提到的數據分流器組件即屬于這兩個子模塊,這兩個子模塊與標記子模塊組合,根據不同數據恢復算法,形成快照模塊,獲得被保護數據的一致性快照,并以虛擬磁帶庫形式存儲于BDCPS服務器,發生故障時,其邏輯卷通過網絡子模塊,直接掛載到業務系統主機上的虛擬磁盤。

圖3 BDCPS內部組成結構
數據定時備份、持續數據保護和數據查詢統計三個主要功能模塊,則由上述子模塊的不同組合來實現,其部署設置和工作機理見下文詳述。
根據部署位置劃分,BDCPS分為BDCPS代理和BDCPS服務器兩大部分。BDCPS代理部署在需保護的業務系統服務器上,實時監控服務器上所存數據變化,并把監控信息、標記信息發送給BDCPS服務器存儲起來。當故障發生時,BDCPS代理負責存儲切換和數據恢復。BDCPS服務器主要用來存儲數據,并隨時準備提供一個完整的數據版本給BDCPS代理使用。
BDCPS將每個磁盤即邏輯單位劃分為固定大小的數據塊,根據數據保護的恢復粒度大小,數據塊大小可以設置為4 KB、8 KB、16 KB、32 KB、64 KB,并以數據塊為單位記錄磁盤中的數據變化,塊大小設置越小,數據恢復的粒度越小,但相應塊數量越多,需讀寫的塊總數越多,效率降低。BDCPS自動將業務系統主機中磁盤更改過的所有數據按時間順序保存下來,每次寫操作都會生成帶有時間戳的數據塊版本,并形成I/O記錄,在業務系統主機恢復數據時,能夠獲取任意一個時間的數據狀態。
BDCPS采用虛擬化技術統一管理物理磁盤陣列,將其虛擬化成邏輯存儲池,根據制定的存儲池配置方案來對存儲池進行劃分,形成一塊塊指定大小的邏輯卷,以便統一管理分配,更大化地利用存儲空間。
為保證系統數據安全,對各重要和核心業務應用服務器都進行數據備份,按如下步驟設置:不改變現有方案結構,將BDCPS接入LAN網絡與SAN網絡中;在需備份服務器中安裝相應系統版本的代理模塊;備份數據通過虛擬磁帶庫存儲至BDCPS中。
部署完BDCPS后,設定備份策略自動完成備份任務,其工作流程如下:定時備份模塊根據備份策略,向各備份源發送備份任務,備份源上的相應代理接到任務后,抓取備份數據,移交到數據遷移器,遷移器將數據通過SAN網絡以虛擬磁帶方式保存至BDCPS自身存儲磁盤中。當備份源數據損壞時,可通過BDCPS選擇已備份的任意時間點進行恢復。

圖4 數據定時備份結構
對于現有數據庫服務器和應用服務器集群中前期存儲的部分非核心數據,數據遷移備份到BDCPS自身存儲磁盤后,即根據策略刪除現有服務器集群中的原數據,以釋放現有業務系統的存儲資源,可以在不停止現有業務處理的情況下,有效增加用于處理核心業務數據的存儲資源,減輕服務器存儲壓力,提升其運行速度,重新恢復前端應用的高效運行,需要使用這些數據時,再從BDCPS中遷回業務系統服務器。
對集群中各在線業務應用服務器及數據庫服務器進行持續數據保護,通過以下方式實現:不改變現有方案結構,將BDCPS接入LAN網絡與SAN網絡中,激活持續數據保護模塊、快照模塊;在需持續數據保護的服務器中安裝持續數據保護數據分流器,通過持續數據保護模塊實現核心業務的持續數據保護功能;持續數據保護的數據存儲于BDCPS自身存儲磁盤中。
如圖5所示,BDCPS部署完成后,系統自動將需保護服務器進行有效持續數據保護,在數據寫入被保護服務器自身存儲設備同時,寫入BDCPS中,保證BDCPS連接中的數據與被保護數據完全一致,并生成每個I/O記錄點和一致性快照。利用快照功能,可進行連續的或基于時間點的快照工作,當被保護服務器發生邏輯錯誤時,快速有效掛載快照點,避免邏輯錯誤造成數據損壞。

圖5 數據持續保護結構
BDCPS針對大型計算機集群業務應用中大數據、高并發特點,數據持續保護特點, 采用大容量高速緩存和SSD 多級緩存架構提高寫入性能, 利用多核處理器技術和并行隊列處理算法, 提高數據持續保護的速度,降低其對業務系統存儲性能的影響。
數據查詢統計主要基于BDCPS內置的影子副本掛載功能實現,利用影子副本即時掛載技術,可不停止數據持續保護,直接將多個歷史數據狀態點瞬間掛載到不同主機或虛擬機,與BDCPS磁盤組同時讀寫訪問、分別回滾,其工作方式見圖6。

圖6 數據查詢統計結構
影子副本可極大改善數據持續保護的易用性,包括災備演練、恢復、測試和數據統計、分析、再利用體驗,并簡化操作步驟,相當于將不同時間點的快照數據,虛擬生成若干個磁盤組,以方便查詢最符合要求的數據用于恢復。當不需要這些數據掛載點時,可隨時刪除,不影響原有數據持續保護任務保護的數據。影子卷產生的增量變化數據不被保留,占用磁盤空間將釋放回存儲池。
若選擇將數據持續保護卷組先進行設備上或設備間的復制,當副本數據獨立存放于單獨RAID 磁盤,此時再使用影子副本功能做讀寫分離或查詢等,適用于高I/O負載的業務,同時保持不停止保護和復制。
為方便測試,本文對系統進行簡化,選用4臺客戶端計算機作為業務系統主機、1臺服務器作為BDCPS服務器,組成測試網絡,分別安裝BDCPS代理、BDCPS服務,主要硬件配置見表1~表2。

表1 業務端硬件配置

表2 BDCPS服務器硬件配置
限于篇幅,本文選取數據持續保護中數據恢復性能這一重要指標作為考核對象,試驗主要測試BDCPS在不同數據量和不同業務主機數從BDCPS服務器獲取數據的數據恢復時間,并設定被保護塊設備大小為16 KB?;謴湍J椒謩e采用全量恢復、增量恢復[8],全量恢復算法基本思路:設數據保護初始時刻為t0,指定目標恢復時間點為tT,找出從t0到tT分支上所有寫操作記錄,最后在相同源地址的多個寫操作記錄中,取時間戳最接近tT的那個記錄;增量恢復算法基本思路:設數據保護初始時刻為t0,指定目標恢復時間點為tT,當前時刻tc,先查找出tT時刻到tc時刻發生改變的數據扇區,再查找這些扇區從t0到tT分支上所有寫操作記錄,最后在相同扇區號的多個寫操作記錄中,取時間戳最接近tT的那個記錄。對單臺主機,測試恢復數據量分別為10 MB、50 MB、200 MB,對比兩種恢復模式從BDCPS服務器獲取數據的數據恢復時間,結果見表3。對多臺主機,測試4臺主機并發恢復性能,結果見表4,以及4臺主機平均恢復時間和恢復延遲率,結果見表5。

表3 單臺主機不同恢復模式性能對比

表4 多主機不同恢復模式性能對比

表5 多主機平均恢復性能及服務延遲率
由表3可知,增量恢復快過全量恢復,因為全量恢復需恢復整個被保護塊設備,因此恢復時間隨恢復數據增加而延長。而增量恢復只是在當前狀態下往前回滾,與恢復數據量無直接關系,所以恢復時間隨恢復數據增加而變化不大。由表4和表5可知,多主機并發恢復比單主機恢復時間稍長,主要是BDCPS服務器并發檢索各主機數據需更多讀磁盤開銷,并需占用較多CPU資源,而每個主機獲得的CPU時間片少了,對恢復時間也有一定影響。定義每次并發恢復中最慢和最快的時間差占整個恢復時間的比率為服務延遲率,由表5還可知,服務延遲率都低于50%,并隨恢復數據增加,偶然因素的影響相對變小,因此延遲率進一步減小。
本文面向大型計算機集群業務應用,針對現有數據存儲方案面臨的問題,設計一套大數據持續保護系統,通過簡單增加一套多功能一體化設備,不改變現有方案硬件結構,就實現對數據定時備份、持續數據保護、查詢統計,具有如下優勢:
1) 能把任何造成數據損壞的問題得到妥善解決,對硬件故障、誤操作造成的邏輯錯誤、單個文件丟失、站點級災難皆有完備保護能力,并將數據定時備份,使其堅如磐石;
2) 無須人工關注數據保護過程,自動實現數據保護,持續捕捉和跟蹤數據發生的任何改變,能將數據恢復到任意時間點,RPO[9]可接近0,RTO可達秒級,幾乎沒有數據丟失,災難發生后數據恢復無需中斷業務;
3) 集成查詢統計功能,通過影子副本將數據掛載到前端查詢、統計服務器,大大提高查詢檢索效率,且對業務應用主存儲不帶來性能上損耗,查詢時無需中斷數據保護操作;
4) 遷移集群中部分非核心數據,釋放現有存儲資源,減輕服務器壓力,提升其運行速度,并使用SSD緩存加速存儲,構建靈活緩存,加速讀寫數據,提高集群的數據存儲讀寫速度。