摘要:詳細論述了高可用的存儲網絡系統設計所涉及的關鍵技術,為高可用的存儲網絡系統設計和應用提供理論依據。
關鍵詞:高可用; 存儲網絡; 冗余; 復制
中圖分類號:TP333文獻標志碼:A
文章編號:1001-3695(2007)08-0001-04
構建高可用存儲網絡對企業的發展至關重要。它需要多方面的技術[1~3]支撐。其中關鍵技術有冗余技術、日志技術、復制技術、安全技術、負載平衡技術、系統失效監測處理技術等。上述技術是分布式網絡系統普遍采用的技術,并不只是高可用存儲網絡系統所特有的。
1存儲網絡高可用系統設計的關鍵技術
1.1冗余技術
冗余是指超過正常系統操作所需的信息、資源或時間的簡單疊加。主要包括四種類型的冗余:
a)硬件冗余。例如存儲網絡中額外的雙服務器冗余和三服務器互為冗余、服務器中的雙網卡冗余、雙網絡冗余、多個存儲設備互相冗余、磁盤相互冗余等。
b)軟件冗余。例如軟件模塊的額外版本、同樣的系統軟件和應用程序在其他節點上并發運行等。
c)信息冗余。使用了額外位數的錯誤監測代碼,如CRC或RAID中的數據校驗塊,以及同樣數據信息被同樣復制或鏡像到多個不同的存儲節點上或多個不同的磁盤上等。
d)時間冗余。執行一個操作時,如果需要,可以再次執行。例如應用程序故障后的重啟執行。
存儲網絡如果出現軟、硬件故障,通過冗余的軟、硬件可以保證系統的可用性;如果數據信息出錯,可以通過冗余信息對其進行恢復來保證其可用性。
1.2日志技術
系統失效后的狀態恢復主要有基于日志的狀態恢復和基于檢查點的狀態恢復兩種。基于日志的方法不僅保存檢查點,而且把非事先決定的事件記錄下來;在恢復時,這些日志可以用來完全重現進程的執行狀態。消息日志法的基本思想是進程在失效后退回到一個無錯的檢查點狀態;在該狀態下重新處理先前處理過的消息(稱為重播)。消息日志包括悲觀日志和樂觀日志。悲觀消息日志法的特點是應用程序(進程)在處理消息前,必須保證消息已經記錄到安全的固定存儲器中。這種方法也稱為同步記錄。故障發生時,進程從最近的檢查點得到恢復,事件被重現,故障前的執行被完全再現。這種方法的優勢在于輸出提交不需要特殊協議,恢復過程非常簡單;缺點是同步記錄使得系統性能開銷太大。與悲觀日志法相反,樂觀日志法是假定故障之前消息記錄會完成,因此采用異步方法記錄消息。這種方法不會在記錄消息時阻塞進程的執行,性能更好。由于使用恢復策略、垃圾收集和輸出提交算法等,使其變得較復雜;進程失敗時,那些沒有來得及輸出到穩定存儲器的消息將丟失,造成無法恢復進程的狀態;如果消息發送者出現故障,發送消息時的狀態是不可恢復的狀態,因此消息接收方就變成了孤兒進程,必須一同回滾。
檢查點是一種允許進程在正常運行中,每隔一定時間間隔保存其狀態以減小失效恢復工作量的技術。當發生錯誤時,使用檢查點可使受影響的進程從最后一次保存的檢查點(狀態)而不是從進程開始重新運行[4]。
設置檢查點有幾要素:透明度、檢查點文件所包含的數據以及設置檢查點間隔。首先,檢查點可以是透明的并且在進程運行時自動插入,或由編譯器自動插入,或由應用程序的程序員手工插入。在透明方法中,檢查點由處理器地址狀態的全局快照構成,包括操作系統的所有動態數據。透明檢查點常常需要保存大量數據,有些數據是狀態恢復所必需的,有些則是不需要的。手工方法由程序員負責精確定義保存狀態恢復所必需的數據,這樣可顯著地減少檢查點的規模。只保存狀態恢復必要的數據降低檢查點文件所包含的數據量,對減少檢查點的開銷和增加檢查點的覆蓋范圍是至關重要的。增量式的檢查點切取只保存前一次檢查點切取后變化的部分,不變的部分則不保存,這樣可大大減少檢查點文件所包含的數據量。另一個重要要素是檢查點的時間間隔,即兩個連續檢查點之間的時間間隔。最佳檢查點間隔不易預計,因為它取決于幾個因素,如失效的頻率、系統工作負荷、整個完整檢查點的執行時間、檢查點開銷以及系統需要的可靠等級。另外,在設計或選取檢查點切取技術時,需要考慮三個方面的開銷,即系統正常時進行檢查點切取時間開銷、存儲檢查點文件時的存儲空間開銷、系統故障時運行檢查點文件的通信開銷。
在存儲網絡環境中,日志記錄并保存任意時刻服務器的動作序列(發送和接收的消息序列),系統任何時刻出現節點失效時,均可通過日志對接替節點的狀態進行恢復。但僅通過日志進行恢復,往往重播時間過長,而且可能重播的大多數請求動作早已完成。為此可將日志技術與檢查技術結合起來,減少系統節點失效恢復的時間。因為日志是記錄每一個I/O請求狀態信息,而檢查點是記錄該時刻系統請求隊列中的那些正在處理的請求(已處理完的不記錄)。其記錄機制和節點失效恢復過程如圖1和2所示。在圖2中,記錄n+1以前的記錄是檢查點j時,正在執行的請求記錄。
1.3復制技術
復制包括程序模塊的復制和數據文件的復制,在分布式系統中也稱為基于對象的復制。對象可以是一個數據文件,也可以是一個程序模塊,還可以是一個正在運行的進程模塊。從應答方式上可將復制分為以下兩種:
a)主動復制(active replication)。兩個或多個分布在不同節點上互為冗余的對象同時運行;每個冗余對象都會接收客戶的請求,執行操作,修改其對應的狀態,并發送應答。當有某個副本失效時,其余副本在失效副本缺席的情況下繼續工作。對于客戶的每個副本都應擁有相同的狀態。為了實現同步,一般采用組播保證所有副本按照相同的順序處理所有操作從而達到相同的狀態。主動復制的狀態同步過程如圖3所示。客戶向兩個互為冗余的對象object1、object2同時發出請求,它們執行請求,同步狀態,然后向客戶端發回應答。
b)被動復制(passive replication),又稱主從復制(primarybackup)。它包括兩個或多個冗余對象,其中一個稱主對象(primary),另一個稱備份對象(backup)。只有primary執行客戶請求并作出應答;backup在primary可用時不會執行客戶請求,客戶只與primary通信,由primary通過獨立通信路徑或共享檢查點文件來修改backup的內部狀態。Primary失效時,服務切換到一個backup上。其狀態轉換如圖4所示。
一個被復制的對象有多個副本,且不同的副本位于不同的節點上。被復制文件副本與緩存副本在概念上是不同的:復制對象副本總是與服務器節點或存儲節點相關,而緩存副本通常是與客戶相關的;緩存副本的存在主要依賴于對象存取模式的局部性,而復制副本的存在依賴于系統對可用性和性能的需求;與緩存副本相比,復制副本更可靠、持久、完整和精確。
復制技術能夠增加可用性、可靠性、可擴展性和操作的自治性;能夠減少網絡開銷,同時改進了響應時間和吞吐率。但是一個采用了復制技術的分布式存儲系統應當提供復制透明性,即被復制對象的副本數目及其位置對用戶是透明的,用戶看到的是一個單一系統映像。另外,支持復制技術的文件系統還應當解決多副本的一致性問題。
在分布式的存儲網絡環境下進行對象復制的關鍵問題是如何維護不同復制副本的一致性。如果一個客戶修改一個文件的拷貝,那么這個修改最終必須要傳播到所有的復制文件上。立即傳播可以確保復制的一致性,但代價很大,因為應用程序必須等到復制完成才能繼續執行。目前,大多數系統采用異步的復制技術。但是,如果在復制完成前,服務器或存儲節點崩潰失效,那么將出現不一致性問題。因此,異步復制是基于性能考慮的一種折中。基于復制的高可用文件系統的最大優點是即使發生網絡分區,系統仍可運行。網絡的失效可能造成系統分區,此時,分區內的成員只能互相聯系。在非復制的文件系統中,只有與文件服務器在一個分區的節點可以接受不間斷的文件服務,其他客戶只能等到網絡重新連接后才能接受文件服務。在復制的文件系統中,包含文件拷貝的分區仍可繼續操作。當所有的分區重新連接后,復制必須進行沖突解析。大多數沖突可以自動解析,但有些操作則必須人工處理,如對同一文件同時進行修改和刪除操作。
許多網絡文件系統支持復制,如Locus[5]、Ficus[6]。Locus允許一個文件在一個存儲節點集(SS)中被復制,并由一個當前同步點(CSS)進行協調。一個客戶在每次打開 和關閉文件時聯系CSS,CSS直接向包含此文件最近版本的一個SS發出請求。當一個文件在SS上被修改時,它通知其他SS進行后臺復制更新。CSS確保在復制更新過程中客戶不會訪問過時的復制數據。Locus可以通過在每個分區中配置一個CSS來容忍網絡分區。因為每個分區有自己的CSS,所以在網絡分區時,復制文件可能會收到沖突的修改請求。大多數沖突在網絡連接恢復后可以自動解析,但有些操作則必須由用戶處理。
Ficus的復制方法與Locus類似。Ficus異步更新文件復制,當修改的文件在后臺進行復制傳播時,應用程序可以繼續執行。Ficus定期運行一個調節程序以保證復制的一致性。顯然,在調節程序運行之前,客戶有可能訪問到陳舊的數據,Ficus認為這是性能與一致性之間的一種代價折中。調節程序在運行過程中會自動修改可以修改的復制沖突;否則它將向用戶報錯。
1.4安全技術
如何保證存儲網絡中的數據信息不被非法修改和破壞是存儲網絡高可用性所面臨的另一個關鍵問題之一。如果沒有安全技術保障,存儲網絡有可能受黑客、病毒,或人為破壞,不能保證用戶所存信息的完整性,即不能保證系統所存信息對用戶的可用性。系統安全與系統可用性之間的關系如圖5所示。
目前有多種解決存儲網絡安全的技術,如防火墻技術、身份論證技術、入侵監測技術等。下面主要介紹前兩種安全技術:
a)防火墻技術在Internet開放網絡環境下,存儲網絡安全性的核心問題是整個存儲網絡能否得到控制,即是不是任何一個IP地址的用戶都能進入存儲網絡。通過Internet網絡對存儲網絡系統進行訪問時,每個用戶都會被分配一個獨立的IP地址,這個IP地址能夠大致表明用戶的來源地址和來源系統。目標站點通過對來源IP分析,能夠初步判斷來自這一IP的數據是否安全,是否會對本網絡系統造成危害,以及來自這一IP的用戶是否有權使用本網絡的數據。一旦發現某些數據來自不可信任的IP地址,系統便會自動將這些數據阻擋在系統之外;并且大多數系統能夠自動記錄那些曾經造成過危害的IP地址,使得它們的數據免于遭受第二次危害。用于解決企業內部存儲網絡層安全性問題的主要技術是使用防火墻技術。防火墻的主要目的在于判斷來源IP,將危害或未經授權的IP數據拒之于系統之外,而只讓安全的IP數據通過。一般來說,公司的內部存儲網絡若與Internet相連,則應該在兩者之間設置防火墻,以防止內部存儲網絡的可用性被破壞。到目前為止,防火墻的研究已較為成熟,大量的相關產品已投入使用。
b)身份認證技術
為了保證存儲網絡的安全性,必須對其主要功能組件(AS(應用服務器)、MS(元數據服務器)、ND(網絡設備)和SD(存儲設備))之間相互認證和授權訪問,在各個功能組件之間建立安全通信。
按照基于不同的密碼體制,常用的安全認證系統架構分成Kerberos和PKI/CA兩大類[7]。Kerberos采用對稱密碼體制;PKI/CA采用非對稱密碼體制。
Kerberos上一種為網絡通信提供可信第三方服務的面向開放系統的認證機制,主要由三大部分組成,即認證部分、記賬部分、審記部分。其基本認證過程如圖6所示:①用戶向認證服務器驗證自己的身份;②通過認證服務器確認后,用戶獲得一張身份許可證票據,也叫初始票;③客戶端將身份許可票據提交發放服務器;④確認有效后,獲得特定應用服務器的許可票據,也叫短票;⑤⑥利用短票來實現應用服務器與客戶之間的相互認證。通過認證后,客戶可以通過應用服務器訪問存儲網絡。
PKI/CA是利用公鑰技術實現安全通信的一種認證體系,它由公開密鑰密碼技術、數字證書、證書發放機構(CA)和關于公開密鑰的安全策略等基本成分共同組成的。PKI架構主要采用證書管理公鑰,通過第三方的可信任機構——認證中心CA(certificate authority),把用戶公鑰與用戶的其他標志信息捆綁在一起,在Internet上驗證用戶的身份。其認證過程如圖7所示,客戶端和服務器各自向CA申請一張證書,證書將實體的公鑰以及相關信息與實體名稱相綁定,使用CA服務器的私鑰簽名發放這張證書。客戶端與服務器建立安全通信前先交換證書,利用CA的根證書相互驗證證書的有效性和合法性。完成證書檢驗后,服務器和客戶端需要通過檢查對方是否擁有該證書綁定的公鑰對應的私鑰,來進一步對用戶身份進行驗證。在存儲網絡環境中,如果客戶端通過認證后,可以在客戶端通過應用服務器訪問存儲網絡系統。
1.5負載平衡技術
在高可用存儲網絡系統中,負載平衡技術具有舉足輕重的地位。由于存儲網絡中I/O任務的隨機性和各存儲節點運行狀態的不可預測性,在系統運行一段時間后,可能導致某些存儲節點負載過重,而有些節點狀態空閑。這種負載不勻衡現象影響了系統的使用率,使得系統性能得不到充分發揮,有時使某些存儲節點對用戶不可用。例如,存放媒體信息的存儲節點,當點擊用戶數太多時,由于帶寬的限制,對后來點擊的用戶來講,存儲節點不可用。為了避免此類情況的發生,在高可用的存儲網絡中需要采用負載平衡的方法。所謂負載平衡,就是使資源的負載相互均衡,在存儲網絡系統處理能力范圍內,既沒有哪個資源的負載過重,也沒有哪個資源處于空閑狀態。
對整個存儲網絡系統來說,根據各存儲節點的忙閑來選擇節點并分配I/O任務,這樣可以做到系統資源的充分利用,縮短I/O請求的平均響應時間,提高整個存儲網絡系統的吞吐率;對單個并行I/O的運行來說,可以提高系統的執行速度,減少執行時間;對單個存儲節點來講可以提高其可用性。
存儲網絡的負載平衡應該從以下幾個方面加以解決:
a)首先要定義好存儲網絡系統中哪些因素影響系統運行的負載。在存儲網絡系統中影響整個系統負載的因素有服務器、存儲節點和數據路徑。
b)選擇相應的方法和策略來解決系統的負載平衡問題。主要選擇相應的I/O調度算法將I/O請求均勻分布在各個存儲節點上,使每個存儲節點都能很好地工作,不會因為負載過重而不可用。
c)存儲網絡系統具有可擴展性,所選擇的I/O負載平衡調度算法也應是可擴展的。也就是當系統有新節點加入或有失效節點退出時,使I/O請求能在正常工作節點上很好地分配。
d)I/O負載平衡調度算法的開銷對系統性能的提高影響,是設計算法時考慮的重要參數之一。另外,所設計的I/O負載平衡調度算法必須是穩定可靠的,不會因為開銷過大,或穩定性差對系統整體性能造成影響。
根據平衡決策與系統負載的當前狀態是否相關,負載平衡算法可分為靜態平衡和動態平衡兩大類。靜態平衡調度是根據以往的經驗或系統本身信息的收集,把任務分配給各個節點。常用的靜態平衡算法有概率平衡、隨機平衡、排隊等。靜態平衡算法與系統當前狀態無關,最大的好處是系統開銷小;缺點是沒有考慮系統動態變化信息,帶有一定的盲目性,準確性和通用性較差。動態平衡調度則取決于系統當前的運行狀態,根據當前負載分布情況,指導任務分配。在存儲網絡中,它通常包含兩個組成部分,即存儲節點負載信息的收集和I/O調度決策。根據負載信息收集的不同可將動態負載算法分為集中式和分布式兩種。集中式策略將執行動態負載平衡的功能集中在系統的某一節點上,由它不斷地監測整個系統的負載信息,根據監測結果來平衡負載;分布式策略由若干個節點(AS或MS)共同參與完成負載信息的收集和節點決策,它又可分為發送者驅動和接收者驅動。節點主動向其他節點報告自身負載信息稱為發送者驅動方式;負載輕的節點請求執行任務稱為接收者驅動方式。
根據I/O任務的分配方式負載平衡算法又可分為roundrobin(輪轉法)和貪婪調度分配算法等。輪轉法是簡單地把I/O請求在一串節點中進行線性輪流分配;貪婪調度分配算法是對處理能力強的節點可以多分配I/O請求,而處理能力差的節點少分配I/O請求。它們往往與靜態和動態調度算法相結合。
根據算法實現的難易程度,負載平衡算法分為簡單平衡算法和高級平衡算法。簡單平衡算法選擇一個節點,然后將新請求發送給它。有些簡單平衡算法可以獨立使用,有些必須與其他簡單或高級算法組合使用。簡單平衡算法主要有加權法、隨機法、輪轉法、散列法和最少連接法等。高級平衡算法組合使用前面的簡單算法,它們可以基于特定應用或特定系統。它們組合使用簡單算法和其他資源,構建優化的集群,提供更有用、更實際的網絡負載平衡。其主要算法有網絡流量優化算法、公平負載分布算法、網絡路由優化、響應延遲最小化等。
1.6系統失效偵測與失效處理技術
系統失效偵測與失效處理是存儲網絡高可用的重要內容。特別是分布式的存儲網絡環境中,要保持整個系統的高可用性,必須有有效的失效偵測手段和失效恢復處理技術。其失效偵測與失效處理主要包括失效監測、失效診斷和定位、失效消除和恢復三個階段。失效偵測可以采用被動偵測和主動偵測兩種方式。
被動偵測方式是周期性地采集和分析由操作系統及系統各部件收集的狀態信息,查找出異常值,并應用一套預定義的規則將可能的部件或模塊的狀態反映為錯誤狀態。其常見方式是心跳(heart beat)和agent技術。目前高可用系統中普遍采用heart beat技術來偵測系統的工作狀態;agent則用于監測系統中各個不同功能部件的工作狀態。其被動偵測方式如圖8所示。Agent在固定間隔時間向被監控對象發送探測消息。如果在給定的時間范圍內得不到應答消息,將認為該被監控對象有問題并記錄該信息;然后等待監控對象查尋并返給監控對象;最后由監控對象通過一定的機制來進行失效恢復。各個地區監控對象之間、各個agent之間和各個被監控對象之間可通過heart beat互相監控。
主動偵測方式是周期性地對系統各部件執行一些相對應的測試來監測出系統各部件所出現的問題。這種方式需要對系統各部件有一個深入的了解,不太適應存儲網絡這種異構的環境。同時當系統某一部件進行升級時,還需要對相應的監測代碼進行升級。當系統中各部件出現短暫失效時,主動方式就不是十分有效。
主動偵測工作方式如圖9所示。各個被監控對象周期性地向監控對象發送心跳信號;監控對象在一定時間間隔里收到心跳信號,認為被監控對象是正常的,否則懷疑并認為被監控對象失效。
2結束語
隨著網絡及相關技術的發展,存儲網絡在企業的經營活動中充當越來越重要的角色。因為企業需要依靠存儲網絡來存放重要的數據信息,這些信息是企業的重要財富;存儲網絡一旦故障將引起企業出現重大損失甚至破產,所以企業必須構建高可用的存儲網絡系統。安全技術、負載平衡技術在存儲網絡高可用系統設計中考慮較少,但隨著多種網絡存儲技術(NAS、SAN、基于IP的SAN和對象存儲等)融合在一起構造的復雜網絡存儲系統的應用普及,它們在存儲網絡高可用系統設計中的重要性變得越來越重要。
參考文獻:
[1]韓德志, 耿紅琴,李懷陽. 高可用存儲性網絡技術探析[J]. 計算機應用研究, 2004,21(8):22-26.
[2]韓德志,汪洋,謝長生,等. 遠程備份及關鍵技術探析[J]. 計算機工程, 2004,30(22):34-36.
[3]韓德志, 謝長生, 李懷陽. 存儲備份技術探析[J]. 計算機應用研究, 2004,21(6):1-4,7.
[4]HUANG Kai, XU Zhiwei. Scalable parallel computing: technology, architecture, programming[M].CA,USA:McGrawHill Press,1998:128180.
[5]POPEK G, WALKER B, CHOW J,et al. Locus a network transpa ̄rent, high reliability distributed system[C]//Proc of the 8th ACM Symposium on Operating Systems Principles.NY,USA:ACM Press,1981:169181.
[6]GUY R G, HEIDEMANN J S. Implementation of the ficus replicated file system[C]//Proc of the USENIX Conference. Anaheim, California:AAAI Press, 1990:168176.
[7]陳魯生,沈世鎰. 現代密碼學[M]. 北京: 科學出版社,2002:28166.
注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”