何娟娟,李戰懷,宋 慧
(西北工業大學計算機學院,西安710129)
雙機熱備系統中一臺主機為工作機(Master機),另一臺主機為備份機(Backup機)。系統在正常情況下,工作機為系統提供支持,備份機監視主機的運行情況。當工作機出現異常時,備份機接管服務,主動轉為新的工作機,繼續支持系統運行。這時,故障節點可以離線維修,當故障節點恢復正常后,重新加入到雙機熱備系統中運行,變為備份節點,從而保證了系統不間斷運行,實現永不停機的功能,對用戶來說,只經歷了短暫的重啟過程。純軟件的雙機熱備因為沒有共享磁盤陣列,所以通過網絡在兩臺主機之間進行實時的數據復制。當主機發生故障時,系統自動將服務切換到備機,并在備機鏡像數據的基礎上,繼續為客戶端提供業務服務,實現了不需要共享存儲的純軟件高可用系統。該文研究的純軟件雙機熱備數據同步技術應用背景是基于open flow協議的FCS(flow control system)系統。首先簡單介紹了open flow協議的相關知識,以及FCS系統的雙機熱備架構。之后重點對雙機之間的數據同步技術進行了研究,提出了基于鏈路延遲的主備機文件復制方法以及基于單向哈希的更新文件檢索方法。相對傳統雙機熱備數據同步方法,在一定程度上提高了系統性能。
Open flow協議是由斯坦福大學的Nick McKeown教授在論文 OpenFlow:enabling innovation in campus networks中首先提出來的,是一個實現對全網交換機、路由器的數據通路進行控制的協議。open flow標準定義了控制器與交換機之間的交互協議,以及一組交換機操作。這個控制器-交換機協議運行在安全傳輸層協議(TLS)或無保護TCP連接之上。控制器向交換機發送指令,控制數據包的轉發方式,交換機會在鏈路中斷或出現未指定轉發指令的數據包時,發送消息通知控制器。轉發指令基于流,每個交換機都維護著許多路由表,每個表又包含多個路由記錄,每個路由記錄包含一個匹配域,定義了流、計數器和指令集。
FCS系統就是,在open flow協議基礎之上構建一個虛擬網絡,通過對網絡的集中控制,實現網絡的簡單化,虛擬化和可視化。系統主要由支持open flow協議的交換機和open flow控制服務器組成。將原來完全由交換機/路由器控制的報文轉發過程,轉換為由open flow交換機和open flow控制服務器來共同完成[1]。open flow交換機進行包的轉發,open flow控制服務器實現包傳送路徑的選擇及控制,實現數據轉發和路由控制的分離,實現了網絡配置的柔軟性、可控性。通過編程實現以流為單位的路徑控制、故障恢復、負載均衡以及網絡的虛擬化。為了使控制服務器在發生故障時,網絡不會停止工作,通過組建雙機集群,一臺為工作機,一臺為備份機的形式為系統提供服務。由于基于共享磁盤陣列的雙機集群系統,存在切換時間長的缺陷,不能滿足系統性能需求,故采用純軟件的雙機熱備架構,系統架構如圖1所示。

圖1 FCS系統架構
為了記錄Master機和Backup機上的文件信息,在Master節點和Backup節點上分別創建一個文件信息表,實時記錄本地節點上的文件信息。文件信息表中存放的是文件元數據,包括文件ID標識,文件元數據的更新時刻,文件數據的更新時刻,文件大小等等屬性。每次通過比較Master機和Backup機上的文件信息表,判斷出發生更新的文件,為了避免每次都把Backup機上的文件信息表通過雙機之間的鏈路傳送到Master機端,浪費系統帶寬,增加系統開銷,這里采用如圖2所示的數據結構,在雙機每個節點上創建兩個文件信息表,一個主文件信息表,一個從文件信息表,分別代表Master機上的文件信息和Backup機上的文件信息。當Master機出現故障宕機后,在Backup機上還存在有Master機上的文件信息,在一定程度上也對數據進行了保護。

