專利名稱:磁盤冗余陣列設(shè)備的自動重建方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種自動重建方法,特別是關(guān)于一種基于硬盤位置的磁盤冗余陣列的自動重建方法。
背景技術(shù):
磁盤冗余陣列(Redundant Arrays of Inexpensive Disks;RAID,以下僅以RAID代替)設(shè)備,使用若干硬盤,組成一個單獨的儲存設(shè)備,提供更大的容量、更快的存取速度或數(shù)據(jù)冗余功能。這些硬盤稱為這個RAID設(shè)備的成員(Member)硬盤。根據(jù)其數(shù)據(jù)組織方式的不同,分為Linear、RAID-0、RAID-1、RAID-5等。其中RAID-1和RAID-5提供了數(shù)據(jù)冗余功能。
如圖1所示,是RAID設(shè)備的狀態(tài)和重建操作。數(shù)據(jù)冗余功能是指,當(dāng)RAID設(shè)備的一個或多個成員損壞時,這個RAID設(shè)備上的數(shù)據(jù)仍然保持完好無損。這時的RAID設(shè)備進入降級(Degraded)狀態(tài),應(yīng)該盡早對其進行重建(Rebuild)工作。重建工作,就是使用一個新的硬盤,取代原來壞掉的硬盤,使RAID設(shè)備恢復(fù)到正常(Normal)狀態(tài)。
當(dāng)前市場上使用RAID設(shè)備的各種產(chǎn)品,包括NAS(Network-attachedStorage)、SAN(Storage Area Network)等儲存服務(wù)器,以及其它產(chǎn)品。
而這些產(chǎn)品的自動重建(Auto-Rebuild)功能,是依靠熱備援(HotSpare)功能實現(xiàn)。如圖2所示,熱備援是在指RAID設(shè)備中,包含的若干個特殊的硬盤,這些硬盤不是RAID設(shè)備的成員硬盤,所以不用于儲存用戶數(shù)據(jù),而是在RAID設(shè)備降級時,自動頂替壞掉的成員硬盤,重建RAID設(shè)備。而這塊熱備援,就變成了RAID設(shè)備的成員硬盤。這種自動重建的缺點是,要占用多余的硬盤。
發(fā)明內(nèi)容
鑒于以上的問題,本發(fā)明的主要目的在于提供一種RAID設(shè)備的自動重建方法,當(dāng)一個RAID設(shè)備降級的時候,沒有現(xiàn)成的熱備援,就需要用新硬盤重建RAID設(shè)備,我們可以依據(jù)硬盤的位置信息,實現(xiàn)這種情況下的自動重建;即,只要有新硬盤插在正確的位置上,系統(tǒng)就自動地對RAID設(shè)備進行重建操作。這一功能在支持硬盤“熱插拔”(Hot-swap)的系統(tǒng)上尤其有用。
為達上述目的,本發(fā)明提出一種RAID設(shè)備的自動重建方法,此RAID設(shè)備包含多個成員硬盤并應(yīng)用于儲存設(shè)備上,且此儲存設(shè)備還包含多個硬盤位置來設(shè)置硬盤,其步驟包含首先,讀取儲存設(shè)備的配置信息,而儲存位置的配置信息包括了可用于自動重建的硬盤位置;再去查詢儲存設(shè)備的狀態(tài)信息;然后,根據(jù)儲存設(shè)備的狀態(tài)信息,刷新儲存設(shè)備的配置信息;最后,根據(jù)儲存設(shè)備的配置信息,當(dāng)RAID設(shè)備具有降級的成員硬盤時,從可用于自動重建的硬盤位置除來加入一個新硬盤,而重建RAID設(shè)備。
有關(guān)本發(fā)明的特征與實作,現(xiàn)配合圖示作最佳實施例詳細說明如下。
圖1為先前技術(shù)的RAID設(shè)備的狀態(tài)和重建操作的示意圖;圖2為先前技術(shù)的基于熱備用的自動重建的示意圖;圖3是本發(fā)明的RAID設(shè)備的自動重建方法的流程圖;圖4是本發(fā)明中IDE總線位置示意圖;圖5是本發(fā)明的儲存設(shè)備狀態(tài)信息查詢程序的流程圖;圖6是本發(fā)明的自動重建程序的流程圖;圖7是本發(fā)明的具備流程控制的自動重建方法的流程圖;圖8是本發(fā)明的實施例的支持自動重建功能的NAS服務(wù)器;圖9是本發(fā)明的實施例的第一種選擇的示意圖;及圖10是本發(fā)明的實施例的第二種選擇的示意圖。
其中,附圖標(biāo)記說明如下步驟100讀取儲存設(shè)備的配置信息(存儲設(shè)備配置信息查詢程序)步驟200查詢儲存設(shè)備的狀態(tài)信息(存儲設(shè)備狀態(tài)信息查詢程序)步驟210獲取所有硬盤的位置信息(硬盤位置信息查詢程序)步驟211獲取硬盤列表(硬盤列表查詢程序)
步驟212根據(jù)硬盤的類型,分別獲取其位置信息(硬盤位置信息取得程序)步驟220查詢RAID設(shè)備的狀態(tài)信息(RAID設(shè)備狀態(tài)信息查詢程序)步驟300刷新儲存設(shè)備的配置信息(儲存設(shè)備配置信息刷新程序)步驟400根據(jù)儲存設(shè)備的配置信息,在RAID設(shè)備降級時,自硬盤位置處加入新硬盤,重建RAID設(shè)備(自動重建程序)步驟410確認RAID設(shè)備的成員硬盤是否降級步驟420確認是否有可用于自動重建的新硬盤步驟430重建降級的RAID設(shè)備的成員硬盤步驟500控制自動重建過程的操作頻率(流程控制程序)具體實施方式
請參照圖3所示,本發(fā)明所提供的RAID(磁盤冗余陣列)設(shè)備的自動重建方法,是應(yīng)用于使用RAID技術(shù)的儲存設(shè)備,如NAS、SAN等儲存服務(wù)器,或其它產(chǎn)品上,其步驟包含(A)儲存設(shè)備配置信息查詢程序(步驟100)首先,讀取儲存設(shè)備的配置信息;(B)儲存設(shè)備狀態(tài)信息查詢程序(步驟200)接著,查詢儲存設(shè)備的狀態(tài)信息,其中主要包括RAID設(shè)備的狀態(tài)和所有硬盤的位置信息;(C)儲存設(shè)備配置信息刷新程序(步驟300)根據(jù)狀態(tài)信息,刷新儲存設(shè)備的配置信息(Configuration);以及(D)自動重建程序(步驟400)根據(jù)配置信息,將儲存設(shè)備的硬盤位置上的新硬盤加入為RAID設(shè)備的成員硬盤,而重建RAID設(shè)備。
以下即對于本發(fā)明如何實現(xiàn)基于硬盤位置的RAID設(shè)備的自動重建作一詳細說明。
(A)儲存設(shè)備配置信息查詢程序(步驟100)這個程序(步驟100)用于讀取儲存設(shè)備的配置信息。最重要的配置信息是RAID設(shè)備的配置信息,尤其是可以用于自動重建的硬盤位置列表。當(dāng)然,也可以包括其它類型的配置信息。
請參照圖4,對IDE硬盤,其位置可以用IDE總線位置記錄。IDE總線可以有多個通道(Channel),最常用的個人計算機(PC)的IDE總線一般有2個通道,稱為主通道(Primary)和從通道(Secondary)。而使用IDE硬盤的儲存服務(wù)器,如NAS和SAN,IDE總線可以有多于2個的通道。每個IDE通道可以連接2塊IDE硬盤,分別稱為主盤和從盤。這樣,有幾個IDE通道,就可以有雙倍的IDE硬盤個數(shù)。知道了IDE硬盤的通道號,以及它的主/從屬性,也就知道了IDE硬盤的總線位置。
對SCSI硬盤,其位置可以用SCSI總線位置記錄。SCSI總線位置信息是一個4-D(Dimensional,維度)的坐標(biāo)(主機(Host),通道(Channel),Id,Lun)。
主機(Host)對應(yīng)于SCSI硬盤所連接的SCSI控制器(SCSI Adapter),即SCSI卡或SCSI控制芯片。每個SCSI控制器都有自己的名字,一般是其廠商的名字,如BusLogic,或其型號,如AAR81XX。每個SCSI控制器在LINUX系統(tǒng)中有一個屬于自己的數(shù)字編號。這個編號并不固定,是LINUX系統(tǒng)依據(jù)啟動順序?qū)Ω鱾€SCSI控制器從0開始依次安排的。
Channel是通道,每個SCSI控制器可以有若干通道。每個通道有一個屬于自己的數(shù)字編號。
Id是設(shè)備編號,每個通道上可以連接若干設(shè)備,當(dāng)然也可以是硬盤。每個設(shè)備有一個屬于自己的數(shù)字編號。
Lun(Logical Unit Number)是邏輯單元編號,每個SCSI設(shè)備可以有若干邏輯單元,實現(xiàn)子設(shè)備的功能。每個邏輯單元有一個屬于自己的數(shù)字編號。
舉例而言,(BusLogic,0,0,0)就是一個SCSI硬盤的位置,表示這個硬盤的SCSI控制器是BusLogic,通道號為0,設(shè)備號為0,邏輯單元編號為0。
例如下面的配置信息,就記錄了一個RAID設(shè)備的可用于自動重建的硬盤位置信息列表。
<RAID1>
<AutoRebuild Type=”IDE”Position=”Channel2,Master”>
<AutoRebuild Type=”IDE”Position=”Channel3,Master”>
<AutoRebuild Type=”SCSI”Position=”BusLogic,0,2,0”>
<AutoRebuild Type=”SCSI”Position=”BusLogic,0,3,0”>
</RAID1>
其中記錄了4個可以用于自動重建的硬盤的位置信息的列表。表示有2塊IDE硬盤和2塊SCSI硬盤可以用于RAID設(shè)備的重建操作。它們的位置信息被記錄在各自的位置(Position)變量之中。
(B)儲存設(shè)備狀態(tài)信息查詢程序(步驟200)儲存設(shè)備的狀態(tài)信息,主要包括RAID設(shè)備的狀態(tài),和所有硬盤的位置信息。
如圖5所示,儲存設(shè)備狀態(tài)信息查詢程序(步驟200)包含硬盤位置信息查詢程序(步驟210)與RAID設(shè)備狀態(tài)信息查詢程序(步驟220),而硬盤位置信息查詢程序(步驟210)包含有硬盤列表查詢程序(步驟211)以及硬盤位置信息取得程序(步驟212)。
其中,要獲取所有硬盤的位置信息(步驟210),首先要獲取系統(tǒng)中的所有硬盤設(shè)備的列表(步驟211),然后根據(jù)每塊硬盤的類型,分別獲取其位置信息(步驟212)。
硬盤列表查詢程序(步驟211)負責(zé)獲取系統(tǒng)中的所有硬盤設(shè)備的列表,在LINUX下,讀取/proc/partitions文件即可獲得所有硬盤的設(shè)備名,如“hde”、“sda”等等。
硬盤位置信息取得程序(步驟212),需要根據(jù)硬盤的類型分別做處理。在LINUX下,對IDE硬盤,其設(shè)備名以“hd”開頭。其設(shè)備名的后半部分與其總線位置一一對應(yīng)第一個通道的主盤(Master),對應(yīng)設(shè)備名為hda;第一個通道的從盤(Slave),對應(yīng)設(shè)備名為hdb;第二個通道的主盤(Master),對應(yīng)設(shè)備名為hdc;第二個通道的從盤(Slave),對應(yīng)設(shè)備名為hdd;第三個通道的主盤(Master),對應(yīng)設(shè)備名為hde;第三個通道的從盤(Slave),對應(yīng)設(shè)備名為hdf;第四個通道的主盤(Master),對應(yīng)設(shè)備名為hdg;第四個通道的從盤(Slave),對應(yīng)設(shè)備名為hdh;……所以,知道了IDE硬盤的設(shè)備名,也就知道了IDE硬盤的位置。而對SCSI硬盤,在LINUX下有專門的系統(tǒng)API(Application ProgrammingInterface)用于獲取其位置信息,調(diào)用ioctl的SCSI_IOCTL_GET_IDLUN功能即可。但此時獲取的是數(shù)字的4-D坐標(biāo),如果要獲取主機(Host)的名稱,還要讀取/proc/scsi/下的目錄結(jié)構(gòu)信息,做匹配即可。
RAID設(shè)備狀態(tài)信息查詢程序(步驟220),用于查詢RAID設(shè)備的狀態(tài)信息。尤其要查詢RAID設(shè)備是否降級,以及RAID設(shè)備當(dāng)前的成員硬盤列表。在LINUX下,讀取/proc/mdstat文件即可。
(C)儲存設(shè)備配置信息刷新程序(步驟300)儲存設(shè)備配置信息刷新程序(步驟300)的用途是,根據(jù)剛才所獲取的儲存設(shè)備的狀態(tài)信息,刷新儲存設(shè)備的配置信息,尤其是要根據(jù)RAID設(shè)備的狀態(tài)信息刷新RAID設(shè)備的成員硬盤列表。這樣可以在下一次系統(tǒng)重新啟動時,為啟動RAID設(shè)備提供參考。
(D)自動重建程序(步驟400)如圖6所示,這是最核心的功能,首先確認RAID設(shè)備的成員硬盤是否降級?(步驟410),再確認是否有可用于自動重建的硬盤?(步驟420),并基于前面已經(jīng)做完的充分的準備操作,確定哪些硬盤位置上的硬盤可用于重建RAID設(shè)備,并使用這些硬盤重建降級的RAID設(shè)備的成員硬盤。(步驟430)由于這個新硬盤開始時不是RAID設(shè)備的熱備援,不包含在RAID設(shè)備中,所以減少了RAID設(shè)備占用的硬盤個數(shù)。這塊硬盤在未被占用時,可以用來創(chuàng)建其它的RAID設(shè)備。
而重建操作要使用RAID工具的指定接口。在LINUX下,對軟件實現(xiàn)的RAID設(shè)備,使用raid-tools中的raidhotadd命令即可。
此外,如圖7所示,本發(fā)明所提供的RAID設(shè)備的自動重建方法更可包含一流程控制程序(步驟500),用于控制系統(tǒng)進行RAID操作的頻率。根據(jù)需求,可以進行如下三種流程控制1.控制操作次數(shù)可以是任意次,甚至無窮多次。如果是無窮多次,這個進程最好放在系統(tǒng)后臺運行。
2.控制兩次操作之間的時間間隔;比如1秒或5秒,以減輕系統(tǒng)的負擔(dān)。
3.檢驗是否要退出操作如果在需求中考慮到了用戶要求系統(tǒng)停止運行,或者系統(tǒng)關(guān)機的情況,就要判斷這些事件是否發(fā)生,以決定是否停止操作。
而且,本發(fā)明還由一實施例來對于本發(fā)明的實施方式協(xié)助說明。
首先,如圖8所示,假設(shè)有一臺支持我們的自動重建功能的NAS(Network-attached Storage)服務(wù)器,它提供了4個硬盤插槽,而且這些硬盤插槽的總線位置都是固定的,都支持熱插拔。如圖,對四個插槽上的硬盤,我們從左至右分別命名其為HDD1、HDD2、HDD3、HDD4。
假設(shè)開始時HDD1和HDD2中插有硬盤,HDD3和HDD4為空。通過NAS的操作接口,使用硬盤HDD1和HDD2創(chuàng)建一個RAID-1設(shè)備,我們將這個RAID設(shè)備命名為MD1。在創(chuàng)建MD1時,我們指定HDD1、HDD2和HDD3可以用作MD1的自動重建。我們指定其使用基于硬盤位置的自動重建,而不是使用熱備援,因為此時插槽HDD3上甚至沒有硬盤。
再假設(shè)在使用了一段時間之后,硬盤HDD2損壞,就會導(dǎo)致MD1降級,其成員硬盤只剩下HDD1。這時,我們有2種選擇,可以重建這個RAID設(shè)備,使其恢復(fù)完整。
第一種選擇是,如圖9所示,拔掉HDD2中已經(jīng)壞掉的硬盤,將一個新硬盤插進HDD2。操作完成!此時的MD1仍由HDD1和HDD2組成。
第二種選擇是,如圖10所示,直接將一個新硬盤插進HDD3。操作完成!此時MD1由HDD1和HDD3組成。
此外還有一種方式,那就是在降級之前就在HDD3中插入空硬盤。那么,在降級時的自動重建操作會自動進行,其效果相當(dāng)于使用熱備援。
綜合上述,本發(fā)明所提供的RAID(磁盤冗余陣列)設(shè)備的自動重建方法,具有下列優(yōu)點1、對支持硬盤熱插拔的系統(tǒng),可以完善系統(tǒng)功能。
2、操作簡單,容易掌握。因為這種重建操作基于硬盤的位置,用戶只要將硬盤插對位置即可完成操作。
3、不依賴熱備援,所以平時不占用多余的硬盤。
雖然本發(fā)明以前述的較佳實施例揭露如上,但是其并非用以限定本發(fā)明,任何本技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),所作出的等效結(jié)構(gòu)變化,均包含在本發(fā)明的專利范圍內(nèi)。
權(quán)利要求
1.一種RAID設(shè)備的自動重建方法,該RAID設(shè)備包含多個成員硬盤并應(yīng)用于一儲存設(shè)備上,該儲存設(shè)備還包含多個硬盤位置以設(shè)置多個硬盤,其特征在于,包括如下步驟讀取該儲存設(shè)備的配置信息,且該儲存設(shè)備的配置信息包含一可用于自動重建的硬盤位置;查詢該儲存設(shè)備的狀態(tài)信息;根據(jù)該儲存設(shè)備的狀態(tài)信息,刷新該儲存設(shè)備的配置信息;及根據(jù)該儲存設(shè)備的配置信息,在該RAID設(shè)備的該些成員硬盤中具有一降級的成員硬盤時,自該可用于自動重建的硬盤位置處加入一新硬盤,以重建該RAID設(shè)備。
2.如權(quán)利要求1所述的RAID設(shè)備的自動重建方法,其特征在于,該儲存設(shè)備的狀態(tài)信息包括該RAID設(shè)備的狀態(tài)與該RAID設(shè)備的該些成員硬盤與該儲存設(shè)備的該些硬盤的位置信息。
3.如權(quán)利要求1所述的RAID設(shè)備的自動重建方法,其特征在于,該查詢儲存設(shè)備的狀態(tài)信息的步驟,包含下列步驟獲取該RAID設(shè)備的該些成員硬盤與該儲存設(shè)備的該些硬盤的位置信息;及查詢該RAID設(shè)備的狀態(tài)信息。
4.如權(quán)利要求3所述的RAID設(shè)備的自動重建方法,其特征在于,該獲取該RAID設(shè)備的該些成員硬盤與該儲存設(shè)備的該些硬盤的位置信息的步驟,包含下列步驟獲取該RAID設(shè)備的該些成員硬盤與該儲存設(shè)備的該些硬盤的列表;及根據(jù)該些成員硬盤與該些硬盤的類型,分別獲取其位置信息。
5.如權(quán)利要求3所述的RAID設(shè)備的自動重建方法,其特征在于,該RAID設(shè)備的狀態(tài)信息包含用于判斷該RAID設(shè)備的該些成員硬盤是否降級的信息與該RAID設(shè)備的該些成員硬盤的列表。
6.如權(quán)利要求1所述的RAID設(shè)備的自動重建方法,其特征在于,該重建該RAID設(shè)備的步驟,包含下列步驟確認該RAID設(shè)備的該些成員硬盤是否降級;確認是否有可用于自動重建的該新硬盤;及重建降級的該RAID設(shè)備的成員硬盤。
7.如權(quán)利要求1所述的RAID設(shè)備的自動重建方法,其特征在于,還包括一控制該RAID設(shè)備的自動重建過程的操作頻率的步驟。
全文摘要
一種RAID設(shè)備的自動重建方法,該RAID設(shè)備包含多個成員硬盤并應(yīng)用于一儲存設(shè)備上,該儲存設(shè)備還包含多個硬盤位置以設(shè)置多個硬盤,該方法包括如下步驟讀取該儲存設(shè)備的配置信息,且該儲存設(shè)備的配置信息包含一可用于自動重建的硬盤位置;查詢該儲存設(shè)備的狀態(tài)信息;根據(jù)該儲存設(shè)備的狀態(tài)信息,刷新該儲存設(shè)備的配置信息;及根據(jù)該儲存設(shè)備的配置信息,在該RAID設(shè)備的該些成員硬盤中具有一降級的成員硬盤時,自該可用于自動重建的硬盤位置處加入一新硬盤,以重建該RAID設(shè)備。故在RAID設(shè)備降級時,只要在正確的位置上插上新的硬盤,即可自動地對RAID設(shè)備進行重建操作,平時并不會占用到多余的硬盤,從而避免硬件資源的浪費。
文檔編號G06F3/06GK1808365SQ20051000456
公開日2006年7月26日 申請日期2005年1月17日 優(yōu)先權(quán)日2005年1月17日
發(fā)明者劉文涵, 宋建福, 李東海 申請人:英業(yè)達股份有限公司