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