專利名稱:磁盤陣列重建方法
技術(shù)領(lǐng)域:
本發(fā)明是有關(guān)于一種磁盤重建方法,且特別是有關(guān)于一種磁盤陣列重建方法。
背景技術(shù):
隨著計算機的日漸普及,民眾儲存于計算機的數(shù)據(jù)量也隨之日益龐大。因此,使得 計算機廠商開發(fā)出不斷開發(fā)出更大容量的儲存媒體。然而,一般具有大容量的儲存媒體,如 硬盤,受限于本身讀取頭的存取速率以及其所連接的總線傳輸速率,因而造成此類儲存媒 體在數(shù)據(jù)傳輸速率上的瓶頸。此外,此類儲存媒體不具有容錯功能,因而在儲存媒體損壞 時,其所儲存的數(shù)據(jù)也隨之損毀。因此,發(fā)展出磁盤陣列,用以通過數(shù)個實體硬盤模擬出一邏輯硬盤。其中,磁盤陣 列是通過同時自數(shù)個實體硬盤存取數(shù)據(jù),而使得所模擬出的邏輯硬盤具有較快的數(shù)據(jù)傳輸 速率。此外,某些等級的磁盤陣列具有容錯的功能,使得磁盤陣列中其中一個實體硬盤損壞 時,仍可通過其它實體硬盤,重建儲存于損壞的實體硬盤上的數(shù)據(jù)。磁盤陣列的儲存原理是用Bit Striping及目前主流Block Striping的分割方 式,將數(shù)據(jù)分散儲存至磁盤陣列的各實體硬盤中。當對其中一顆實體硬盤進行重建時,則經(jīng) 由XOR運算,將存在其它各實體硬盤內(nèi)的同位(parity)扇區(qū)以及Data Stripe扇區(qū)的所有 數(shù)據(jù),進行計算而重建數(shù)據(jù)。然而,在重建過程中,即使是未寫入數(shù)據(jù)的空白區(qū)塊,仍需透過 XOR運算,以計算出其為空白區(qū)塊,因而浪費許多重建時間。
發(fā)明內(nèi)容
因此,本發(fā)明的一目的是在提供一種磁盤陣列重建方法,用以記錄實體硬盤上已 寫入?yún)^(qū)塊的信息,并在重建磁盤陣列時,根據(jù)上述記錄的信息,僅重建實體硬盤上的已寫入 區(qū)塊。依據(jù)本發(fā)明一實施例,一種磁盤陣列重建方法包含自一磁盤陣列的數(shù)個實體硬 盤,選擇一目標硬盤。根據(jù)目標硬盤的一寫入?yún)^(qū)塊表,取得目標硬盤的數(shù)個已寫入?yún)^(qū)塊的信 息。選擇一閑置硬盤。利用磁盤陣列中目標硬盤以外的實體硬盤,僅將目標硬盤的已寫入 區(qū)塊重建于閑置硬盤。應用本發(fā)明具有下列優(yōu)點。在對磁盤陣列中的一顆實體硬盤進行重建時,僅重建 實體硬盤上已寫入的區(qū)塊。換言之,不必對實體硬盤上尚未寫入的區(qū)塊進行重建,因而可大 大節(jié)省磁盤陣列重建所需的時間。此外,可依據(jù)實際需求,更動實體硬盤上的區(qū)塊數(shù)目。因 此,本發(fā)明適用于各種容量大小的實體硬盤。
為讓本發(fā)明的上述和其它目的、特征、優(yōu)點與實施例能更明顯易懂,所附附圖的說 明如下圖1是依照本發(fā)明一實施方式的一種磁盤陣列重建方法的流程圖。
主要組件符號說明100:磁盤陣列重建方法110 190:步驟
具體實施例方式請參照圖1,其是依照本發(fā)明一實施方式的一種磁盤陣列(Redundant Arrayof Inexpensive Disks, RAID)重建(rebuild)方法的流程圖。在磁盤陣列重建方法中,記錄 實體硬盤上已寫入?yún)^(qū)塊的信息,用以在重建磁盤陣列時,根據(jù)上述記錄的信息,而僅重建實 體硬盤上已寫入?yún)^(qū)塊。因此,磁盤陣列重建方法100包含以下步驟在新增一目標硬盤至一磁盤陣列(步驟110)時,新增目標硬盤的一寫入?yún)^(qū)塊表 (步驟120),然后持續(xù)更新目標硬盤的寫入?yún)^(qū)塊表(步驟130)。其中,磁盤陣列是使用RAID URAID 0+URAID 5或其它支持重建的RAID模式,且寫入?yún)^(qū)塊表可儲存于磁盤陣列中目標 硬盤以外的其它實體硬盤上。根據(jù)本發(fā)明的一實施例,步驟120所新增的目標硬盤的寫入?yún)^(qū)塊表,可記錄目標 硬盤的所有數(shù)據(jù)區(qū)塊的寫入狀態(tài)。其中,可通過邏輯塊尋址(LogicalBlock Addressing, LBA),將目標硬盤上數(shù)據(jù)的地址換算成所對應的數(shù)據(jù)區(qū)塊,以將其寫入狀態(tài)記錄至寫入?yún)^(qū) 塊表。接下來,在收到一寫入指令,用以寫入目標硬盤中的一目標寫入?yún)^(qū)塊時,將寫入?yún)^(qū)塊 表中目標寫入?yún)^(qū)塊的寫入狀態(tài)更新為已寫入,以更新目標硬盤的寫入?yún)^(qū)塊表(步驟130)。 舉例來說,在將目標硬盤分為210(= 1024)個數(shù)據(jù)區(qū)塊時,可分配1024位(bit)的空間,作 為新增目標硬盤的寫入?yún)^(qū)塊表(步驟120)之用。其中,寫入?yún)^(qū)塊表的每個位是用以代表其 所對應的數(shù)據(jù)區(qū)塊的寫入狀態(tài)。例如,可定義在寫入?yún)^(qū)塊表的第0個位為1時,代表目標硬 盤的第0個數(shù)據(jù)區(qū)塊為一尚未寫入?yún)^(qū)塊;在寫入?yún)^(qū)塊表的第0個位為0時,代表目標硬盤的 第0個數(shù)據(jù)區(qū)塊為一已寫入?yún)^(qū)塊。因此,在新增目標硬盤的寫入?yún)^(qū)塊表(步驟120)時,使 目標硬盤的寫入?yún)^(qū)塊表的所有位初始化為1,以代表目標硬盤的所有數(shù)據(jù)區(qū)塊皆尚未寫入。 接下來,在收到一寫入指令,用以寫入目標硬盤的第0個區(qū)塊時,將寫入?yún)^(qū)塊表的第0個位 更新為0(步驟130),以代表目標硬盤的第0個區(qū)塊的寫入狀態(tài)為已寫入。然而,在其它實 施例中,可依實際需求,修改目標硬盤的數(shù)據(jù)區(qū)塊數(shù)目以及寫入?yún)^(qū)塊表上寫入狀態(tài)的定義, 并不限于本實施例。此外,根據(jù)本發(fā)明的另一實施例,可僅將目標硬盤的至少一已寫入?yún)^(qū)塊的信息,登 錄至目標硬盤的寫入?yún)^(qū)塊表。因此,在收到一寫入指令,用以寫入目標硬盤的一目標寫入?yún)^(qū) 塊時,取得目標寫入?yún)^(qū)塊的信息。接下來,將目標寫入?yún)^(qū)塊的信息登錄至寫入?yún)^(qū)塊表,作為 已寫入?yún)^(qū)塊的信息的其中之一,以更新目標硬盤的寫入?yún)^(qū)塊表(步驟130)。如此一來,通過 步驟110 步驟130,即可新增并持續(xù)更新磁盤陣列上各實體硬盤的寫入?yún)^(qū)塊表,作為重建 時的依據(jù)。在步驟140中,自磁盤陣列的數(shù)個實體硬盤中,選擇目標硬盤以進行重建。其中, 步驟140可在偵測到磁盤陣列的實體硬盤的其中之一故障時,選擇故障的實體硬盤作為目 標硬盤。此外,步驟140亦可在自一使用者接口收到一選擇指令時,根據(jù)選擇指令,自實體 硬盤選擇目標硬盤。換言之,使用者可透過使用者接口,選擇欲重建的目標硬盤。根據(jù)目標硬盤的寫入?yún)^(qū)塊表,取得目標硬盤的數(shù)個已寫入?yún)^(qū)塊的信息(步驟150),并選擇一閑置硬盤(步驟160)。其中,可根據(jù)寫入?yún)^(qū)塊表,分析目標硬盤中各數(shù)據(jù)區(qū) 塊的寫入狀態(tài),以取得目標硬盤的已寫入?yún)^(qū)塊的信息(步驟150)。此外,亦可直接取出登錄 于寫入?yún)^(qū)塊表中已寫入?yún)^(qū)塊的信息。在步驟170中,利用磁盤陣列中目標硬盤以外的實體硬盤,僅將目標硬盤的已寫 入?yún)^(qū)塊,重建于閑置硬盤。其中,可通過邏輯塊尋址,將目標硬盤的已寫入?yún)^(qū)塊的信息換算 成已寫入?yún)^(qū)塊的地址,用以將目標硬盤的已寫入?yún)^(qū)塊,重建于閑置硬盤(步驟170)。在步驟180中,令閑置硬盤取代磁盤陣列的目標硬盤。在閑置硬盤取代磁盤陣列 的目標硬盤(步驟180)后,即可存取磁盤陣列所模擬的一邏輯硬盤(步驟190)。由上述本發(fā)明實施方式可知,應用本發(fā)明具有下列優(yōu)點。在對磁盤陣列中的一顆 實體硬盤進行重建時,僅重建實體硬盤上已寫入的區(qū)塊。換言之,不必對實體硬盤上尚未寫 入的區(qū)塊進行重建,因而可大大節(jié)省磁盤陣列重建所需的時間。此外,可依據(jù)實際需求,更 動實體硬盤上的區(qū)塊數(shù)目。因此,本發(fā)明適用于各種容量大小的實體硬盤。雖然本發(fā)明已以實施方式揭露如上,然其并非用以限定本發(fā)明,任何熟悉此技術(shù) 的人員,在不脫離本發(fā)明的精神和范圍內(nèi),當可作各種的更動與潤飾,因此本發(fā)明的保護范 圍當視權(quán)利要求書所界定的范圍為準。
權(quán)利要求
一種磁盤陣列重建方法,其特征在于,包含自一磁盤陣列的多個實體硬盤,選擇一目標硬盤;根據(jù)該目標硬盤的一寫入?yún)^(qū)塊表,取得該目標硬盤的多個已寫入?yún)^(qū)塊的信息;選擇一閑置硬盤;以及利用該磁盤陣列中該目標硬盤以外的該些實體硬盤,僅將該目標硬盤的該些已寫入?yún)^(qū)塊重建于該閑置硬盤。
2.根據(jù)權(quán)利要求1所述的磁盤陣列重建方法,其特征在于,還包含 收到一寫入指令,用以寫入該目標硬盤的一目標寫入?yún)^(qū)塊;以及取得該目標寫入?yún)^(qū)塊的信息,并將該目標寫入?yún)^(qū)塊的信息登錄至該寫入?yún)^(qū)塊表,作為 該些已寫入?yún)^(qū)塊的信息的其中之一。
3.根據(jù)權(quán)利要求1所述的磁盤陣列重建方法,其特征在于,該寫入?yún)^(qū)塊表包含該目標 硬盤的多個數(shù)據(jù)區(qū)塊的寫入狀態(tài),且取得該目標硬盤的該些已寫入?yún)^(qū)塊的信息的步驟包 含根據(jù)該寫入?yún)^(qū)塊表,分析該目標硬盤中該些數(shù)據(jù)區(qū)塊的寫入狀態(tài),以取得該目標硬盤 的該些已寫入?yún)^(qū)塊的信息。
4.根據(jù)權(quán)利要求3所述的磁盤陣列重建方法,其特征在于,還包含 收到一寫入指令,用以寫入該些數(shù)據(jù)區(qū)塊中的一目標寫入?yún)^(qū)塊;以及 將該寫入?yún)^(qū)塊表中該目標寫入?yún)^(qū)塊的寫入狀態(tài)設為已寫入。
5.根據(jù)權(quán)利要求1所述的磁盤陣列重建方法,其特征在于,還包含 在新增該目標硬盤至該磁盤陣列時,新增該目標硬盤的該寫入?yún)^(qū)塊表。
6.根據(jù)權(quán)利要求1所述的磁盤陣列重建方法,其特征在于,自該磁盤陣列的該些實體 硬盤,選擇該目標硬盤的步驟包含在偵測到該磁盤陣列的該些實體硬盤的其中之一故障時,選擇該故障的實體硬盤作為 該目標硬盤。
7.根據(jù)權(quán)利要求1所述的磁盤陣列重建方法,其特征在于,自該磁盤陣列的該些實體 硬盤,選擇該目標硬盤的步驟包含自一使用者接口收到一選擇指令;以及 根據(jù)該選擇指令,自該些實體硬盤選擇該目標硬盤。
8.根據(jù)權(quán)利要求1所述的磁盤陣列重建方法,其特征在于,還包含 令該閑置硬盤取代該磁盤陣列的該目標硬盤。
9.根據(jù)權(quán)利要求1所述的磁盤陣列重建方法,其特征在于,該磁盤陣列是使用RAID1、 RAID 0+1 或 RAID 5。
10.根據(jù)權(quán)利要求1所述的磁盤陣列重建方法,其特征在于,該寫入?yún)^(qū)塊表是儲存于該 磁盤陣列中該目標硬盤以外的其它該些實體硬盤上。
全文摘要
本發(fā)明涉及一種磁盤陣列重建方法,包含自一磁盤陣列的數(shù)個實體硬盤,選擇一目標硬盤。根據(jù)目標硬盤的一寫入?yún)^(qū)塊表,取得目標硬盤的數(shù)個已寫入?yún)^(qū)塊的信息。選擇一閑置硬盤。利用磁盤陣列中目標硬盤以外的實體硬盤,僅將目標硬盤的已寫入?yún)^(qū)塊重建于閑置硬盤。
文檔編號G06F3/06GK101968754SQ20091015115
公開日2011年2月9日 申請日期2009年7月27日 優(yōu)先權(quán)日2009年7月27日
發(fā)明者王宗斌 申請人:英業(yè)達股份有限公司