章栩誠
(浙江紹興文理學院 元培學院,紹興 312000)
隨著信息化建設的發展以及各行業信息化應用的逐漸成熟,圍繞信息化應用產生的各種技術也越來越多,其中涉及數據安全、備份和恢復領域的技術成為炙手可熱的話題。在各種業務系統中,數據的地位越來越高,數據的丟失往往給個人和公司及單位帶來不可估量的損失,數據安全性和可用性變的尤為重要。
數據備份是為數據提供安全保障的重要手段,傳統的數據備份的工作原理:在數據發生故障前備份數據,等到數據發生故障再將備份數據還原到某一時間點。
從備份時間上分類,備份有離線備份和在線備份;從備份策略選擇上分類,備份有完全備份,增量備份、差異備份、累加備份。
本文中描述的磁盤數據在線無縫備份系統具有如下三大特點:
1)本備份系統屬于在線備份,備份是實時進行的,即當原始數據有任何改動,備份數據實時做同步變動。本備份系統的實時備份和原始數據正常提供業務支持可以同時進行,并能嚴格保持數據原始數據和備用數據的一致性。
2)本備份系統中設置有限速功能,依托此功能,實時監測當前系統的IO壓力,設定遷移速度,盡可能減少備份對原始數據響應業務的能力,使得原始數據支持的業務系統能夠正常運作,用戶不會明顯感覺到數據備份系統對原始數據響應業務請求的速度。
3)本備份系統與原始備份系統最重要的區別在于數據恢復上。原始的備份系統采取的策略是:在原始數據發生故障時,用備份數據將數據恢復到某一個時間點,采用持續數據保護技術的系統也可以將數據恢復到任意時間點。這些備份系統的恢復都必須占用一段時間的數據恢復窗口。而本系統當監測到原始數據發生故障時,完全不需要恢復窗口,即原始數據發生故障時,備份數據能立刻響應業務請求。本系統只所以能夠實現0時間恢復窗口,是由于采用了重定向數據流到備份數據的方式替代了原始的恢復數據的方式。這種特性對中斷業務響應敏感的部門顯得尤為重要。
本系統采用模塊化設計思想分為四個模塊:信息中轉模塊,數據備份模塊,限速控制模塊,系統管理模塊。
信息中轉模塊的主要部分是監控其他各模塊網絡接口的守護進程。信息中轉模塊負責本系統中各模塊的信息交換,包括實時監測原始數據的存儲狀況,監測原始數據的大小和變動情況,查詢備份數據所在磁盤的剩余空間,接受限速控制模塊查詢的原始數據服務業務請求的壓力大小,并將需要設置的新速率參數傳遞給限速控制模塊。信息中轉模塊的功能還包括將其他各個模塊中的重要參數傳遞給管理模塊,并返回管理模塊下達的各種指令。概括地說,信息中轉模塊就好比一個信息中轉站,負責其他三個模塊之間的信息傳遞。信息中轉模塊和其他模塊的關系如圖1所示。

