豐洪才 向云柱
(武漢工業學院計算機與信息工程系 武漢 430023)
計算機機房是學校計算機教學和實驗的場所,它承擔著為學生上機與實驗、機房開放、各種計算機培訓和科研實驗等任務。然而計算機機房的維護任務是一件非常煩瑣的事情,因為人員流動大,教學任務類型多,對計算機中的軟件的要求不斷變化,機房管理人員經常要重新安裝系統、查殺病毒等,維護時不得不花費大量時間和精力[1]。雖然計算機硬盤保護卡已在教育行業計算機機房、網吧等大型計算機機房得到了廣泛應用,但隨著計算機的普及程度越來越高,對機房的維護要求也越來越高。特別是網絡拷貝,傳統的方法是進行完全的磁盤拷貝,這種方案存在的問題是拷貝的數據量大、網絡的負載大、拷貝的速度低,需要花大量的時間完成一次拷貝,而且一旦中途出現問題,必須全部重新進行,不夠靈活。
針對傳統網絡拷貝方案存在的問題,筆者與武漢噢易科技有限公司聯合開發并完成了噢易Free卡電腦教室自主維護系統,突破了傳統的網絡拷貝與增量拷貝的種種限制,提出并實現了一種網絡差異拷貝的方法,有效降低了網絡的負載,不論各接收端有無操作系統、數據是否一致,差異拷貝均可智能將接收端與發射端數據實現完美統一,支持大小硬盤互傳,提供全盤、單個操作系統、單個分區或自定義分區組合等多種拷貝模式,并僅僅拷貝各接收端與發射端有差異的數據,拷貝速度高于每分鐘400M,最高能夠支持512臺電腦同時進行差異拷貝,實現了斷點續傳。該系統已于2008年10月通過湖北省軟件測評中心的軟件測試,并獲得了2008年度湖北省優秀軟件產品證書,2009年5月通過湖北省科技廳組織的鑒定。
在保護卡進行網絡拷貝中,機房的計算機可以分為接收端計算機和發送端計算機兩個部分。在大規模計算機房的維護中,傳統的基于硬盤保護卡的網絡拷貝的方法是使用一臺發送端計算機向機房內其他接收端計算機全盤的數據拷貝,通過網絡中一臺計算機來安裝或更新整個網絡中計算機的操作系統和應用軟件。圖1給出了網絡拷貝的示意圖。根據圖中的網絡拷貝,可以分為如下兩個步驟進行[2],第一步根據機房的實際使用需要安裝好“樣機”的各種操作系統和應用軟件,為網絡拷貝做好準備;第二步讓保護卡接管計算機并將發送端計算機調整為處于發送狀態,接收端計算機調整為接收狀態,在發送端收集完接收端計算機的信息或者接收端登錄到發送端之后,就可以按照保護卡的操作要求開始網絡拷貝,直到所有的接收端計算機完成數據的接收為止,這樣就通過“樣機”來更新接收端計算機,使得接收端計算機的數據保持到最新狀態。這種方法顯然能方便機房的維護,但不夠靈活,往往需要大量的時間將發送端的全盤數據復制到接收端去,這就要求所有計算機的硬盤大小、品牌等規格必須完全相同,實際中有一定的局限性。

圖1 網絡拷貝示意圖
IPX數據包由包頭和數據兩部分組成[3],包頭包括控制、目的地址和源地址三個域,每個包長=包頭長度+數據長度,故最小包長為30字節。如表1,包頭為30字節,數據長度為0~546字節(沒有數據的分組主要用于應答)。

