章栩誠
(浙江紹興文理學(xué)院 元培學(xué)院,紹興 312000)
隨著信息化建設(shè)的發(fā)展以及各行業(yè)信息化應(yīng)用的逐漸成熟,圍繞信息化應(yīng)用產(chǎn)生的各種技術(shù)也越來越多,其中涉及數(shù)據(jù)安全、備份和恢復(fù)領(lǐng)域的技術(shù)成為炙手可熱的話題。在各種業(yè)務(wù)系統(tǒng)中,數(shù)據(jù)的地位越來越高,數(shù)據(jù)的丟失往往給個人和公司及單位帶來不可估量的損失,數(shù)據(jù)安全性和可用性變的尤為重要。
數(shù)據(jù)備份是為數(shù)據(jù)提供安全保障的重要手段,傳統(tǒng)的數(shù)據(jù)備份的工作原理:在數(shù)據(jù)發(fā)生故障前備份數(shù)據(jù),等到數(shù)據(jù)發(fā)生故障再將備份數(shù)據(jù)還原到某一時間點。
從備份時間上分類,備份有離線備份和在線備份;從備份策略選擇上分類,備份有完全備份,增量備份、差異備份、累加備份。
本文中描述的磁盤數(shù)據(jù)在線無縫備份系統(tǒng)具有如下三大特點:
1)本備份系統(tǒng)屬于在線備份,備份是實時進(jìn)行的,即當(dāng)原始數(shù)據(jù)有任何改動,備份數(shù)據(jù)實時做同步變動。本備份系統(tǒng)的實時備份和原始數(shù)據(jù)正常提供業(yè)務(wù)支持可以同時進(jìn)行,并能嚴(yán)格保持?jǐn)?shù)據(jù)原始數(shù)據(jù)和備用數(shù)據(jù)的一致性。
2)本備份系統(tǒng)中設(shè)置有限速功能,依托此功能,實時監(jiān)測當(dāng)前系統(tǒng)的IO壓力,設(shè)定遷移速度,盡可能減少備份對原始數(shù)據(jù)響應(yīng)業(yè)務(wù)的能力,使得原始數(shù)據(jù)支持的業(yè)務(wù)系統(tǒng)能夠正常運作,用戶不會明顯感覺到數(shù)據(jù)備份系統(tǒng)對原始數(shù)據(jù)響應(yīng)業(yè)務(wù)請求的速度。
3)本備份系統(tǒng)與原始備份系統(tǒng)最重要的區(qū)別在于數(shù)據(jù)恢復(fù)上。原始的備份系統(tǒng)采取的策略是:在原始數(shù)據(jù)發(fā)生故障時,用備份數(shù)據(jù)將數(shù)據(jù)恢復(fù)到某一個時間點,采用持續(xù)數(shù)據(jù)保護技術(shù)的系統(tǒng)也可以將數(shù)據(jù)恢復(fù)到任意時間點。這些備份系統(tǒng)的恢復(fù)都必須占用一段時間的數(shù)據(jù)恢復(fù)窗口。而本系統(tǒng)當(dāng)監(jiān)測到原始數(shù)據(jù)發(fā)生故障時,完全不需要恢復(fù)窗口,即原始數(shù)據(jù)發(fā)生故障時,備份數(shù)據(jù)能立刻響應(yīng)業(yè)務(wù)請求。本系統(tǒng)只所以能夠?qū)崿F(xiàn)0時間恢復(fù)窗口,是由于采用了重定向數(shù)據(jù)流到備份數(shù)據(jù)的方式替代了原始的恢復(fù)數(shù)據(jù)的方式。這種特性對中斷業(yè)務(wù)響應(yīng)敏感的部門顯得尤為重要。
本系統(tǒng)采用模塊化設(shè)計思想分為四個模塊:信息中轉(zhuǎn)模塊,數(shù)據(jù)備份模塊,限速控制模塊,系統(tǒng)管理模塊。
信息中轉(zhuǎn)模塊的主要部分是監(jiān)控其他各模塊網(wǎng)絡(luò)接口的守護進(jìn)程。信息中轉(zhuǎn)模塊負(fù)責(zé)本系統(tǒng)中各模塊的信息交換,包括實時監(jiān)測原始數(shù)據(jù)的存儲狀況,監(jiān)測原始數(shù)據(jù)的大小和變動情況,查詢備份數(shù)據(jù)所在磁盤的剩余空間,接受限速控制模塊查詢的原始數(shù)據(jù)服務(wù)業(yè)務(wù)請求的壓力大小,并將需要設(shè)置的新速率參數(shù)傳遞給限速控制模塊。信息中轉(zhuǎn)模塊的功能還包括將其他各個模塊中的重要參數(shù)傳遞給管理模塊,并返回管理模塊下達(dá)的各種指令。概括地說,信息中轉(zhuǎn)模塊就好比一個信息中轉(zhuǎn)站,負(fù)責(zé)其他三個模塊之間的信息傳遞。信息中轉(zhuǎn)模塊和其他模塊的關(guān)系如圖1所示。
圖1 模塊關(guān)系示意圖
數(shù)據(jù)備份模塊是整個備份系統(tǒng)的核心模塊,數(shù)據(jù)備份模塊主要包括四個功能:
1)負(fù)責(zé)數(shù)據(jù)實時備份,構(gòu)造數(shù)據(jù)備份需要的IO請求,將構(gòu)造的IO請求模擬成普通的IO請求發(fā)送給操作系統(tǒng)做統(tǒng)一處理。在系統(tǒng)剛剛部署,原始數(shù)據(jù)大部分還沒有和備用設(shè)備上的備用數(shù)據(jù)同步前,這是的數(shù)據(jù)備份需要準(zhǔn)確記錄備份過的數(shù)據(jù)和目前備份進(jìn)程中的位置。
2)數(shù)據(jù)備份模塊負(fù)責(zé)原始數(shù)據(jù)和備用數(shù)據(jù)的一致性。為了達(dá)到一致,在模塊中巧妙地應(yīng)用了截獲系統(tǒng)IO請求,按IO請求類型做分類處理的方式。在本模塊中構(gòu)造一個字符設(shè)備,截獲系統(tǒng)的全部IO請求,當(dāng)原始數(shù)據(jù)可用時,如果為讀請求,直接講讀請求原因下發(fā)給原始數(shù)據(jù)所在的存儲盤,如果為寫請求,需要克隆IO請求,原來的寫請求變?yōu)閮蓚€IO請求,其中一個原樣下發(fā)給原始數(shù)據(jù)所在的存儲盤,另一個重定向到備份數(shù)據(jù)所在的存儲設(shè)備;當(dāng)原始數(shù)據(jù)發(fā)生數(shù)據(jù)不可用時,將截獲的所有IO請求(不論讀寫)全部重定向到備份數(shù)據(jù)所在的存儲盤。
3)調(diào)節(jié)備份的速度。為了不過多影響原始數(shù)據(jù)對業(yè)務(wù)響應(yīng)的速度,需要依據(jù)速度控制模塊發(fā)送過來的速度指標(biāo)調(diào)節(jié)備份的速度,在這里,速度控制模塊相當(dāng)于指揮者,備份模塊相當(dāng)于實施者,兩者緊密合作使得用戶幾乎感覺不到備份的存在。調(diào)節(jié)備份速度的功能在系統(tǒng)部署初期和業(yè)務(wù)請求密集度高的時候至關(guān)重要。
4)虛擬化存儲磁盤。所謂虛擬存儲,就是把多個存儲介質(zhì)模塊(如硬盤、RAID)通過一定的手段集中管理起來,所有的存儲模塊在一個存儲池(Storage Pool)中得到統(tǒng)一管理,從主機和工作站的角度,看到就不是多個硬盤,而是一個分區(qū)或者卷,就好象是一個超大容量(如1T以上)的硬盤。這種可以將多種、多個存儲設(shè)備統(tǒng)一管理起來,為使用者提供大容量、高數(shù)據(jù)傳輸性能的存儲系統(tǒng),就稱之為虛擬存儲。這里所說的虛擬化存儲磁盤的主要功能是借助虛擬化技術(shù),避免用戶直接使用機器的物理的磁盤,而是使用虛擬化層提供的虛擬化磁盤,為數(shù)據(jù)備份及恢復(fù)過程的無縫實施提供虛擬存儲層的支持。為原始數(shù)據(jù)所在的每塊物理磁盤虛擬一個虛擬盤,并在虛擬盤和物理磁盤之間確立對應(yīng)關(guān)系。當(dāng)原始數(shù)據(jù)發(fā)送故障時,所有的讀寫IO請求都重定向到備份數(shù)據(jù)所在的存儲設(shè)備,使得備份系統(tǒng)無縫滿足業(yè)務(wù)響應(yīng)。實現(xiàn)無縫的前提必須是:即使源數(shù)據(jù)所在的設(shè)備發(fā)送故障,用戶看到的卻是完好的,否則業(yè)務(wù)無法下發(fā)請求。這里就用到了虛擬化存儲磁盤的技術(shù),在真正的物理磁盤上面添加虛擬的磁盤設(shè)備,真正的物理磁盤對用戶隱形,只有虛擬磁盤對用戶可見。所有的IO請求都是首先下發(fā)到虛擬磁盤設(shè)備,再決定虛擬磁盤設(shè)備接收到IO請求時發(fā)送到源數(shù)據(jù)所在的磁盤還是備份數(shù)據(jù)所在的磁盤。這種使用虛擬磁盤的方式讓無縫備份讓用戶透明。
在系統(tǒng)實現(xiàn)上關(guān)于處理截獲的IO請求的核心函數(shù)如下:
static int hook_make_request_fn(request_queue_t *q, struct bio *bio)
{
int i;
struct bio *b ;
if(bio_data_dir(bio)==READ) //對讀請求的處理
{hook_info_multiThread[i].ori_make_request_fn_src(q, bio);
}
else if(bio_data_dir(bio)==WRITE) //對寫請求的處理
{
b=bio_clone(bio, GFP_NOIO);
hook_info_multiThread[i].ori_make_request_fn_src(q,bio);
b->bi_bdev = hook_info_multiThread[i].inode_dest->i_bdev;
generic_make_request(b);
}
else{
printk("detected a invalid bio ");
}
return 0;
}
限速控制模塊主要包含兩項功能:
1)檢測源數(shù)據(jù)所在存儲設(shè)備和備份數(shù)據(jù)所在存儲設(shè)備的狀態(tài)。將檢測到的狀態(tài)通過消息中轉(zhuǎn)模塊發(fā)送到備份模塊,備份模塊依據(jù)此信息決定截獲到的IO請求該如果處理。
2)監(jiān)控業(yè)務(wù)對虛擬磁盤下發(fā)的IO請求密集度和備份模塊構(gòu)造的IO請求密集度。由這兩個密度值查找預(yù)設(shè)的速度控制查找表,將找到的速度控制參數(shù)通過消息中轉(zhuǎn)模塊發(fā)送到備份模塊,備份模塊據(jù)此實時挑戰(zhàn)備份的速度。速度控制查找表相當(dāng)于無縫備份系統(tǒng)中的速度控制策略庫,查找表的各項預(yù)設(shè)參數(shù)值可以形成各種速度控制策略。
系統(tǒng)管理模塊在整個系統(tǒng)中充當(dāng)備份系統(tǒng)管理員與備份系統(tǒng)交互的窗口。系統(tǒng)管理是以web界面的形式呈現(xiàn)給用戶的,系統(tǒng)管理模塊從其他幾個模塊中收集系統(tǒng)狀態(tài)信息供用戶查看,包括備份進(jìn)度,備份速率,虛擬磁盤列表,物理磁盤列表,虛擬磁盤與物理磁盤的映射關(guān)系,源數(shù)據(jù)所在磁盤的狀態(tài),備份數(shù)據(jù)所在磁盤的狀態(tài)。管理員對系統(tǒng)的管理就是通過系統(tǒng)管理模塊給備份系統(tǒng)下達(dá)各種命令。例如管理員認(rèn)為當(dāng)前速率控制參數(shù)設(shè)置的不合適,可以通過速率控制參數(shù)配置界面重新設(shè)置速度控制查找表中的參數(shù)值。設(shè)置完成后,點擊確定,新設(shè)置的參數(shù)值通過信息中轉(zhuǎn)模塊發(fā)送給限速控制模塊,限速控制模塊依據(jù)消息中的值更新速度控制查找表。
檢測服務(wù)器上為何種類型的操作系統(tǒng),對比安裝說明書,確保服務(wù)器上的操作系統(tǒng)與在線無縫備份系統(tǒng)兼容,配置web服務(wù),發(fā)布web網(wǎng)頁,用安裝腳本加載消息中轉(zhuǎn)模塊,數(shù)據(jù)備份模塊,限速控制模塊即可使用。
加載完成后,系統(tǒng)掃描服務(wù)器上所有可用的物理磁盤,和磁盤狀態(tài)信息,并將這些信息保存到系統(tǒng)加載時生成的配置文件中。管理員在web界面上依據(jù)這些信息指定那些物理磁盤用來存放源數(shù)據(jù),那些物理磁盤用來存放備份數(shù)據(jù)。配置完成后系統(tǒng)已經(jīng)管理員的配置信息自動生成普通業(yè)務(wù)程序可見的虛擬磁盤,虛擬磁盤自動和物理磁盤建立好映射關(guān)系。如果系統(tǒng)管理員不重新配置滿足自己特定需求的遷移速率,那么系統(tǒng)將采用默認(rèn)的遷移速率參數(shù)值。自此磁盤數(shù)據(jù)在線無縫備份系統(tǒng)可以正常使用了。
本系統(tǒng)基于無縫的特點將在業(yè)務(wù)中斷敏感的存儲領(lǐng)域發(fā)揮不可替代的作用,讓業(yè)務(wù)在源數(shù)據(jù)存儲磁盤損壞的情況下一樣正常運行,在保證數(shù)據(jù)安全性的同時大大增加了數(shù)據(jù)的可用性。