圖1 模塊關系示意圖
數據備份模塊是整個備份系統的核心模塊,數據備份模塊主要包括四個功能:
1)負責數據實時備份,構造數據備份需要的IO請求,將構造的IO請求模擬成普通的IO請求發送給操作系統做統一處理。在系統剛剛部署,原始數據大部分還沒有和備用設備上的備用數據同步前,這是的數據備份需要準確記錄備份過的數據和目前備份進程中的位置。
2)數據備份模塊負責原始數據和備用數據的一致性。為了達到一致,在模塊中巧妙地應用了截獲系統IO請求,按IO請求類型做分類處理的方式。在本模塊中構造一個字符設備,截獲系統的全部IO請求,當原始數據可用時,如果為讀請求,直接講讀請求原因下發給原始數據所在的存儲盤,如果為寫請求,需要克隆IO請求,原來的寫請求變為兩個IO請求,其中一個原樣下發給原始數據所在的存儲盤,另一個重定向到備份數據所在的存儲設備;當原始數據發生數據不可用時,將截獲的所有IO請求(不論讀寫)全部重定向到備份數據所在的存儲盤。
3)調節備份的速度。為了不過多影響原始數據對業務響應的速度,需要依據速度控制模塊發送過來的速度指標調節備份的速度,在這里,速度控制模塊相當于指揮者,備份模塊相當于實施者,兩者緊密合作使得用戶幾乎感覺不到備份的存在。調節備份速度的功能在系統部署初期和業務請求密集度高的時候至關重要。
4)虛擬化存儲磁盤。所謂虛擬存儲,就是把多個存儲介質模塊(如硬盤、RAID)通過一定的手段集中管理起來,所有的存儲模塊在一個存儲池(Storage Pool)中得到統一管理,從主機和工作站的角度,看到就不是多個硬盤,而是一個分區或者卷,就好象是一個超大容量(如1T以上)的硬盤。這種可以將多種、多個存儲設備統一管理起來,為使用者提供大容量、高數據傳輸性能的存儲系統,就稱之為虛擬存儲。這里所說的虛擬化存儲磁盤的主要功能是借助虛擬化技術,避免用戶直接使用機器的物理的磁盤,而是使用虛擬化層提供的虛擬化磁盤,為數據備份及恢復過程的無縫實施提供虛擬存儲層的支持。為原始數據所在的每塊物理磁盤虛擬一個虛擬盤,并在虛擬盤和物理磁盤之間確立對應關系。當原始數據發送故障時,所有的讀寫IO請求都重定向到備份數據所在的存儲設備,使得備份系統無縫滿足業務響應。實現無縫的前提必須是:即使源數據所在的設備發送故障,用戶看到的卻是完好的,否則業務無法下發請求。這里就用到了虛擬化存儲磁盤的技術,在真正的物理磁盤上面添加虛擬的磁盤設備,真正的物理磁盤對用戶隱形,只有虛擬磁盤對用戶可見。所有的IO請求都是首先下發到虛擬磁盤設備,再決定虛擬磁盤設備接收到IO請求時發送到源數據所在的磁盤還是備份數據所在的磁盤。這種使用虛擬磁盤的方式讓無縫備份讓用戶透明。
在系統實現上關于處理截獲的IO請求的核心函數如下:
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)檢測源數據所在存儲設備和備份數據所在存儲設備的狀態。將檢測到的狀態通過消息中轉模塊發送到備份模塊,備份模塊依據此信息決定截獲到的IO請求該如果處理。
2)監控業務對虛擬磁盤下發的IO請求密集度和備份模塊構造的IO請求密集度。由這兩個密度值查找預設的速度控制查找表,將找到的速度控制參數通過消息中轉模塊發送到備份模塊,備份模塊據此實時挑戰備份的速度。速度控制查找表相當于無縫備份系統中的速度控制策略庫,查找表的各項預設參數值可以形成各種速度控制策略。
系統管理模塊在整個系統中充當備份系統管理員與備份系統交互的窗口。系統管理是以web界面的形式呈現給用戶的,系統管理模塊從其他幾個模塊中收集系統狀態信息供用戶查看,包括備份進度,備份速率,虛擬磁盤列表,物理磁盤列表,虛擬磁盤與物理磁盤的映射關系,源數據所在磁盤的狀態,備份數據所在磁盤的狀態。管理員對系統的管理就是通過系統管理模塊給備份系統下達各種命令。例如管理員認為當前速率控制參數設置的不合適,可以通過速率控制參數配置界面重新設置速度控制查找表中的參數值。設置完成后,點擊確定,新設置的參數值通過信息中轉模塊發送給限速控制模塊,限速控制模塊依據消息中的值更新速度控制查找表。
檢測服務器上為何種類型的操作系統,對比安裝說明書,確保服務器上的操作系統與在線無縫備份系統兼容,配置web服務,發布web網頁,用安裝腳本加載消息中轉模塊,數據備份模塊,限速控制模塊即可使用。
加載完成后,系統掃描服務器上所有可用的物理磁盤,和磁盤狀態信息,并將這些信息保存到系統加載時生成的配置文件中。管理員在web界面上依據這些信息指定那些物理磁盤用來存放源數據,那些物理磁盤用來存放備份數據。配置完成后系統已經管理員的配置信息自動生成普通業務程序可見的虛擬磁盤,虛擬磁盤自動和物理磁盤建立好映射關系。如果系統管理員不重新配置滿足自己特定需求的遷移速率,那么系統將采用默認的遷移速率參數值。自此磁盤數據在線無縫備份系統可以正常使用了。
本系統基于無縫的特點將在業務中斷敏感的存儲領域發揮不可替代的作用,讓業務在源數據存儲磁盤損壞的情況下一樣正常運行,在保證數據安全性的同時大大增加了數據的可用性。