表1 IPX數據包結構
IPX數據包各部分意義如下:
1)控制部分
檢驗和(2bytes):始終為0FFFFH;
包長度(2bytes):由系統自動設置;
傳輸控制(1byte):當數據傳過一個網時,就加一,到16時廢棄該包,防止數據在網間無休止地傳輸;
分組類型(1byte):對于IPX包,始終設為4。
市政府于2010年年底出臺《關于加快推進郊區集約化供水的實施意見》,將郊區集約化供水列入市政府實事項目和重大工程重點推進。截至2013年11月底,上海市陸域部分的集約化供水工作已完成,共關閉郊區中小型水廠150座,取消內河取水口94個,注銷深井取水許可證161個,達到了集中保護水源、優化水廠布局、壓縮地下水開采量、提高供水水質和管理服務水平、改善郊區發展環境等預期效應,受到廣大郊區市民的歡迎。
2)目的網絡地址:地址是網絡層地址,包括網絡地址、節點地址和套接口號。
目的網絡號(Dest_Network_Number,4bytes):將要接收本IPX數據包的節點所在網絡的地址。如果目的網絡地址的數值為0,則認為目的網絡與源網絡是同一個網絡。
目的節點地址(Dest_Network_Node,6bytes):通常節點地址由節點工作站上的網絡設備分配,從網卡中讀出。由于網絡的拓撲結構和網絡設備互聯的協議不同,節點地址的長度也可能不同,應該注意的是,節點地址從最低有效位開始存放,高位不足六個字節的部分填0。如果欲發送的數據包是采用廣播發送方式發往目的網絡上所有工作站,則目的地址填 0XFFFFFFFFFFFF(六個字節全為FFH)。
目的套接口號(Dest_NETWORK_Socket,2bytes):指接收本IPX數據包所打開的端口。由于在NetWare中保留了一定的套接口值,因此對于用戶的應用程序,建議打開的套節口號在0X4000~0XS000之間。
另一個值得注意的是:在NetWare中,數據是高位在前,低位在后的,這和Intel系列CPU存放數據的方式是相反的。
3)源網絡地址:用于說明IPX數據包從何處發,與上目的地址類似。
源網絡地址(Source_Network_Number,4bytes):用于存放發送IPX數據包的源節點工作站所在的網絡號。為0時表示一個未知源網絡。
源節點地址(Souse_Network_Node,6bytes):發送IPX數據包的工作站地址,其形成同目的節點地址。
源套接口號(Souse_Network_Socket,2bytes):指發送IPX數據包的進程地址。
IPX功能調用是通過Netware Shell的特定的軟件中斷調用來實現。當網絡中的計算機調用了IPX協議后,由IPX提供的軟件中斷即駐留于內存當中,其調用方式與DOS功能調用相類似,通過中斷INT 7AH來實現。
在調用功能時,入口參數與返回參數的設置有以下規則:
入口參數:BX=功能號;
DX=欲操作的套接口號;
ES:SI=源數據單元指針;
ES:DI=目標數據單元指針。
返回參數:AL=返回碼,為了防止在調用IPX功能前沒有裝載IPX協議。因此調用前必須檢查INT 7AH是否指向NULL,這通常是通過調用OX2F多路中斷來測試的。測試時,將0X7A00放人AX寄存器后調用INT 2FH,若IPX已安裝,則在AL寄存器中返回0XFF。
差異拷貝算法的主要實現思想是先對兩個分別處于發送端和接收端的磁盤塊進行比較,比較后認為相同的磁盤塊就不進行磁盤塊數據的拷貝;比較后認為不同的磁盤塊則進行數據的網絡拷貝,即只傳輸兩個磁盤不同的部分,這樣可以在很大程度上減少恢復數據的時間和降低網絡的負載[4]。如圖2所示,磁盤a為接收端的磁盤,磁盤b為磁盤a在發送端相應的磁盤,在圖中對磁盤a,b進行劃分得到ei集和集,其中 ei和的大小相同且邏輯地址相同。

圖2 鏡像磁盤的劃分
下面假設磁盤a的數據需要根據磁盤b的數據,通過差異拷貝算法對磁盤a的數據進行網絡拷貝,步驟如下:

算法中,每個磁盤區域ei的大小是可變的,可根據計算機服務器和網絡的速度適當調整這個值,可使算法達到最佳的效果。

與完全數據拷貝的方法相比,在磁盤a和磁盤b有較多相似性的情況下,差異拷貝算法能大大降低網絡負載并在很大程度上提高計算機數據拷貝的速度。采用差異拷貝算法后,網絡負載是采用完全數據拷貝方法的(1+size(Q)/size(e)-η),其中,size(Q)是每個 e的摘要值的大小,一般為16Bytes,size(e)是磁盤區域的大小,這個值可以調動,一般取值在1~20MB之間,η是磁盤a與磁盤b的相似率。可以看出,size(Q)/size(e)的值很小,可以忽略不計,而η的值比較重要,當η比較大時,網絡的負載有很大程度的降低。
在網絡傳輸協議中,具有廣播式發送的除了IPX外,還有NETBIOS協議[5]。相比較而言,IPX具有傳輸速度快、支持面廣等優點,因此,本算法最終選擇了IPX協議。采用Server/Client模型,即在發送端計算機運行Server程序,而接收端計算機運行Client程序,基本原理如圖3、4所示。
基于噢易Free卡的電腦教室自主維護系統已經廣泛地應用于國內100余所高等學校和許多網吧等大型計算機場所。網絡差異拷貝的方法,有效降低了網絡的負載,不論各接收端有無操作系統、數據是否一致,差異拷貝均可將接收端與發射端數據實現完美統一。該系統在教育行業、培訓機構中的應用必將減輕機房維護和管理人員的工作量,從而提高機房的維護效率。
[1]李全忠,張軍本,等.硬盤保護卡設置信息的安全恢復[J].計算機工程,2008,34(6):281~283
[2]謝建全.一種對公用機房硬盤進行有效保護的實現機制[J].計算機工程,2003,29(5):177~179
[3]李娟,明德廷.基于IPX協議的數據傳輸程序的原理與實現[J].計算機與現代化,2003(6):30~32
[4]王志明,李濤,等.一種快速災難恢復方法[J].計算機應用研究,2006(10):78~80
[5]蘭高志.網卡中硬盤保護功能的增設[J].計算機工程,2004,30(6):133~134