圖2 節點數據結構
每次同步文件時,要實時對工作機和備份機上的四個文件信息表進行更新維護。
(1)讀取Master節點上的文件。
(2)把Master節點上的文件更新情況記錄到Master節點上的主文件信息表中。
(3)從Master節點向Backup節點傳送數據。
(4)更新Backup節點上的文件信息,使其和Master節點上的文件信息保持同步。
(5)把Backup節點上的文件更新情況記錄到Backup節點上的從文件信息表中。
(6)把Master節點上的文件更新情況記錄到Backup節點上的主文件信息表中。
(7)把Backup節點上文件的更新結果傳送給Master節點。
(8)把Backup節點上文件的更新情況記錄到Master節點上的從文件信息表中。
傳統雙機熱備系統中,采用文件更新通知和計時器間隔監視兩種方式實時監控工作機上的文件。文件更新通知即一旦有文件發生更新,立即觸發對該文件的備份操作;計時器間隔監視即每間隔固定的時間,依次掃描工作機上的主文件信息表和從文件信息表,對二者進行比較,從而判斷出發生更新的文件,然后觸發對該組文件的備份操作。由用戶輸入文件優先級的一個閾值,當發生更新的文件的優先級高于該閾值時,采用文件更新通知的方式觸發文件備份;當發生更新的文件的優先級低于該閾值時,采用間隔監視的方式觸發文件備份。這種傳統的文件備份方法沒有考慮到主備機對等節點間當前傳輸鏈路的傳輸延遲,很可能在雙機之間傳輸鏈路已經發生擁塞的情況下,又觸發對文件的備份操作,結果這部分文件又都阻塞在雙機鏈路中,影響了主備機間文件復制的連續性。
提出一種基于鏈路延遲[4]的文件更新通知和間隔監視的切換方法。在鏈路暢通的情況下,采用文件更新通知的方法觸發文件備份確保主備機數據一致性;在鏈路擁塞的情況下,采用間隔監視的方法,不觸發對文件的傳送,只把更新文件的信息,記錄在工作機上的本地文件信息列表中。在鏈路恢復暢通的情況下,再觸發對更新文件的傳送,大大提高了系統效率,并且使系統在保持主備機數據一致性和系統復制性能之間趨于一個平衡點。提供給用戶一個接口,由用戶指定數據在工作機和備份機之間鏈路上傳輸延遲的一個閾值,根據該閾值以及文件數據傳輸的實時延遲,實現文件更新通知和間隔監視的實時調整。
假設用戶輸入的鏈路延遲閾值為T,通過一個資源追蹤線程對鏈路上傳輸的文件進行追蹤,從數據開始在鏈路上傳送到備份機接收到數據的時間差值即為數據鏈路上文件的傳輸延遲值Tdelay。
(1)當Tdelay<T時,按照文件更新通知的方法進行主備機間更新文件的監視以及復制;當Tdelay>T時,則自動切換為間隔監視的方法進行主備機間文件的監視和復制。
(2)實時監控數據鏈路上的網絡延遲,當Tdelay<T,則對下一個請求改用文件更新通知方法進行復制,否則,繼續采用間隔監視的方法進行文件的監視和復制。
Q=(R1,R2,R3...)代表一系列的文件更新請求,以文件更新通知方法啟動工作機和備份機對等節點間的文件監視和復制。資源追蹤線程依次記錄每個文件的傳輸延遲,記錄在一個線性隊列中,當執行文件更新請求Ri時,鏈路延遲Ti>T,則從Ri+1開始,對后續的連續k個文件更新請求,采用間隔監視的方法進行文件的監視和復制;再以文件更新通知方法處理Ri+k+1文件的更新請求,并計算該請求文件傳輸的鏈路延遲,如果Ti+k+1<T,則對后續的文件更新請求采用文件更新通知的方法,否則繼續對Ri+k+2開始的k個文件更新請求采用間隔監視的方法進行監視和復制。如此循環執行,直到文件更新請求隊列為空[2]。
算法流程如圖3所示:

圖3 算法流程圖
輸入:Q=(R1,R2,R3...),T,k
FileUpdateNotify(R)代表采用文件更新通知的方法進行文件的監視和復制。
IntervalNotify(R,Q,k)代表對 Q隊列中,從文件R請求開始的k個文件更新請求采用間隔監視的方法進行文件的監視和復制。
基于鏈路延遲的文件復制方法介于文件更新通知和間隔監視之間。通過對鏈路延遲的實時監控,在文件更新通知和間隔監視之間切換,在盡力確保主備機數據一致性的基礎上,又對系統性能進行一定的改善,同時在一定程度上,確保了主備機間數據復制的連續性。
基于鏈路延遲的文件復制,文件更新通知,計時器間隔監視三種不同的觸發文件備份操作結果對比如表1所示。

