1.概述
隨著信息化水平的不斷提高,信息數(shù)據(jù)的重要性在當(dāng)今社會日益凸顯。由于信息系統(tǒng)面臨自然災(zāi)害、硬件失效、戰(zhàn)爭等諸多災(zāi)難性的風(fēng)險(xiǎn)和威脅,信息系統(tǒng)的可用性和容災(zāi)能力等問題日益成為人們關(guān)注的焦點(diǎn)。平衡數(shù)據(jù)的可用性、存取的性能以及構(gòu)建和維護(hù)系統(tǒng)的成本是設(shè)計(jì)容災(zāi)系統(tǒng)必須考慮的問題。與此同時,數(shù)據(jù)快照(Snapshot)、持續(xù)數(shù)據(jù)保護(hù)(Continuous Data Protection, CDP)、遠(yuǎn)程鏡像等相關(guān)技術(shù)也得到了廣泛的使用并形成了許多成熟的容災(zāi)產(chǎn)品或相關(guān)開源軟件。但現(xiàn)有的容災(zāi)系統(tǒng)存在如下缺點(diǎn):
(1)當(dāng)對數(shù)據(jù)量巨大的本地端進(jìn)行容災(zāi)保護(hù)時,許多容災(zāi)系統(tǒng)需要將原始數(shù)據(jù)遷移至容災(zāi)系統(tǒng)中,從而造成業(yè)務(wù)的長時間停滯,因此,容災(zāi)系統(tǒng)不能保證在不改變本地端存儲架構(gòu)的前提下對本地端容災(zāi)保護(hù)。雖然利用軟件RAID的鏡像功能與存儲區(qū)域網(wǎng)絡(luò)(Storage Area Network, SAN)結(jié)合可以構(gòu)建遠(yuǎn)程鏡像系統(tǒng)進(jìn)行容災(zāi),并能將數(shù)據(jù)動態(tài)地同步到異地容災(zāi)端,而不會造成業(yè)務(wù)的長時間的停滯,但軟件RAID 在對本地端加鏡像保護(hù)時會將其超級塊信息寫入本地端存儲設(shè)備的末端,從而可能覆蓋本地端存儲設(shè)備中的有用數(shù)據(jù)。類似的還有分布式復(fù)制塊設(shè)備(Distributed Replicated Block Device, DRBD),它同樣可以進(jìn)行動態(tài)構(gòu)建,但是也會將其超級塊信息寫入到本地端存儲設(shè)備。
(2)有的容災(zāi)系統(tǒng)依賴于特定硬件設(shè)備或驅(qū)動。例如:EMC 公司的SRDF 必須構(gòu)建于本公司的Symmetrix 網(wǎng)絡(luò)存儲系統(tǒng)之上;SnapMirror依賴于NetAPP 公司的存儲設(shè)備以及嵌入在設(shè)備底層的WAFL 文件系統(tǒng)。另外,還有許多容災(zāi)系統(tǒng)要求異地容災(zāi)端的存儲設(shè)備必須和本地端的存儲設(shè)備型號一致,因?yàn)椴煌瑥S家的磁盤陣列產(chǎn)品無法直接做數(shù)據(jù)同步。
本文運(yùn)用動態(tài)鏡像加載技術(shù)和基于吸拉式日志的異步數(shù)據(jù)傳輸方法,設(shè)計(jì)一種基于存儲虛擬化的動態(tài)容災(zāi)系統(tǒng)。
2.體系結(jié)構(gòu)
2.1 總體架構(gòu)
動態(tài)容災(zāi)系統(tǒng)由一系列用戶態(tài)程序和內(nèi)核驅(qū)動組成,包括本地端的管理模塊、通信模塊、鏡像模塊以及塊日志處理模塊,異地端的管理模塊、通信模塊、塊日志解析模塊。體系結(jié)構(gòu)如圖1 所示。
圖1 動態(tài)容災(zāi)系統(tǒng)的體系結(jié)構(gòu)
2.2 存儲設(shè)備
由于Linux 操作系統(tǒng)下各種塊設(shè)備驅(qū)動都會向用戶層提供通用塊設(shè)備接口,這一機(jī)制保證了動態(tài)容災(zāi)系統(tǒng)的通用性和靈活性。存儲池表示數(shù)據(jù)存儲容器,是各種異構(gòu)存儲設(shè)備的統(tǒng)稱,如硬盤、盤陣、網(wǎng)絡(luò)虛擬盤,邏輯卷等。本地存儲池是本地服務(wù)器端原始數(shù)據(jù)的存儲載體,異地存儲池是異地容災(zāi)端數(shù)據(jù)的存儲載體,本地存儲池與異地存儲池可以為不同類型的存儲設(shè)備。
鏡像/日志存儲池部署于本地,是用于存儲鏡像同步數(shù)據(jù)以及日志數(shù)據(jù)的塊設(shè)備。它基于存儲虛擬化技術(shù),具體類型(硬盤、邏輯卷或其他塊設(shè)備)可以由用戶指定,通過存儲區(qū)域網(wǎng)絡(luò)映射到異地端,對本地端跟異地端而言,它是公共的存儲空間,其中可以使用各種協(xié)議,如FC、iSCSI等。由于通常情況下對于較遠(yuǎn)距離的異地容災(zāi)而言,網(wǎng)絡(luò)數(shù)據(jù)的傳輸速度遠(yuǎn)不及本地的存儲設(shè)備,因此在容災(zāi)系統(tǒng)中鏡像/日志存儲池可以起到很好的緩沖作用。鏡像/日志存儲池具體空間布局如圖2 所示。
圖2 鏡像/日志存儲池空間布局
它的設(shè)計(jì)借鑒了快照的基本思想,空間分為2 個部分,第1 部分空間為原始數(shù)據(jù)區(qū)(代號為A),它與本地存儲池空間大小相等,用于同步模式下保持與本地存儲池完全一致的數(shù)據(jù)副本,以及開啟異步模式時保存本地存儲池?cái)?shù)據(jù)的快照;第2 部分空間為日志數(shù)據(jù)區(qū)(代號為B)起緩沖作用,用于以日志形式記錄開啟異步模式時上層傳下來的寫操作請求拷貝,也就相當(dāng)于開啟異步模式時生成了快照,B 部分為生成快照后的增量數(shù)據(jù)日志。
2.3 應(yīng)用程序部分
管理模塊和通信模塊都為應(yīng)用程序。本地端的管理模塊負(fù)責(zé)與內(nèi)核模塊以及通信模塊的交互,比如管理設(shè)備,監(jiān)控并報(bào)告設(shè)備狀態(tài)等,而本地端的通信模塊負(fù)責(zé)與異地端的通信模塊的通信,并向異地端的通信模塊傳遞控制信息,接收并向本地端管理模塊報(bào)告從異地端傳來的相關(guān)反饋信息。
異地端的通信模塊負(fù)責(zé)檢查網(wǎng)絡(luò)是否通暢以及監(jiān)聽來自本地端通信模塊的控制信息、狀態(tài)信息以及日志表頭信息并將接收到的信息傳遞給異地端的管理模塊。異地端管理模塊負(fù)責(zé)與異地端的塊日志解析模塊的交互,功能包括設(shè)備管理,監(jiān)控并報(bào)告設(shè)備狀態(tài),向通信模塊反饋相關(guān)信息,獲取日志表頭信息傳予日志解析模塊。通過本地端與異地端的交互同時判斷本地端的服務(wù)器是否異常,當(dāng)本地端服務(wù)器失效時,系統(tǒng)能在較短時間內(nèi)將服務(wù)從本地端切換至異地端,并在異地端啟動與本地端相同的用戶進(jìn)程,保證服務(wù)的不間斷。
2.4 內(nèi)核驅(qū)動部分
鏡像模塊是容災(zāi)系統(tǒng)本地端內(nèi)核驅(qū)動的一部分,負(fù)責(zé)向子設(shè)備接收并轉(zhuǎn)發(fā)從上層傳來的讀寫請求。在同步模式下,鏡像模塊將本地存儲池?cái)?shù)據(jù)同步到鏡像/日志存儲池,維持本地存儲池和鏡像/日志存儲池A 部分的數(shù)據(jù)的完全一致性。在異步模式下,鏡像模塊收到上層應(yīng)用程序傳來的寫請求時,將數(shù)據(jù)寫入本地存儲池的同時通過塊日志處理模塊將數(shù)據(jù)以日志形式寫入鏡像/日志存儲池的B 部分。在僅存在本地存儲池故障的情況下,鏡像模塊還能向上層管理模塊反饋相關(guān)信息,并且結(jié)合塊日志處理模塊分析鏡像/日志存儲池的AB 兩部分來處理上層讀寫請求,從而保證整個系統(tǒng)的正常工作,而無需將服務(wù)遷移到異地端。
塊日志處理模塊是容災(zāi)系統(tǒng)本地端內(nèi)核驅(qū)動的另一部分,負(fù)責(zé)與鏡像模塊交互。在異步模式下,塊日志處理模塊接收從鏡像模塊傳來的寫請求,然后將每個寫請求轉(zhuǎn)為日志,以一定的格式寫于鏡像/日志存儲池的B 部分。塊日志處理模塊還配合鏡像模塊向上層提供鏡像服務(wù),如果遇到僅本地存儲池故障的情況,塊日志處理模塊通過日志的記錄和解析處理上層讀寫請求,而不影響服務(wù)的持續(xù)性。
鏡像/日志存儲池通過存儲區(qū)域網(wǎng)絡(luò)技術(shù)映射到異地端,塊日志解析模塊通過讀取并解析鏡像/日志存儲池的映射盤上的數(shù)據(jù),并將解析結(jié)果發(fā)送給異地存儲池。塊日志的處理是在異步模式下進(jìn)行的,首先塊日志解析模塊會將鏡像/日志存儲池的A 部分的數(shù)據(jù)之間拷貝到異地存儲池,然后再解析鏡像/日志存儲池B 部分的塊日志,由日志還原出寫操作并將其發(fā)送到異地存儲池,從而保證數(shù)據(jù)的嚴(yán)格一致性。
3.關(guān)鍵技術(shù)
本節(jié)將詳細(xì)介紹動態(tài)容災(zāi)系統(tǒng)涉及的2 種關(guān)鍵技術(shù),即動態(tài)鏡像加載技術(shù)和吸拉式日志技術(shù)的具體實(shí)現(xiàn)。
3.1 動態(tài)鏡像加載技術(shù)
動態(tài)容災(zāi)系統(tǒng)的突出特點(diǎn)是能夠在本地服務(wù)器短暫停服務(wù)時進(jìn)行動態(tài)加載容災(zāi)保護(hù),而且不改變本地服務(wù)原有的存儲架構(gòu)。要達(dá)到這一目的,必須保證數(shù)據(jù)拷貝和上層來的數(shù)據(jù)寫請求處理可以同時進(jìn)行,這就用到了動態(tài)鏡像加載技術(shù)。動態(tài)鏡像加載技術(shù)是將包含構(gòu)建容災(zāi)系統(tǒng)的本地子設(shè)備信息的超級塊以文件形式保存于系統(tǒng)盤上,在虛擬塊設(shè)備中的鏡像模塊中使用內(nèi)核多線程來對數(shù)據(jù)進(jìn)行處理。以文件形式保存超級塊就不會破壞本地存儲池上的數(shù)據(jù)。鏡像子模塊的體系結(jié)構(gòu)如圖3 所示。
圖3 鏡像模塊的體系結(jié)構(gòu)
當(dāng)對本地端加載容災(zāi)保護(hù)時,只需要短暫停服務(wù),期間將鏡像模塊插入,然后就可以啟動本地端原來的服務(wù),此時鏡像模塊就會開始工作,進(jìn)行同步。同步過程對上層應(yīng)用而言是透明的。
在同步過程中用到了帶狀態(tài)的位圖機(jī)制來記錄數(shù)據(jù)的非一致性塊。由圖3 可以看出,上層寫請求到來時需要將寫請求拷貝后分發(fā)至2 個子設(shè)備,進(jìn)行同步以及處理上層來寫請求都可以使數(shù)據(jù)一致化,一旦數(shù)據(jù)一致,就對位圖進(jìn)行相應(yīng)的處理。在內(nèi)核態(tài)下需要創(chuàng)建2 個線程,一個為同步線程,另一個為管理線程。同步線程負(fù)責(zé)從本地存儲池讀取數(shù)據(jù),將其轉(zhuǎn)換為寫請求后添加到同步請求鏈表交予管理線程處理。管理線程一方面處理同步請求的提交另一方面處理上層寫請求的提交,并管理位圖。同步過程中有寫請求到來時,大致處理步驟如下:
(1)同步線程從本地存儲池讀取一個數(shù)據(jù)塊,創(chuàng)建同步寫請求,獲取同步請求鏈表的互斥鎖,將該寫請求添加到同步請求鏈表,釋放互斥鎖。
(2)當(dāng)上層寫請求到來時,考慮到可能出現(xiàn)對一個子設(shè)備寫請求提交完成了而另一個寫請求提交未完成造成不一致的情況,所以需要先將位圖對應(yīng)的位進(jìn)行非一致性化處理(這里置為狀態(tài)A),然后將該寫請求復(fù)制并設(shè)置成發(fā)往2個子設(shè)備的寫請求,獲取寫請求處理鏈表的互斥鎖,將2個寫請求添加到寫請求處理鏈表,釋放互斥鎖。
(3)在管理線程中,將寫請求處理鏈表中的請求提交,查看位圖狀態(tài),如果位圖一致或?yàn)闋顟B(tài)A,同步請求鏈表中對應(yīng)的寫請求丟棄,然后將同步請求鏈表中剩余的寫請求提交。每種類型的寫請求提交完成后都對位圖進(jìn)行相應(yīng)的一致性化處理。
3.2 吸拉式日志技術(shù)
在常規(guī)的異步數(shù)據(jù)復(fù)制中,用的是推送式的數(shù)據(jù)傳輸方法,這就面臨著許多問題,而這些問題會令系統(tǒng)實(shí)現(xiàn)困難并且效率低。其中一個就是本地端內(nèi)存中數(shù)據(jù)積壓問題,另一個常見的則是數(shù)據(jù)一致性問題。用位圖技術(shù)以及寫合并技術(shù)可以解決本地端數(shù)據(jù)積壓的問題,但破壞了數(shù)據(jù)的時序一致性。用一致性組的方法可以保證組內(nèi)的一致性,但是需要快照技術(shù)作為輔助。
然而,網(wǎng)絡(luò)吸拉式日志方法可以很好地解決這些問題。由于通常情況下對于較遠(yuǎn)距離的異地容災(zāi)系統(tǒng)而言,網(wǎng)絡(luò)數(shù)據(jù)的傳輸速率并不及硬盤的1/10,因此本地硬盤在異地容災(zāi)系統(tǒng)中可以作為很好的緩沖設(shè)備。
在本地端啟動異步模式后,發(fā)向鏡像/日志存儲池的寫請求以日志的方式寫入其部分B,而與此同時,異地端的日志解析模塊先將鏡像/日志存儲池部分A 的數(shù)據(jù)(相當(dāng)于同步模式轉(zhuǎn)異步模式時生成了快照)直接拷貝至異地存儲池,然后讀取部分B 的日志,并進(jìn)行解析,得出數(shù)據(jù)后再寫入異地存儲池。由于本地端負(fù)責(zé)寫入,異地端負(fù)責(zé)讀取,這就會出現(xiàn)競爭問題。
日志在鏡像/日志存儲池的B 部分中以雙鏈表的方式進(jìn)行組織管理。一個鏈表作為讀鏈表,由異地端負(fù)責(zé)讀取,一個鏈表作為寫鏈表,接收本地端的寫請求日志,當(dāng)異地端將讀鏈表讀完后,釋放空間,寫鏈表變化角色為讀鏈表,新建的寫鏈表繼續(xù)接收上層傳來的寫請求。鎖由本地端集中管理,通過異地端與本地端的交互是對鏈表頭進(jìn)行簡單的加鎖/解鎖操作,即解決了競爭問題。
這樣通過日志就將對本地存儲池的數(shù)據(jù)寫入過程完整地還原到異地存儲池上,保證了數(shù)據(jù)的嚴(yán)格時序一致性。由于鏡像/日志存儲池實(shí)際上是本地存儲設(shè)備,它與本地存儲池?cái)?shù)據(jù)的寫入是并行的,因此,并未對原系統(tǒng)性能產(chǎn)生較大影響。
4.性能測試與分析
4.1 測試環(huán)境
本節(jié)介紹系統(tǒng)測試的硬件和軟件環(huán)境,由于本文系統(tǒng)基于軟件實(shí)現(xiàn),不依賴于底層硬件和設(shè)備,故測試過程中本地端跟異地容災(zāi)端選取了不同的硬件環(huán)境。本地端采用的是戴爾T110 工作站,具體配置為:Intel Xeon X3430 四核CPU,4 GB DDR2 667 內(nèi)存,原始數(shù)據(jù)盤為160 GB SATA硬盤,日志數(shù)據(jù)盤為250 GB SATA 硬盤。異地容災(zāi)端采用的是戴爾Inspiron 530 微型機(jī),具體配置為:Intel Core E4400雙核CPU,2 GB DDR2 667 內(nèi)存,備份數(shù)據(jù)盤為160 GB SATA 硬盤。本地端跟異地容災(zāi)端的操作系統(tǒng)都是采用Linux,內(nèi)核版本為2.6.18。
4.2 測試結(jié)果與分析
本文使用廣泛使用的iozone 測試工具來對本地端不同情況下硬盤讀寫效率進(jìn)行測試。分別測試了本地存儲池(sdb)、鏡像/日志存儲池(sdc)、同步過程中、同步完成后以及異步狀態(tài)下的隨機(jī)讀性能和隨機(jī)寫性能。為消除隨機(jī)性帶來的誤差,每項(xiàng)測試進(jìn)行10 次并取平均值。隨機(jī)讀性能結(jié)果如圖4 所示。
圖4 隨機(jī)讀性能
可以看出,無論是在構(gòu)建容災(zāi)系統(tǒng)的同步過程中、同步完成后還是在異步模式下,容災(zāi)系統(tǒng)虛擬塊設(shè)備的讀性能都與本地盤的讀性能相差不大,這是因?yàn)樯蠈討?yīng)用程序發(fā)來的讀請求都是直接發(fā)往本地盤,而在同步過程中,本地盤不僅要處理上層應(yīng)用程序的讀請求還需要處理同步讀請求,所以,其在同步過程中的讀性能相比其他情況下的讀性能要低。
隨機(jī)寫性能如圖5 所示。
圖5 隨機(jī)寫性能
可以看出,在同步過程中、同步完成后以及在異步模式下,容災(zāi)系統(tǒng)的虛擬塊設(shè)備的隨機(jī)寫性能與本地盤相比有所下降,但帶來的寫性能開銷并沒有超過20%。因?yàn)樵谶@些情況下,容災(zāi)系統(tǒng)虛擬塊設(shè)備需要將上層傳來的寫請求進(jìn)行復(fù)制,并分發(fā)至本地盤和鏡像/日志盤,當(dāng)2個盤的寫請求處理完成后,針對上層的寫請求才返回。而在同步過程中,本地盤不僅要處理上層應(yīng)用程序的寫請求還需要處理同步寫請求,所以,其在同步過程中的寫性能相比其他情況下的寫性能要低。
經(jīng)過以上比較和分析可以得出以下結(jié)論:在同步模式下,本文系統(tǒng)對原系統(tǒng)的性能影響不超過10%;在異步模式下,對原系統(tǒng)的性能影響不超過20%。由此可見,該系統(tǒng)在成功提供對本地?cái)?shù)據(jù)保護(hù)的同時,僅對原系統(tǒng)帶來較小的讀寫性能缺失。
5.結(jié)束語
本文基于存儲虛擬化技術(shù),以軟件方式實(shí)現(xiàn)一種動態(tài)容災(zāi)系統(tǒng),保證了數(shù)據(jù)一致性和服務(wù)的高可用性。實(shí)驗(yàn)結(jié)果證明,該系統(tǒng)動態(tài)加載后對原系統(tǒng)帶來較小的性能缺失。此外,下一步針對該系統(tǒng)還可做如下改進(jìn):通過本地端對日志數(shù)據(jù)進(jìn)行壓縮存放,遠(yuǎn)程端讀取后解壓縮可以減小網(wǎng)絡(luò)負(fù)載,降低災(zāi)難發(fā)生時數(shù)據(jù)丟失;通過本地端對日志進(jìn)行加密,遠(yuǎn)程端讀取后解密可以提供系統(tǒng)安全性。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://m.hanmeixuan.com/
本文標(biāo)題:一種基于存儲虛擬化的動態(tài)容災(zāi)系統(tǒng)
本文網(wǎng)址:http://m.hanmeixuan.com/html/support/11121514249.html