(武警工程大學信息工程系 陳曉 張龍軍王謙)
云環境下實時同步方案的設計
(武警工程大學信息工程系 陳曉 張龍軍王謙)
數據同步技術可以使異地數據中心中的數據保持一致,但缺少監管文件更新機制,不能實現數據的實時同步。以U-nix、Linux、Windows等系統普遍支持的Rsync同步算法為基礎,提出適用于云環境下的HadoopRsync同步方案。實現文件同步的自動化和實時性。并且根據實際應用環境對文件HadoopRsync算法進行改進以提高效率。
近年來,隨著虛擬化和網絡技術的迅猛發展,云計算正在世界范圍內悄然興起,引發第三次信息技術革命浪潮。然而,數據同步問題(有效存儲及一致性問題)成為云災備發展的一個重大瓶頸。
本文以HadoopRsync算法為前提設計了實時同步方案來解決此問題。HadoopRsync不需要把數據塊集中到單個機器上,而是通過任務分配,把作業分發給多個節點以提高效率。
Rsync算法簡介
Rsync算法是迄今為止遠程數據同步比較經典的算法,通過網絡傳輸文件內容差異的部分,同步在異地數據中心的相似文件。
Rsync可通過LAN/WAN快速同步多臺主機間的文件。具有開源、流程優化、鏡像保存整個目錄樹和文件系統以及支持rcp和ssh傳輸方式等諸多特點。
Rsync算法流程
Rsync算法的主要步驟為:
在目的端,將目標文件劃分成大小為b字節且相等的數據塊,針對每個,計算弱校驗碼和強校驗碼,將這兩個校驗碼的列表傳輸到數據源端(為弱哈希函數,是MD4強檢驗算法)。
在數據源端,從文件偏移量開始,按照數據塊大小為計算新文件的校驗碼序列,與接收到的校驗碼序列進行計較,依次遍歷整個文件:
在目的端,用源文件端傳輸過來的新數據和舊文件的校驗索引重建新文件。
Hadoop平臺
Hadoop是Apache下的一個開源分布式計算平臺,是云計算的主流應用平臺。Hadoop、MapReduce和HDFS分別負責分布式計算與存儲功能。
HadoopRsync算法
與傳統的同步兩臺主機文件的Rsync算法不同,使得HadoopRsync變為一個非對稱的算法。
Inotify機制
HadoopRsync雖然實現了云環境下的數據同步,但是沒有實時監控數據的更新變化,缺少了實時監控機制;其次,算法沒有考慮到特殊類型的文件的需求,例如實時數據文件的同步。
Inotify實時同步的實現原理
用戶首先創建一個inotify實例,通過調用函數inotify_init()實現,此inotify實例會有一個對應的inotify_deviee結構,該結構中包含了watch描述符與監聽列表inotify_watches以及inotify實例上發生的事件列表(events),被inotify實例監視的所有事件在發生后都將插入到events列表。
Hadoop平臺實時同步的設計與實現
數據同步的實現是基于Limix系統。功能實現主要采用C語言和Shell腳本來編程完成。
文件更新實時監控的過程主要分為三個階段:首先程序初始化操作調用initialize_FM函數,讀入系統文件,提取文件同步的信息。通過調用函數add_inotify為每個文件同步任務添加inotify實例。文件更新包括子目錄和子文件。
實驗仿真
實驗系統采用了兩臺安裝了Hadoop的Linux服務器與兩臺ASUS D451計算機,Linux服務器內核支持Inotify機制并根據系統的要求進行了相關的配置,并采用了2Mbits/s專用光纖鏈路。
本文重點分析了Linux內核中的Inotify機制與Rsync遠程同步算法的執行原理。結合當前云災備的需求,提出了一種適用于云環境下的實時同步的模型。在經典的Rsync同步算法的基礎上改進設計出了基于云平臺Hadoop集群的HadoopRsync算法與 Inotify機制相結合的實時同步系統。