表1 三種觸發文件備份算法比較
可見,基于鏈路延遲的文件復制在文件更新通知和計時器間隔監視間取得了很好的權衡,既提高了主備機的數據一致性,又沒有大幅度降低系統性能。
當采用間隔監視進行文件復制時,每次都對Master機上的兩個主從文件信息表從頭至尾進行掃描比較,以檢索出發生更新的文件,這在很大程度上影響了系統性能,尤其是當發生更新的文件只有所有文件中很少的一部分時,更是如此。因此提出一種基于單向哈希函數的檢索更新文件的方法。
單向哈希函數[3]是一種算法,可以將消息或者文本轉化成為一個固定長度的數字簽名,稱之為哈希值。“單向”即只能通過哈希函數把消息或文本轉換成哈希值,卻不能從哈希值通過哈希函數,還原出消息或文本。并且兩個不同的消息或文本幾乎不可能生成相同的哈希值,因此完全可以通過哈希值的相同與否,來判斷文本的相同與否。
使用單向哈希函數,對Master機上的主從文件信息表分別計算哈希值H主和H從,當H主等于H從時,說明Master機上的文件信息在該時間間隔內未發生改變,與Backup機上保存的文件信息一致,不需要同步;當H主不等于H從時,說明Master機上存在的文件信息發生了改變。為了進一步精確定位發生改變的文件,把Master機上的主文件信息表和從文件信息表分別分割成兩部分,對每一部分再使用單向哈希函數計算哈希值,以此類推,直到文件信息表的每一條記錄,具體過程如圖4所示。

圖4 更新文件檢索
任意大小的數據集產生的數字簽名都是固定長度的,通過單向哈希函數對數據集產生的數字簽名的長度要明顯小于數據集的長度。對每個數據集計算數字簽名的計算量和數據集的大小成線性比。數字簽名的計算是一個迭代過程,可以通過多線程的方式進行,因此對主文件信息表計算數字簽名和對從文件信息表計算數字簽名的過程可以同步進行。每次當主從文件信息表的數字簽名不同時,就對信息表對半切分。因此整個檢索更新文件的時間復雜度由原先的O(n)降低到O(logn)。另外對簽名的計算是按需進行的,不需要一片連續的存儲空間來存儲數字簽名,因此從時空效率兩方面考慮,該方法都比較合理。
在基于open flow協議的FCS系統應用背景下,研究了純軟件雙機熱備系統的數據同步方法,并且在對傳統文件備份時機以及檢索更新文件的不足進行分析的基礎上,提出了基于鏈路延遲的文件復制以及基于單向哈希函數的更新文件檢索方法。基于鏈路延遲的文件復制,可以有效保證主備機間文件復制的連續性,并且在保證主備機數據一致性和系統復制性能間取得權衡。基于單向哈希函數的更新文件檢索,把檢索更新文件的時間復雜度從O(n)降到O(logn),從而節省了很多時間,在很大程度上提高了系統效率。通過以上兩點改進,能夠高效快速的實現雙機熱備系統中對等節點上數據的同步。
[1] 王麗君,劉永強,張健.基于OpenFlow的未來互聯網試驗技術研究[J].電信網技術,2011(6):2-3.
[2] 王彥龍.海量數據保護與容災關鍵技術研究[D].西安:西北工業大學,2008:79-82.
[3] Victoria V.Livschitz,West Bloomfield.One-way hash function for distributed data synchronization:United States,US6470329B1[P].2002-10-22.http://www.google.com.hk/patents?hl=zh-CN&lr= &vid=USPAT6470329&id=DbcLAAAAEBAJ&oi=fnd&dq=One-way+hash+function+for+distributed+data+synchronization&printsec=abstract#v=onepage&q=One- way% 20hash% 20function% 20for%20distributed%20data%20synchronization&f=false.
[4] Dale Burr,Robert Bruce Nicholson.Suspension of an asynchronous remote copy pair system having a primary controller and a remote controller:United state,US7890715B2[P].2011-2-15.http://www.google.com.hk/patents?hl=zh-CN&lr= &vid=USPAT7890715&id=dBcdAQAAEBAJ&oi=fnd&dq=Suspension+of+an+asynchronous+remote+copy+pair+system+having+a+primary+controller+and+a+remote+controller&printsec=abstract#v=onepage&q=Suspension%20of%20an%20asynchronous%20remote%20copy% 20pair% 20system% 20having% 20a%20primary%20controller%20and%20a%20remote%20controller&f=false.