專利名稱:一種基于hpi模型的熱插拔處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機熱插拔技術(shù)領(lǐng)域,特別是在電信領(lǐng)域的高可用ATCA電信服務(wù)器中的一種在熱插拔處理策略的設(shè)計與實現(xiàn)技術(shù),具體地說,本發(fā)明設(shè)計了一種以HPI模型為基礎(chǔ)的新的熱插拔處理方法。
背景技術(shù):
隨著計算機技術(shù)的快速發(fā)展,網(wǎng)絡(luò)用戶對電信系統(tǒng)可用性提出了更高的要求——具有提供連續(xù)服務(wù)的能力;這種能力要求系統(tǒng)的年宕機時間不得超過30秒。為了滿足這種需求提高服務(wù)的高可用性,在不關(guān)閉系統(tǒng),不切斷電源的情況下取出和更換損壞的風扇、電源、硬盤和內(nèi)存等系統(tǒng)組件成為電信領(lǐng)域關(guān)注的一種技術(shù);這就是所謂的熱插拔技術(shù)。熱插拔技術(shù)包括熱拔出和熱插入。
Windows和Linux操作系統(tǒng)中都對USB、Ieee1394、PCI設(shè)備和網(wǎng)路設(shè)備有了較好的熱插拔處理。
Linux中熱插拔的設(shè)計是分為三層的首先是驅(qū)動層,為了配置一個熱插拔設(shè)備,它必須首先被創(chuàng)建并注冊到內(nèi)核中;這項任務(wù)通常由相關(guān)的設(shè)備驅(qū)動完成。這些設(shè)備的驅(qū)動為了支持熱插拔都進行了相應(yīng)的改動。其次是中間層的熱切換處理程序,這是熱插拔技術(shù)的重點。最上層,Linux的熱插拔子系統(tǒng)借助shell和系統(tǒng)用戶進行交互。
Linux中熱切換處理程序的處理分為以下幾步檢測系統(tǒng)總線上設(shè)備的變化和熱插拔狀態(tài);
處理設(shè)備的插入或拔出事件;通知操作系統(tǒng)加載或卸載相應(yīng)設(shè)備的驅(qū)動。
Windows系統(tǒng)中(以Windows2000為例)熱插拔系統(tǒng)可以分為兩層驅(qū)動層和熱切換處理層。在Windows2000中為了支持熱插拔在內(nèi)核中集成了熱插拔工具集(Hot Swap Kit,簡稱HSK由Pigeon Point Systems and Auriga開發(fā))。HSK完成了類似于Linux中熱切換處理和命令交互層的功能。
HSK的處理機制可以簡要概述為以下幾點確認系統(tǒng)總線上設(shè)備的數(shù)目和熱插拔狀態(tài);在硬件為了支持熱插拔增加了熱插拔控制狀態(tài)寄存器(HS_CSR);捕獲并處理電信號或者處理拔出操作請求;通知操作系統(tǒng)系統(tǒng)總線上設(shè)備的變化;操作系統(tǒng)根據(jù)相應(yīng)變化加載或者卸載相應(yīng)設(shè)備的驅(qū)動;預(yù)留了API便于其它程序進行熱插拔狀態(tài)查詢。
Windows和Linux中的熱插拔處理機制基本相同,然而都是只解決了設(shè)備的拔出和插入問題。對于拔出操作或插入操作對系統(tǒng)的影響考慮的遠遠不夠,然而這些影響對提供高可用服務(wù)的系統(tǒng)來說是至關(guān)重要的。
HPI模型是2002年9月份服務(wù)可用性論壇發(fā)布的HPI規(guī)范中提到的,它主要是通過統(tǒng)一的抽象機制來對服務(wù)器硬件進行統(tǒng)一的管理,從而對上層應(yīng)用和中間件屏蔽硬件差異;提高電信系統(tǒng)的可靠性和服務(wù)的高可用性。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有熱插拔技術(shù)在拔出操作或插入操作時對系統(tǒng)的影響,提供一種熱插拔處理策略并將之高效實現(xiàn),使系統(tǒng)能在運行中更換損壞的組件進而使用戶能夠得到不間斷的系統(tǒng)服務(wù)。
為了實現(xiàn)上述發(fā)明目的,采用的技術(shù)方案如下一種基于HPI模型的熱插拔處理方法,包括熱插入和熱移出,所述處理方法包括邏輯域分隔機制及熱插拔處理機制;所述邏輯域分隔機制將熱插拔組件抽象為實體以資源的方式進行邏輯上的分組管理,資源再進行分組以域的方式管理,當熱拔出時,所述邏輯域分隔機制對域?qū)ο蠛唾Y源對象的訪問加以控制,保證了組件的移出不影響系統(tǒng)服務(wù)的可用性;熱插拔處理機制與邏輯域分隔機制交互,實現(xiàn)對邏輯域的初始化,使系統(tǒng)組件處于不同的邏輯域中,并負責對熱插入和熱移出過程中組件的狀態(tài)進行控制,保證了組件的插入和移出不影響系統(tǒng)服務(wù)的可用性。
所述邏輯域分隔機制把系統(tǒng)組件劃分為多個邏輯域,并在建立邏輯域的同時為每個一級邏輯區(qū)域——域建立了域參照表,為二級邏輯區(qū)域——資源建立了資源出席表;域參照表記錄與自身有聯(lián)系的域,并控制對域?qū)ο蟮脑L問;資源出席表則記錄域中的所有資源,并控制對資源對象的訪問。
所述邏輯域分隔機制將系統(tǒng)的冗余組件作為獨立的簡單邏輯域。
冗余組件可以是板級的冗余,也可以是熱插拔組件的冗余。
本發(fā)明所述的基于HPI模型的熱插拔處理方法,當組件熱移出時,所述熱插拔處理機制將該組件實體對應(yīng)的資源移出資源出席表,然后刷新資源出席表,使得所有與該實體的交互終止運行;接著,把含有移出組件的冗余的簡單邏輯域描述信息加入到該組件的域參照表中,使得其它組件仍然可以訪問到移出組件對應(yīng)的實體。
所述熱插拔處理機制對熱插入和熱移出過程中組件的狀態(tài)控制包括將狀態(tài)分為不存在狀態(tài)、插入掛起狀態(tài)、激活狀態(tài)、拔出掛起狀態(tài)、非激活狀態(tài);所述不存在狀態(tài)可轉(zhuǎn)換到插入掛起狀態(tài),插入掛起狀態(tài)可轉(zhuǎn)換到激活狀態(tài),激活狀態(tài)可轉(zhuǎn)換到拔出掛起狀態(tài),拔出掛起狀態(tài)可轉(zhuǎn)換到非激活狀態(tài),所述插入掛起狀態(tài)、激活狀態(tài)、拔出掛起狀態(tài)、非激活狀態(tài)均可轉(zhuǎn)換到不存在狀態(tài)。
所述熱插拔處理機制的熱插入過程包括加載驅(qū)動及用戶層熱插拔控制;所述加載驅(qū)動當新插入一個組件后,設(shè)備驅(qū)動程序的中斷服務(wù)程序接受到信號后掃描整個CompactPCI總線,掃描完畢通過內(nèi)核函數(shù)request_module調(diào)用call_usermodehelper與用戶空間進行交互,內(nèi)核函數(shù)request_module把arg[1]初始化成將要加載模塊的名字,然后利用/sbin/modprobe和配置文件/etc/modprobe.conf來確定將要加載模塊的詳細信息;所述用戶層熱插拔控制通過Addresource命令調(diào)用函數(shù)ResourceAdd將插入組件所對應(yīng)的FRU實體加入到域中,ResourceAdd函數(shù)加入新實體的操作執(zhí)行完畢后,會自動調(diào)用Rptflush函數(shù)來刷新建立邏輯域時所維護的的資源出席表,最后執(zhí)行命令hotplug—>active,該命令會調(diào)用ResourceActive函數(shù)激活新的實體使之在域中處于活躍狀態(tài),正常提供服務(wù)。
所述熱插拔處理機制的熱移出過程先定位移出組件所對應(yīng)的邏輯模型所處的邏輯域;并執(zhí)行Inactive指令鈍化改組件,終止其它組件與其產(chǎn)生的會話;然后將資源移出所處的邏輯域,即從域所維護的資源出席表中剔除該組件;再刷新資源出席表,使所有與該組件所對應(yīng)實體的交互都終止運行;最后將該組件的冗余組件所在的邏輯域信息加入該組件所在域維護的域參照表中,使得其它應(yīng)用可以通過層次域訪問的模式訪問到該組件。
本發(fā)明借助HPI模型對ATCA硬件的邏輯抽象,把ATCA服務(wù)器系統(tǒng)成功劃分了多個邏輯域。并在建立邏輯域時需要將ATCA服務(wù)器的冗余組件單獨作為獨立的簡單域。冗余的組件可以是板級的冗余,也可以是熱插拔組件的冗余。主要包括兩部分,一是邏輯域分隔機制;二是熱插拔處理。本發(fā)明的熱插拔方法對于提高電信服務(wù)器的高可用性有重要的意義,本發(fā)明以不停止系統(tǒng)運行為宗旨,將損壞的系統(tǒng)組件移出系統(tǒng)進行修復(fù),并在組件修復(fù)完成后將其動態(tài)的加入系統(tǒng)。整個過程中保證系統(tǒng)服務(wù)不中斷,系統(tǒng)的可用性得以增強。
本發(fā)明能夠不停止處于運行狀態(tài)的系統(tǒng),對目標系統(tǒng)組件進行熱插入和熱移出,降低系統(tǒng)的宕機時間,提高系統(tǒng)的可靠性,使之能高效、穩(wěn)定地運行于電信服務(wù)平臺,滿足高可用的運行環(huán)境需求。
圖1為熱插拔整體框架圖;圖2為邏輯隔離結(jié)構(gòu)圖;圖3為熱插拔狀態(tài)遷移圖;圖4為熱插入處理流程圖;圖5為熱移出處理流程圖。
具體實施例方式
本發(fā)明中熱插拔的處理需要操作系統(tǒng)和用戶層的熱插拔處理程序協(xié)作完成。操作系統(tǒng)主要負責在系統(tǒng)中插入新設(shè)備時加載對應(yīng)的驅(qū)動;在卸載損壞組件時用戶層的熱切換處理程序會通知內(nèi)核卸載對應(yīng)的驅(qū)動。熱插拔處理程序首先要進行邏輯域的初始化,使系統(tǒng)組件處于不同的邏輯域中;然后要負責對熱插入和熱移出過程中組件的狀態(tài)進行控制,對系統(tǒng)應(yīng)用的可用性進行維護;最終實現(xiàn)熱插拔提高電信系統(tǒng)的可用性。
本發(fā)明所設(shè)計的熱插拔技術(shù),其功能特點可以細分為如下幾個方面(1)邏輯域分隔熱插拔技術(shù)要求進行熱插拔操作的組件與系統(tǒng)其它組件不能有太多的交互。否則熱插拔操作可能會影響系統(tǒng)服務(wù)的可用性?;诖吮景l(fā)明對ATCA服務(wù)器系統(tǒng)進行了邏輯上的隔離。邏輯域分隔為熱移出奠定了基礎(chǔ)。
(2)動態(tài)加載熱插拔技術(shù)可以在不停止系統(tǒng)的情況下,將新的組件加入系統(tǒng)并使之正常運作。
(3)動態(tài)卸載熱插拔技術(shù)也可以在不停止系統(tǒng)的情況下,將損壞的并且硬件上支持熱插拔的系統(tǒng)組件移出系統(tǒng)。在移出過程中維護服務(wù)的可用性。
(4)應(yīng)用的遷移應(yīng)用的遷移,在熱插拔處理過程中是重要的一環(huán)。每一個組件的移出都會對系統(tǒng)服務(wù)產(chǎn)生或多或少的影響,這就需要采取一定的策略對可能產(chǎn)生的影響進行處理。
下面結(jié)合附圖,對本發(fā)明的具體實施做進一步的詳細描述。
附圖1展示了熱插拔機制的體系結(jié)構(gòu)和主要組成部分。分為三個層次支持熱插拔的驅(qū)動層、熱插拔處理層、命令交互終端。其中,驅(qū)動層幫助應(yīng)用程序?qū)崿F(xiàn)對熱插拔組件的管理,熱插拔處理層負責對熱插拔狀態(tài)遷移的控制和組件的切換,命令交互終端則提供系統(tǒng)用戶和熱切換處理程序的交互管理。
下面將針對各個關(guān)鍵組成部分進行對本發(fā)明的熱插拔處理機制進行詳細的介紹。
本發(fā)明的熱插拔處理機制是以HPI模型對硬件的管理為基礎(chǔ),將熱插拔組件抽象為實體以資源的方式進行邏輯上的分組管理。資源也可以再進行分組以域的方式管理。邏輯上的分隔為熱插拔處理奠定了良好的基礎(chǔ)。本發(fā)明中的熱插拔機制遵循了HPI規(guī)范中定義的完全熱插拔模型,完全熱插拔模型的采用對提高系統(tǒng)的服務(wù)的可用性有重要意義。
附圖2給出了對ATCA服務(wù)器進行邏輯隔離的示意圖。這些邏輯上的分區(qū)和ATCA硬件有對應(yīng)關(guān)系(在HPI-to-AdvancedTCA Mapping Specification中對如何建立二者的映射有詳細的說明)。這種邏輯上的組件分隔主要是對組件的交互進行控制,以便于方便的拔出組件。其次建立邏輯域的同時為每個一級邏輯區(qū)域——域建立了域參照表,為二級邏輯區(qū)域——資源建立了資源出席表。域參照表記錄與自身有聯(lián)系的域,資源出席表則記錄域中的所有資源;它們分別對域?qū)ο蠛唾Y源對象的訪問加以控制。這兩個表的建立為拔出損壞的組件并進行快速的組件切換奠定了基礎(chǔ)。
在ATCA服務(wù)器中一般把一個可熱插拔的現(xiàn)場可替換單元(現(xiàn)場可替換單元可用來代之熱插拔的系統(tǒng)組件,即每一個可熱插拔的系統(tǒng)組件都可以看作是一個現(xiàn)場替換單元,又稱FRU)抽象為一個資源;當系統(tǒng)中的組件發(fā)生故障后,依據(jù)實體路徑快速的定位到該實體所處的資源。定位到損壞的組件后,只需要將該實體對應(yīng)的資源移出資源出席表,然后刷新資源出席表,這樣所有與該實體的交互都會終止(因為資源是可以熱插拔的,而實體則不能,所以為了提供可靠的服務(wù)直接進行資源的熱插拔)。接著,把含有損壞組件的冗余的簡單域描述信息——加入損壞組件的域參照表中,這樣其它組件仍然可以訪問到相應(yīng)的實體。組件的切換對上層應(yīng)用來說是透明的。圖2是對這一過程的詳細描述;由于ATCA服務(wù)器本身基于冗余的架構(gòu)進行設(shè)計,一般把冗余的組件分隔為一個獨立的簡單域(如圖2所示,資源2的冗余組件處于一個簡單域中)。當資源2發(fā)生故障被移出資源出席表后,同時會將域B加入到域A的域參照表中,這樣系統(tǒng)對資源2的訪問仍可繼續(xù),從而保證了損壞組件的移出不影響系統(tǒng)服務(wù)的可用性。當然并非所有的系統(tǒng)組件都有冗余,但是這些沒有冗余的組件一般是對系統(tǒng)服務(wù)影響很小或者不易發(fā)生故障的設(shè)備。同時為了保證系統(tǒng)的可用性對于這種例外采用了板級冗余的方式(即在構(gòu)建系統(tǒng)時,用一到兩個單板作為冗余板),進而采用單板的熱插拔來保證系統(tǒng)服務(wù)的高可用性。
附圖3給出了熱切換的狀態(tài)轉(zhuǎn)換示意圖。通過該示意圖,可以看到本發(fā)明中熱插拔策略所支持的五個遷移狀態(tài)和可能的遷移關(guān)系。
不存在不存在狀態(tài)實際上是一個虛擬的狀態(tài),它表示某一資源已經(jīng)不在當前邏輯域中。處于這一狀態(tài)的資源是指現(xiàn)場可替換單元(FRU)物理上被插入之前的狀態(tài)或者它已經(jīng)被從系統(tǒng)的資源出席表中移出。支持完全熱插拔模型的資源可以從非激活態(tài)(INACTIVE)遷移到這一狀態(tài),但是如果產(chǎn)生意外拔出的話,資源可以從任意狀態(tài)(插入掛起、激活、拔出掛起)轉(zhuǎn)換到這一狀態(tài)。當資源熱插拔狀態(tài)遷移到不存在狀態(tài)時會發(fā)布HS STATE NOT_PRESENT熱插拔事件。這一事件可以說明正常的遷移或者意外的遷移。正常遷移時事件級別為Information_normal。當與FRU相關(guān)的資源失效后,所有的域都會發(fā)現(xiàn)FRU的“不存在”狀態(tài),并報告一個遷移到不存在狀態(tài)的事件。如果資源隨后被恢復(fù),系統(tǒng)將會偵測到FRU,并報告另一個遷移事件(從不存在到當前的熱插拔狀態(tài))。
插入掛起當一個支持完全熱插拔的資源在物理上被插入系統(tǒng)中并且在邏輯上被添加到某個域中可管理后就稱之進入熱插拔插入掛起狀態(tài)。這一狀態(tài)表明,有新的設(shè)備加入系統(tǒng)并進行了邏輯上的處理。當進入插入掛起狀態(tài)后,相應(yīng)資源發(fā)布HS_STATE_INS_PENDING事件。物理上當設(shè)備進入插槽后產(chǎn)生該事件。當系統(tǒng)控制臺接受到該事件后,系統(tǒng)管理員在通過FRU給該資源加電前可以查看該資源的能力。在這一狀態(tài)FRU可以執(zhí)行上電和復(fù)位操作。
激活激活態(tài)表示資源是域中一個活躍的成員。當FRU完成硬件連接過程后,相關(guān)的資源進入激活狀態(tài)。但是這并不意味FRU在軟件層是激活的,這僅表明FRU在系統(tǒng)中已經(jīng)上電且處于活躍態(tài),不能隨意拔掉,還需要進行軟件上的激活操作。當進入激活狀態(tài)后,資源會發(fā)布產(chǎn)HS_STATE_ACTIVE事件。
拔出掛起拔出掛起狀態(tài)表示系統(tǒng)資源請求拔出與之相關(guān)的FRU,一般在按下熱插拔按鈕后進入拔出掛起狀態(tài)。同時產(chǎn)生熱插拔事件HS_STATE_EXT_PENDING。當受到這一事件后HPI用戶可以卸載驅(qū)動,重新分配處理器或者卸載文件系統(tǒng)(斷開軟件連接);然后下電斷開物理連接將資源拔出。
非激活態(tài)非激活態(tài)表示支持完全熱插拔的資源在系統(tǒng)中是不活躍的,并且它已經(jīng)完成了拔出處理。當一個FRU實現(xiàn)硬件上的斷開后,它在邏輯上和電氣特性方面是和平臺隔離的,但是從物理上看它仍在系統(tǒng)平臺內(nèi),所以相關(guān)的域中仍然存在該資源。當資源的熱插拔狀態(tài)遷移到非激活態(tài)后會產(chǎn)生事件HS_STATE_INACTIVE。
附圖4給出了熱插拔過程中熱插入的執(zhí)行流程圖。事實上,這是熱插拔處理程控制支持熱插拔的組件加入系統(tǒng)的實現(xiàn)過程。
首先是驅(qū)動層,這一般由ATCA硬件設(shè)備供應(yīng)商負責實現(xiàn),每個設(shè)備供應(yīng)商都會為自己的硬件提供良好的驅(qū)動程序加以支持,只需對其進行適當?shù)木幾g即可。當向ATCA服務(wù)器插入一個FRU實體后,新的實體插入后會發(fā)出電信號,設(shè)備驅(qū)動程序的中斷服務(wù)程序接受到信號后開始執(zhí)行;中斷服務(wù)程序掃描整個CompactPCI總線,讀取熱切換寄存器,清除相應(yīng)狀態(tài),并根據(jù)設(shè)備的INS/EXT狀態(tài)位建立設(shè)備變更清單,通知熱切換處理線程。熱切換處理線程讀取設(shè)備變更清單,會發(fā)現(xiàn)有剛插入的設(shè)備,然后通知操作系統(tǒng)重新掃描CompactPCI總線,掃描完畢操作系統(tǒng)會通過內(nèi)核函數(shù)request_module調(diào)用call_usermodehelper與用戶空間進行交互。這個函數(shù)會把arg[1]初始化成將要加載模塊的名字,然后利用/sbin/modprobe和配置文件/etc/modprobe.conf來確定將要加載模塊的詳細信息。驅(qū)動模塊加載完畢后移交給用戶空間的熱切換處理程序進行其余的操作。
熱切換處理程序中的守護進程會發(fā)現(xiàn)新加入的FRU實體,并向系統(tǒng)控制臺發(fā)送消息告訴系統(tǒng)管理員有新的實體加入系統(tǒng)。系統(tǒng)管理員等待操作系統(tǒng)加載驅(qū)動完畢后,通過Addresource命令調(diào)用函數(shù)ResourceAdd將FRU實體加入到某個域中(域的選擇可以依據(jù)管理員自身的習慣,因為系統(tǒng)初始化時域的劃分也完全由系統(tǒng)管理員決定)。ResourceAdd函數(shù)加入新實體的操作執(zhí)行完畢后,會自動調(diào)用Rptflush函數(shù)來刷新建立邏輯域時所維護的的資源出席表(RPT表)。最后系統(tǒng)管理員在系統(tǒng)控制臺執(zhí)行命令hotplug—>active,該命令會調(diào)用ResourceActive函數(shù)激活新的實體使之在域中處于活躍狀態(tài),正常提供服務(wù)。
附圖5給出了熱插拔過程中熱拔出的執(zhí)行流程圖,事實上,這是熱插拔處理程控制支持熱插拔的組件移出系統(tǒng)的實現(xiàn)過程。
首先仍然是驅(qū)動層,在這里主要描述熱切換程序的移出處理過程。要對組件進行熱移出,需要根據(jù)實體路徑來定位在邏輯域中組件的相應(yīng)位置。詳細過程如圖5所示,可以簡要概括為以下幾點定位組件對應(yīng)的邏輯模型所處的邏輯域;執(zhí)行Inactive指令鈍化改組件,終止其它組件與其產(chǎn)生的會話;將資源移出所處的邏輯域;即從域所維護的資源出席表中剔除該組件;刷新資源出席表;卸載驅(qū)動,從物理上拔出組件;將該組件的備份組件所在的邏輯域信息加入該組件所在域維護的域參照表中;這樣上層的應(yīng)用就可以通過層次域訪問的模式訪問到該組件。這一過程維護了系統(tǒng)服務(wù)的可用性;重新加載驅(qū)動;保證備份組件正常工作。
權(quán)利要求
1.一種基于HPI模型的熱插拔處理方法,包括熱插入和熱移出,其特征在于所述處理方法包括邏輯域分隔機制及熱插拔處理機制;所述邏輯域分隔機制將熱插拔組件抽象為實體以資源的方式進行邏輯上的分組管理,資源再進行分組以域的方式管理,當熱拔出時,所述邏輯域分隔機制對域?qū)ο蠛唾Y源對象的訪問加以控制,保證了組件的移出不影響系統(tǒng)服務(wù)的可用性;熱插拔處理機制與邏輯域分隔機制交互,實現(xiàn)對邏輯域的初始化,使系統(tǒng)組件處于不同的邏輯域中,并負責對熱插入和熱移出過程中組件的狀態(tài)進行控制,保證了組件的插入和移出不影響系統(tǒng)服務(wù)的可用性。
2.根據(jù)權(quán)利要求1所述的基于HPI模型的熱插拔處理方法,其特征在于所述邏輯域分隔機制把系統(tǒng)組件劃分為多個邏輯域,并在建立邏輯域的同時為每個一級邏輯區(qū)域——域建立了域參照表,為二級邏輯區(qū)域——資源建立了資源出席表;域參照表記錄與自身有聯(lián)系的域,并控制對域?qū)ο蟮脑L問;資源出席表則記錄域中的所有資源,并控制對資源對象的訪問。
3.根據(jù)權(quán)利要求2所述的基于HPI模型的熱插拔處理方法,其特征在于所述邏輯域分隔機制將系統(tǒng)的冗余組件作為獨立的簡單邏輯域。
4.根據(jù)權(quán)利要求3所述的基于HPI模型的熱插拔處理方法,其特征在于冗余組件可以是板級的冗余,也可以是熱插拔組件的冗余。
5.根據(jù)權(quán)利要求2或3或4所述的基于HPI模型的熱插拔處理方法,其特征在于當組件熱移出時,所述熱插拔處理機制將該組件實體對應(yīng)的資源移出資源出席表,然后刷新資源出席表,使得所有與該實體的交互終止運行;接著,把含有移出組件的冗余的簡單邏輯域描述信息加入到該組件的域參照表中,使得其它組件仍然可以訪問到移出組件對應(yīng)的實體。
6.根據(jù)權(quán)利要求1所述的基于HPI模型的熱插拔處理方法,其特征在于所述熱插拔處理機制對熱插入和熱移出過程中組件的狀態(tài)控制包括將狀態(tài)分為不存在狀態(tài)、插入掛起狀態(tài)、激活狀態(tài)、拔出掛起狀態(tài)、非激活狀態(tài);所述不存在狀態(tài)可轉(zhuǎn)換到插入掛起狀態(tài),插入掛起狀態(tài)可轉(zhuǎn)換到激活狀態(tài),激活狀態(tài)可轉(zhuǎn)換到拔出掛起狀態(tài),拔出掛起狀態(tài)可轉(zhuǎn)換到非激活狀態(tài),所述插入掛起狀態(tài)、激活狀態(tài)、拔出掛起狀態(tài)、非激活狀態(tài)均可轉(zhuǎn)換到不存在狀態(tài)。
7.根據(jù)權(quán)利要求1所述的基于HPI模型的熱插拔處理方法,其特征在于所述熱插拔處理機制的熱插入過程包括加載驅(qū)動及用戶層熱插拔控制;所述加載驅(qū)動當新插入一個組件后,設(shè)備驅(qū)動程序的中斷服務(wù)程序接受到信號后掃描整個CompactPCI總線,掃描完畢通過內(nèi)核函數(shù)request_module調(diào)用call_usermodehelper與用戶空間進行交互,內(nèi)核函數(shù)request_module把arg[1]初始化成將要加載模塊的名字,然后利用/sbin/modprobe和配置文件/etc/modprobe.conf來確定將要加載模塊的詳細信息;所述用戶層熱插拔控制通過Addresource命令調(diào)用函數(shù)ResourceAdd將插入組件所對應(yīng)的FRU實體加入到域中,ResourceAdd函數(shù)加入新實體的操作執(zhí)行完畢后,會自動調(diào)用Rptflush函數(shù)來刷新建立邏輯域時所維護的的資源出席表,最后執(zhí)行命令hotplug->active,該命令會調(diào)用ResourceActive函數(shù)激活新的實體使之在域中處于活躍狀態(tài),正常提供服務(wù)。
8.根據(jù)權(quán)利要求11所述的基于HPI模型的熱插拔處理方法,其特征在于所述熱插拔處理機制的熱移出過程先定位移出組件所對應(yīng)的邏輯模型所處的邏輯域;并執(zhí)行Inactive指令鈍化改組件,終止其它組件與其產(chǎn)生的會話;然后將資源移出所處的邏輯域,即從域所維護的資源出席表中剔除該組件;再刷新資源出席表,使所有與該組件所對應(yīng)實體的交互都終止運行;最后將該組件的冗余組件所在的邏輯域信息加入該組件所在域維護的域參照表中,使得其它應(yīng)用可以通過層次域訪問的模式訪問到該組件。
全文摘要
本發(fā)明提供一種基于HPI模型的熱插拔處理方法,包括熱插入和熱移出,所述處理方法包括邏輯域分隔機制及熱插拔處理機制;所述邏輯域分隔機制將熱插拔組件抽象為實體以資源的方式進行邏輯上的分組管理,資源再進行分組以域的方式管理,當熱拔出時,所述邏輯域分隔機制對域?qū)ο蠛唾Y源對象的訪問加以控制,保證了組件的移出不影響系統(tǒng)服務(wù)的可用性;熱插拔處理機制與邏輯域分隔機制交互,實現(xiàn)對邏輯域的初始化,使系統(tǒng)組件處于不同的邏輯域中,并負責對熱插入和熱移出過程中組件的狀態(tài)進行控制,保證了組件的插入和移出不影響系統(tǒng)服務(wù)的可用性。本發(fā)明有效地克服了熱插拔過程對系統(tǒng)穩(wěn)定性的影響。
文檔編號G06F9/46GK101013380SQ20071002673
公開日2007年8月8日 申請日期2007年2月5日 優(yōu)先權(quán)日2007年2月5日
發(fā)明者劉發(fā)貴, 范志強, 吳慶波 申請人:華南理工大學, 廣東美泰科技有限公司