(四川大學 計算機學院, 成都 610065)
摘 要:提出一種在網絡備份系統(network backup system,NBS)中的海量緩存方法。給出海量緩存的定義、使用目的和與備份代價密切相關的大小評估,并描述了一種基于MS Windows海量緩存設計與實現的方法,并對其性能進行了實驗分析。由于網絡傳輸與備份中心處理的延遲,使得本地I/O系統處理速度遠遠大于數據備份的速度,從而造成本地內存緩沖隊列的大小越來越大。海量緩存方法就是通過借助大量的輔存來解決這個問題,當本地數據中心監控到數據變化后,會先把數據變化放入輔存中,然后再發送到遠程備份中心。
關鍵詞:海量緩存; 容災; 內核
中圖分類號:TP309.3 文獻標志碼:A
文章編號:10013695(2009)01000902
Mass buffer in network backup system
GE Liang, LU Zhengtian, YI Guwu, ZHOU Yu
(School of Computer, Sichuan University, Chengdu 610065, China)
Abstract:This paper designed mass buffer in network backup system (NBS), provided the definition, purpose, size assessment related to the backup cost, the design and implementation of mass buffer. Because of the delay caused by network transmission and process in remote backup center, the I/O rate in the local host is much faster than that of data backup, which caused the memory buffer queue will be more and more large. This problem was solved by the method of mass buffer, which was supported by secondary storage. The changes of data would be first put into mass buffer, from which the data then would be send to remote backup center.
Key words:mass buffer; disaster tolerant; kernel
網絡備份系統(NBS)的作用不言而喻,是完全基于軟件實現的網絡備份系統,比RAID、SAN、NAS等更具有廉價、靈活、易于維護的優勢[1,2]。
在NBS中,最重要的問題之一就是復制技術[3,4]。在盡量不影響本地數據中心的I/O系統處理速度的情況下,怎樣完整而快速地把備份數據傳輸到遠程備份中心?常規的做法是把備份數據放入內存緩沖區,再發送到遠程備份中心。雖然內存緩沖區的讀寫速度較快,但是因為網絡傳輸和備份中心的處理延遲,隨著數據的快速持續改變,內存緩沖區會達到峰值,從而嚴重影響本地I/O系統處理速度,甚至造成備份任務失敗。
本文提出一種NBS中的海量緩存方法,給出了海量緩存的定義、大小界定、實現算法,并通過實驗進行性能分析。這種海量緩存方法能夠應用在基于Windows、UNIX的邏輯卷備份[5]系統中。
1 海量緩存
1.1 術語符號定義
1)本地數據中心 用戶的服務器,表示需要進行數據監控的服務器。
2)遠程備份中心 本地數據中心的數據最終備份的目的服務器。
3)寫入速度 表示從用戶發起寫操作到操作系統完成此操作的速度。
4)寫時復制 把本地數據中心監控到的數據在寫入到卷的同時另外復制一份到內存中。
5)備份速度Rt 表示備份數據從本地數據中心經過備份中心備份,再到本地備份中心收到備份確認的速度。
6)Rn 網絡傳輸速度。
7)Rw I/O系統的硬盤寫入速度。
8)Sv 數據中心的數據連續變化大小。
9)Rd I/O系統的磁盤讀取速度。
1.2 目的
對于不同的備份策略有著不同的備份技術。圖1所示的是一種卷的實時差分備份網絡備份技術[6]的系統架構圖。這種技術屬于一種異地備份、組織上的災難恢復技術[7],通過監控卷的數據變化,把變化的數據備份到遠程備份中心。為了不影響本地數據中心的寫入速度,監控模塊必須進行寫時復制,把變化數據復制到發送緩沖區中,再由數據轉發模塊發送到遠程備份中心。但是,因為Rw>>Rt,且發送緩沖區是在內存中,Sv一旦達到一定的大小,發送緩沖區會很快被寫滿。此時,通常的做法是犧牲用戶磁盤I/O速度,在寫時復制前,寫操作等待發送緩沖區被數據轉發模塊發送,再進行寫時復制,最后提交用戶的寫操作到卷設備中。這種做法使得本地數據中心的磁盤I/O速度受到了很大的影響。為了解決Rw與Rt的不匹配問題,提出了一種海量緩存方法。
1.3 定義
如圖1所示,在本地數據中心,數據監控模塊首先監控到數據變化,并封裝成備份記錄放入海量緩存;然后再由數據轉發模塊從海量緩存中讀取發送到遠程備份中心。
海量緩存就是借助于外存,用來暫時存放本地數據中心的備份記錄,從而使緩存被寫滿的幾率大大降低的一種方法。由于外存可以存放比內存大得多的數據,海量緩存可以存放海量的備份記錄,這樣本地數據中心可以在不受影響的情況下接受海量的Sv,完整而高效地完成備份功能。只要海量緩存足夠大,寫時復制就不需要等待數據轉發模塊的發送,從而可以繼續處理上層的I/O請求。
1.4 大小
海量緩存的大小設置非常重要也非常困難,如果設置得太小,則緩沖容易寫滿;如果設置得太大,則浪費空間。并且海量緩存的大小關系到備份代價的評估和容災的定量分析,因為大多數的備份代價評估都是基于緩存足夠大[8]。海量緩存大小設置主要與本地Rw、Rd、Rn、遠程備份中心處理速度Rs(速度單位都是MBps)以及Sv MB有關。設數據從轉發模塊到備份中心處理的速度是Rt=(RnRsRd)/(Rn+Rs+Rd)。其中任何兩個速度定了,Rt與另外一個速度均成正比。若監控卷以Rw的速率持續變化,則海量緩存t s后的數據大小為S′=(Rw-Rt)t,海量緩存的大小S只要大于S′,即可保證在t時間內海量緩存不會被寫滿。
最好的情況是Rw=Rt, 則海量緩存只需大于線程最大時間配額×Rw即可;最差情況是Rt→0,則無論怎樣設置,海量緩存最終很容易會被寫滿。
1.5 實現算法
從海量緩存的組織形式上,可以是通過文件系統,邏輯上以文件的方式進行管理,可以是單個文件,也可以是多個文件;可以完全獨立于文件系統,直接以塊或扇區的形式存放,但是這種方式需要本地數據中心單獨隔離出一塊分區/磁盤,或需要實現存儲引擎來管理海量緩存的數據,以免被其他用戶數據覆蓋。
從海量緩存的寫入方式上,因為監控和發送是并行的兩個操作,海量緩存屬于臨界資源,所以需要進行讀寫的互斥操作。海量緩存主要是需要進行順序插入和順序讀取操作,不需要進行檢索。
經過實驗分析和測試,本文選取一種折中的方法進行海量緩存的管理,即通過文件系統來組織文件,這避免了與用戶數據重疊,但是不通過文件系統寫入數據,而是直接進行卷(分區)的操作,并且采用循環隊列的方式存放數據。
1.5.1 卷操作
對文件的讀寫操作不經過文件系統,而是通過直接獲取文件的虛擬簇號(LCN)進行文件的讀寫。為了獲取文件的虛擬簇號,必須要了解文件系統的數據存放原理,或通過操作系統提供的函數調用獲取。對于MS Windows的NTFS文件系統來說,通過發送fsctl_get_retrieval_pointers的I/O控制碼到文件系統,可以獲取海量緩存的LCN (邏輯簇號)與VCN映射關系[9],并且這些LCN組成了海量緩存塊信息,每個塊是由連續的簇組成,也就是說,在NTFS中,文件系統是由可能離散的塊鏈接而成的。圖2所示是在NTFS的元數據中VCN與LCN的映射。每個文件塊由一個起始VCN、起始LCN和簇的個數表示。VCN表示文件的虛擬簇號,即在文件中的簇偏移;LCN表示虛擬簇號,即在當前卷中的偏移;簇個數表示當前塊中包含有多少個連續的簇。
通過發送fsctl_get_ntfs_volume_data的I/O控制碼給NTFS,可以獲取NTFS文件系統的相關參數信息,如每個簇有多少個扇區,每個扇區有多少個字節等,從而可以直接根據LCN乘以簇大小(字節數)來進行文件的讀寫。
對于FAT文件系統,由于沒有相應的函數調用,上述I/O控制碼如果發往FAT文件系統,獲取的LCN信息是完全錯誤的,需要從FAT表中獲取相應的LCN并計算出連續的塊的大小與位置,并且需要從引導扇區讀取文件系統的相關參數信息,才能進行文件的查找和讀取。
1.5.2 備份記錄
當監控到本地數據中心的數據變化后,除了真正的用戶數據,還需要其他一些元數據來描述當前備份記錄的屬性,如數據的長度、數據的位置(LCN),因此在海量緩存的數據變化寫入到海量緩存中的同時,需要寫入頭部信息來描述數據部分的屬性。
使用卷進行操作,需要關心當前塊是否能夠裝下當前數據。設當前塊可用空間為A個簇,本次需要放入B個簇,則必須考慮B>A時,如何存儲當前塊的數據。為了能夠方便操作,當B>A時,在備份記錄頭中,標志當前塊之后的所有數據為無效數據,且跳過當前塊,判斷下個塊是否能夠放下數據B,直到海量緩存寫滿或者能夠放下當前數據B。雖然這樣會出現海量緩存的空洞現象,即這部分空間沒有有效數據,但是這樣更加方便讀寫操作,也不容易出錯。
1.5.3 海量緩存寫滿
對于數據監控模塊和數據轉發模塊來說,海量緩存是臨界資源,因此必須在訪問時對其進行互斥操作。但是數據監控模塊是在內核空間,數據轉發模塊是在用戶空間,兩者的內存空間不能方便地進行共享,并且海量緩存的文件塊可能是離散地分布在磁盤中。目前,采用的方案是:在驅動中保存當前寫入的字節數(SW)和寫入的位置信息,在數據轉發模塊中,保留讀取的字節數(SR)和讀取的位置信息。設海量緩存的大小是S,則海量緩存寫滿的條件是(SW-SR)>S。在數據轉發模塊中,有一個計時器線程定時更新(SW-SR)的值。圖3所示是針對海量緩存互斥訪問的定時器更新算法。
2 實驗與分析
實驗環境:Intel Pentium D 2.8 GHz CPU,內存512 MB,硬盤為Ultra ATA,7 200轉/s, 8 MB緩存。采用Windows 2003 server企業版操作系統。
為了測試把數據寫入海量緩存是否嚴重影響系統的I/O速度,分別測試了未加入海量緩存時的系統寫入速度和監控后把數據寫入海量緩存的相同位置,以及追加寫入時本地數據中心的磁盤寫入速度,如圖4所示。
分別以每次512 Byte,總共寫入5、10、20、50、100、256 GB的文件。驅動加載后,寫入海量緩存相同位置,寫入速度下降了10.02%,這是因為每次把監控下來的數據寫入了海量緩存相同的位置,磁盤驅動程序在優化磁盤I/O請求緩存隊列時,把寫入相同位置的多個I/O請求同時合并為一個I/O請求。追加的方式寫入性能降低了47.8%,因為此時的所有I/O請求不能進行合并操作,每個用戶源I/O請求都會被寫時復制為另外一份請求,并被提交到海量緩存所在的邏輯卷。這是一種空間換取時間的折中處理方法,不可避免地會付出性能代價[10],對于同一塊硬盤,勢必會不同程度地影響用戶的正常操作。
3 結束語
本文提出一種NBS中的海量緩存方法,作為一種Rw與Rt速度不匹配的解決方案。海量緩存適用于增量異地備份,這種方法能夠支持海量的連續數據變化,保證了異地備份系統的高可用性。
參考文獻:
[1]李濤. 網絡安全概論[M]. 北京: 電子工業出版社, 2004.
[2]QU Zhiwei, CHEN Yan, ZHANG Zhenhua,et al.Efficient data restoration for a diskbased network backup system[C]//Proc of IEEE International Conference on Mechatronics. 2004:452458.
[3]GARCIAMOLINA H, POLYZOIS C A. Issues in disaster recovery[C]//Proc of the 35th IEEE Computer Society International Conferenceon. San Fransisco, CA: [s.n.], 1990:573577.
[4]LAWLER C M,SZYGEN DA S A, THORNTON M A. Techniques for disaster tolerant information technology systems[C]//Proc of the 1st Annual IEEE Systems Conference. 2007:16.
[5]BROOKS C, McFARLANE P, POTT N, et al. IBM tivoli storage manager implementation guide[M]. 4th ed.[S.1]: International Business Machines, 2006.
[6]CHEN Yan,QU Zhiwei, ZHANG Zhenhua,et al. Data redundancy and compress methods for a diskbased network backup system[C]//Proc of International Conference on Information Technology: Coding and Computing volume 2. Washington DC: IEEE Computer Society, 2004.
[7]CEGIELA R. Selecting technology for disaster recovery[C]//Proc of International Conference on Dependability of Computer Systems. Washington DC: IEEE Computer Society, 2006:160167.
[8]余以勝.網絡數據備份的代價評估模型[J].計算機技術與發展,2006,16(12):6772.
[9]SOLOMON D, RUSSINOVICH M. Microsoft Windows internals[M]. 4th ed.Washington: Microsoft Press, 2005.
[10]DAMASCHKE P. Online strategies for backups[C]//Proc of the 4th Italian Conference on Algorithms and Complexity. Berlin: Springer, 2002.