專利名稱:一種軟獨(dú)立冗余磁盤陣列的管理方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)應(yīng)用領(lǐng)域,具體涉及Linux操作系統(tǒng)中軟RAID化管理方法和系 統(tǒng)。
背景技術(shù):
在Linux操作系統(tǒng)中,目前mdadm軟件已經(jīng)實(shí)現(xiàn)了對軟RAID (Redundant Array of Independent Disk,獨(dú)立冗余磁盤陣列)的管理,可以用來對RAID組進(jìn)行創(chuàng)建、刪除、磁 盤超級塊的查詢、RAID信息查詢等操作。另外LVM (Logic Volume Management,邏輯卷管 理)工具集也實(shí)現(xiàn)了對邏輯卷的一整套的管理,包括建卷、刪卷、卷信息查詢等功能。這些工 具都是基于命令行的,需要人工在linux shell中手動(dòng)輸入命令完成以上功能。然而,在大多項(xiàng)目的應(yīng)用中,上述的工具可能不能滿足項(xiàng)目應(yīng)用的需求。因?yàn)轫?xiàng) 目中需要對這些流程自動(dòng)化管理,并且需要定時(shí)地查詢卷、組、磁盤的信息。尤其是將JBOD (Just a Bunch Of Disks,磁盤簇)應(yīng)用到項(xiàng)目中后,每個(gè)節(jié)點(diǎn)管理的硬盤增多,總的硬盤容 量增加,目前人工手動(dòng)實(shí)現(xiàn)的對軟RAID及其卷組的管理效率太低,因此更加需要一個(gè)有效 的管理方法。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種Linux操作系統(tǒng)中軟RAID的管理方法和系 統(tǒng),提高軟RAID的管理效率。為解決上述技術(shù)問題,本發(fā)明提供一種軟獨(dú)立冗余磁盤陣列(RAID)的管理方法, 包括
軟RAID初始化的步驟,包括獲取磁盤超級塊信息,根據(jù)所述超級塊信息嘗試恢復(fù)硬 盤中的RAID組;
軟RAID自動(dòng)創(chuàng)建的步驟,包括查詢磁盤簇(JBOD)信息和磁盤信息,根據(jù)查詢結(jié)果選 擇合適的建組建卷規(guī)則;根據(jù)選擇的建組建卷規(guī)則執(zhí)行以下操作創(chuàng)建RAID組、創(chuàng)建卷、格 式化卷、掛載卷;
軟RAID自動(dòng)管理的步驟,包括周期性查詢以下信息中的一種或幾種并上報(bào)RAID組 fn息、石茲^lf曰息、-^fn息ο進(jìn)一步地,在執(zhí)行軟RAID初始化的步驟前,預(yù)先配置用于軟RAID初始化的應(yīng)用程 序編程接口(API)恢復(fù)API ;
在執(zhí)行軟RAID初始化的步驟時(shí),調(diào)用所述恢復(fù)API完成軟RAID初始化的步驟。進(jìn)一步地,所述根據(jù)查詢結(jié)果選擇合適的建組建卷規(guī)則的步驟包括根據(jù)查詢到 的JBOD信息從預(yù)先配置的建組建卷規(guī)則中選擇一個(gè)符合當(dāng)前JBOD信息情況的建組建卷規(guī) 則。進(jìn)一步地,在執(zhí)行軟RAID自動(dòng)創(chuàng)建的步驟前,預(yù)先配置以下API 查詢JBOD信息 的API、查詢磁盤信息的API、創(chuàng)建RAID組的API、創(chuàng)建卷的API、格式化卷的API、掛載卷的
4API ;
所述查詢JBOD信息的步驟包括調(diào)用查詢JBOD信息的API進(jìn)行JBOD信息查詢; 所述查詢磁盤信息的步驟包括調(diào)用查詢磁盤信息的API進(jìn)行磁盤信息查詢操作; 所述創(chuàng)建RAID組的步驟包括調(diào)用創(chuàng)建RAID組的API進(jìn)行創(chuàng)建RAID組的操作; 所述創(chuàng)建卷的步驟包括調(diào)用創(chuàng)建卷的API進(jìn)行創(chuàng)建卷的操作; 所述格式化卷的步驟包括調(diào)用格式化卷的API進(jìn)行格式化卷的操作; 所述掛載卷的步驟包括調(diào)用掛載卷的API進(jìn)行掛載卷的操作。進(jìn)一步地,在執(zhí)行軟RAID自動(dòng)創(chuàng)建的步驟前,預(yù)先配置以下API 查詢RAID組信 息的API、查詢卷信息的API ;
在創(chuàng)建RAID組后創(chuàng)建卷前,所述方法還包括調(diào)用查詢RAID組信息的API進(jìn)行RAID 組信息查詢的操作;
在掛載卷后,所述方法還包括調(diào)用查詢卷信息的API進(jìn)行卷信息查詢操作。進(jìn)一步地,所述軟RAID自動(dòng)管理的步驟還包括,根據(jù)周期性查詢的結(jié)果進(jìn)行性能 統(tǒng)計(jì),包括統(tǒng)計(jì)輸入輸出量和/或容量。進(jìn)一步地,所述軟RAID自動(dòng)管理的步驟還包括以下操作中的一種或幾種
在需要?jiǎng)h除RAID組時(shí),調(diào)用預(yù)配置的刪除RAID組的API,用于刪除指定RAID組,并清 除對應(yīng)磁盤上的超級塊信息;
在需要?jiǎng)h除卷時(shí),調(diào)用預(yù)配置的刪除卷的API,用于卸載卷、刪除邏輯卷(LV)、刪除卷 組(VG)、刪除物理卷(PV);
在有新磁盤插入且需要將其添加為熱備盤時(shí),調(diào)用預(yù)配置的添加熱備盤的API,用于將 該新磁盤作為熱備盤加入到現(xiàn)有的組中;
在需要擴(kuò)容時(shí),調(diào)用預(yù)配置的擴(kuò)容API,用于將RAID組內(nèi)的熱備盤配置成工作盤。為解決上述技術(shù)問題,本發(fā)明還提供一種軟獨(dú)立冗余磁盤陣列(RAID)的管理系 統(tǒng),包括初始化子系統(tǒng)、軟RAID自動(dòng)創(chuàng)建子系統(tǒng)以及軟RAID自動(dòng)管理子系統(tǒng),其中
所述初始化子系統(tǒng),用于獲取磁盤超級塊信息,根據(jù)所述超級塊信息嘗試恢復(fù)硬盤中 的RAID組;
所述軟RAID自動(dòng)創(chuàng)建子系統(tǒng),用于查詢磁盤簇(JBOD)信息和磁盤信息,根據(jù)查詢結(jié)果 選擇合適的建組建卷規(guī)則;根據(jù)選擇的建組建卷規(guī)則執(zhí)行以下操作創(chuàng)建RAID組、創(chuàng)建卷、 格式化卷、掛載卷;
所述軟RAID自動(dòng)管理子系統(tǒng),用于周期性查詢以下信息中的一種或幾種并上報(bào) RAID組信息、磁盤信息、卷信息。進(jìn)一步地,所述軟RAID自動(dòng)創(chuàng)建子系統(tǒng)包括查詢單元、選擇規(guī)則單元和操作執(zhí)行 單元,其中
所述查詢單元用于查詢JBOD信息和磁盤信息;
所述選擇規(guī)則單元用于根據(jù)查詢到的JBOD信息從預(yù)先配置的建組建卷規(guī)則中選擇 一個(gè)符合當(dāng)前JBOD信息情況的建組建卷規(guī)則;
所述操作執(zhí)行單元用于根據(jù)選擇的建組建卷規(guī)則執(zhí)行以下操作創(chuàng)建RAID組、創(chuàng)建 卷、格式化卷、掛載卷。進(jìn)一步地,所述軟RAID自動(dòng)管理子系統(tǒng),還用于根據(jù)周期性查詢的結(jié)果進(jìn)行性能統(tǒng)計(jì)并上報(bào),包括統(tǒng)計(jì)輸入輸出量和/或容量。本發(fā)明實(shí)施例提供一套封裝成API接口的模塊,提供給上層調(diào)用。模塊的形式可 以是動(dòng)態(tài)庫、靜態(tài)庫。上層在上電流程中,可以調(diào)用這些接口進(jìn)行建組、建卷、格式化卷、掛 卷等一系列操作。在版本的運(yùn)行過程中,也可以定時(shí)地調(diào)用查詢接口來獲取當(dāng)前卷組的基 本信息,從而對卷組的狀態(tài)進(jìn)行管理,并作出相應(yīng)的告警和統(tǒng)計(jì)。相比手動(dòng)管理方法,本文 所提供的自動(dòng)管理方法可避免人為的輸入錯(cuò)誤,效率更高。
圖1為本發(fā)明實(shí)施例軟RAID模塊中所涉及的物理層次結(jié)構(gòu)示意圖; 圖2為本發(fā)明實(shí)施例系統(tǒng)結(jié)構(gòu)示意圖3為本發(fā)明實(shí)施例與RAID相關(guān)的軟件系統(tǒng)的上電初始化流程圖。
具體實(shí)施例方式針對應(yīng)用了 JBOD的項(xiàng)目,每個(gè)節(jié)點(diǎn)管理的硬盤增多,總的硬盤容量增加,從安全 和成本兩個(gè)角度考慮,使用RAID5是比較合適的一個(gè)方案。本發(fā)明的軟RAID管理方法雖然 針對RAID5設(shè)計(jì),但本發(fā)明的設(shè)計(jì)思路也可應(yīng)用于其他軟RAID的管理。下文中將結(jié)合附圖對本發(fā)明的實(shí)施例進(jìn)行詳細(xì)說明。需要說明的是,在不沖突的 情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互任意組合。實(shí)施例1
本文所提供的軟RAID的管理方法主要用于軟RAID自動(dòng)初始化、創(chuàng)建和管理,包括
一、軟RAID初始化的步驟,包括獲取磁盤超級塊信息,根據(jù)所述超級塊信息嘗試恢復(fù) 硬盤中的RAID組;
二、軟RAID自動(dòng)創(chuàng)建的步驟,包括查詢JBOD信息和磁盤信息,根據(jù)查詢結(jié)果選擇合 適的建組建卷規(guī)則;根據(jù)選擇的建組建卷規(guī)則執(zhí)行以下操作創(chuàng)建RAID組、創(chuàng)建卷、格式化 卷、掛載卷;
所述根據(jù)查詢結(jié)果選擇合適的建組建卷規(guī)則的步驟包括根據(jù)查詢到的JBOD信息從 預(yù)先配置的建組建卷規(guī)則中選擇一個(gè)符合當(dāng)前JBOD信息情況的建組建卷規(guī)則。三、軟RAID自動(dòng)管理的步驟,包括周期性查詢以下信息中的一種或幾種并上報(bào) RAID組信息、磁盤信息、卷信息。在步驟三中,查詢的信息可以提供給需要的模塊,此外還可根據(jù)周期性查詢的結(jié) 果進(jìn)行性能統(tǒng)計(jì),包括統(tǒng)計(jì)輸入輸出量和/或容量。對于步驟一中的操作,可通過調(diào)用 APKApplication Programming Interface,應(yīng) 用程序編程接口)的方式實(shí)現(xiàn),如在執(zhí)行軟RAID初始化的步驟前,預(yù)先配置用于軟RAID初 始化的API 恢復(fù)API ;在執(zhí)行軟RAID初始化的步驟時(shí),調(diào)用所述恢復(fù)API完成軟RAID初始 化的步驟。同樣地,對于步驟二中的操作,也可通過調(diào)用相應(yīng)的API來實(shí)現(xiàn),如在執(zhí)行軟RAID 自動(dòng)創(chuàng)建的步驟前,預(yù)先配置以下API 查詢JBOD信息的API、查詢磁盤信息的API、創(chuàng)建 RAID組的API、創(chuàng)建卷的API、格式化卷的API、掛載卷的API ;則上述查詢JBOD信息的步驟 包括調(diào)用查詢JBOD信息的API進(jìn)行JBOD信息查詢;上述查詢磁盤信息的步驟包括調(diào)用查詢磁盤信息的API進(jìn)行磁盤信息查詢操作;上述創(chuàng)建RAID組的步驟包括調(diào)用創(chuàng)建RAID 組的API進(jìn)行創(chuàng)建RAID組的操作;上述創(chuàng)建卷的步驟包括調(diào)用創(chuàng)建卷的API進(jìn)行創(chuàng)建卷 的操作;上述格式化卷的步驟包括調(diào)用格式化卷的API進(jìn)行格式化卷的操作;上述掛載卷 的步驟包括調(diào)用掛載卷的API進(jìn)行掛載卷的操作。優(yōu)選地,在執(zhí)行軟RAID自動(dòng)創(chuàng)建的步驟前,預(yù)先配置以下API 查詢RAID組信息 的API、查詢卷信息的API ;在創(chuàng)建RAID組后創(chuàng)建卷前,調(diào)用查詢RAID組信息的API進(jìn)行 RAID組信息查詢的操作;在掛載卷后,調(diào)用查詢卷信息的API進(jìn)行卷信息查詢操作。除了上述提到的軟RAID自動(dòng)管理步驟之外,還可以進(jìn)行其他的管理操作,包括 以下操作中的一種或幾種在需要?jiǎng)h除RAID組時(shí),調(diào)用刪除RAID組的API,用于刪除指定 RAID組,并清除對應(yīng)磁盤上的超級塊信息;在需要?jiǎng)h除卷時(shí),調(diào)用刪除卷的API,用于卸載 卷、刪除邏輯卷(LV)、刪除卷組(VG)、刪除物理卷(PV);在有新磁盤插入且需要將其添加為 熱備盤時(shí),調(diào)用添加熱備盤的API,用于將該新磁盤作為熱備盤加入到現(xiàn)有的組中;在需要 擴(kuò)容時(shí),調(diào)用擴(kuò)容API,用于將RAID組內(nèi)的熱備盤配置成工作盤。系統(tǒng)要實(shí)現(xiàn)上述該些功能,需要建立在已經(jīng)實(shí)現(xiàn)了相關(guān)API功能的RAID模塊(物 理層次如圖1所示)的基礎(chǔ)之上,該些API可供系統(tǒng)來調(diào)用。上述各種API是預(yù)先進(jìn)行配置的,包括對相應(yīng)的命令(如軟RAID管理的命令或卷 組管理命令)分別進(jìn)行編譯,封裝成模塊或動(dòng)態(tài)庫或靜態(tài)庫(根據(jù)命令的特性,可以將部分 命令封裝成模塊,將部分命令封裝成靜態(tài)庫,或者將部分命令封裝成動(dòng)態(tài)庫)。在封裝API 時(shí)可采用系統(tǒng)調(diào)用的方式實(shí)現(xiàn)。配置的API包括以下API的一種或幾種
創(chuàng)建RAID組的API、刪除RAID組的API、查詢RAID信息的API、創(chuàng)建卷的API、格式化 卷的API、掛載卷的API、刪除卷的API、查詢卷信息的API、查詢磁盤信息的API、查詢JBOD 信息的API、添加熱備盤的API、擴(kuò)容API、恢復(fù)API。通過采用API對RAID及其卷組進(jìn)行管理,從而達(dá)到可以自動(dòng)化管理軟RAID的目 標(biāo)。下面分別對各種API進(jìn)行詳細(xì)介紹 ▲創(chuàng)建RAID組的API
創(chuàng)建RAID組的API接口提供了創(chuàng)建RAID組的功能,可以通過參數(shù)來選擇創(chuàng)建不同級 別的RAID (RAIDO、RAIDl或RAID5)、選擇不同的調(diào)帶大小(通常選擇4K-512K)、選擇加入 RAID組的工作磁盤以及熱備盤的個(gè)數(shù)和相應(yīng)的磁盤序列號。▲刪除 RAID 組的 API
刪除RAID組的API接口提供了對指定RAID組的刪除功能,并清除對應(yīng)磁盤上的超級 塊fe息?!樵僐AID信息的API
查詢RAID信息的API提供了 RAID信息查詢的功能,主要包括查詢一下信息中的一種 或多種RAID組的狀態(tài)、主次設(shè)備號、組名、組的容量、組的剩余容量、RAID級別、調(diào)帶大小、 工作盤個(gè)數(shù)、熱備盤個(gè)數(shù)以及相應(yīng)的磁盤列表?!鴦?chuàng)建卷的API
創(chuàng)建卷的API接口用于進(jìn)行以下操作創(chuàng)建物理卷(PV)、卷組(VG)和邏輯卷(LV),其
7中PV和VG是對上層透明的,上層只看到LV和LV所掛載的目錄?!袷交淼腁PI
格式化卷的API接口用于格式化卷?!鴴燧d卷的API
掛載卷的API用于將卷掛載到指定掛載點(diǎn)(簡稱為掛卷)?!鴦h除卷的API
刪除卷的API接口用于進(jìn)行以下操作卸載卷、刪除LV、刪除VG、刪除PV0▲查詢卷信息的API
查詢卷信息的API用于提供以下信息中一種或幾種的查詢卷的狀態(tài)、卷的主次設(shè)備 號、卷名、卷容量、卷的剩余容量、是否掛載和相應(yīng)的掛載點(diǎn)。▲查詢磁盤信息的API
查詢磁盤信息的API用于提供以下信息中一種或幾種的查詢磁盤的狀態(tài)、磁盤的主 次設(shè)備號、磁盤盤符、磁盤序列號、磁盤所屬卷組、磁盤大小、磁盤槽位號?!樵僇BOD信息的API
用于查詢JBOD有多少個(gè)磁盤的槽位,以及JBOD的廠商信息等?!砑訜醾浔P的API
用于在有新磁盤插入時(shí),將該新磁盤作為熱備盤加入到現(xiàn)有的組中?!鴶U(kuò)容 API
包括組擴(kuò)容和卷擴(kuò)容的功能,用于將RAID組內(nèi)的熱備盤配置成工作盤。▲恢復(fù) API
用于在操作系統(tǒng)復(fù)位后,或者是將JBOD接到其他服務(wù)器上后,提供恢復(fù)API,包括獲 取每個(gè)硬盤的超級塊信息,根據(jù)超級塊信息中的卷組信息恢復(fù)相應(yīng)的卷組。實(shí)施例2
實(shí)現(xiàn)上述軟RAID管理的系統(tǒng),包括初始化子系統(tǒng)、軟RAID自動(dòng)創(chuàng)建子系統(tǒng)以及軟RAID 自動(dòng)管理子系統(tǒng),其中
所述初始化子系統(tǒng),用于獲取磁盤超級塊信息,根據(jù)所述超級塊信息嘗試恢復(fù)硬盤中 的RAID組;
所述軟RAID自動(dòng)創(chuàng)建子系統(tǒng),用于查詢JBOD信息和磁盤信息,根據(jù)查詢結(jié)果選擇合 適的建組建卷規(guī)則;根據(jù)選擇的建組建卷規(guī)則執(zhí)行以下操作創(chuàng)建RAID組、創(chuàng)建卷、格式化 卷、掛載卷;
所述軟RAID自動(dòng)管理子系統(tǒng),用于周期性查詢以下信息中的一種或幾種并上報(bào) RAID組信息、磁盤信息、卷信息。優(yōu)選地,所述軟RAID自動(dòng)創(chuàng)建子系統(tǒng)包括查詢單元、選擇規(guī)則單元和操作執(zhí)行單 元,其中
所述查詢單元用于查詢JBOD信息和磁盤信息;
所述選擇規(guī)則單元用于根據(jù)查詢到的JBOD信息從預(yù)先配置的建組建卷規(guī)則中選擇 一個(gè)符合當(dāng)前JBOD信息情況的建組建卷規(guī)則;
所述操作執(zhí)行單元用于根據(jù)選擇的建組建卷規(guī)則執(zhí)行以下操作創(chuàng)建RAID組、創(chuàng)建 卷、格式化卷、掛載卷。
優(yōu)選地,所述軟RAID自動(dòng)管理子系統(tǒng),還用于根據(jù)周期性查詢的結(jié)果進(jìn)行性能統(tǒng) 計(jì)并上報(bào),包括統(tǒng)計(jì)輸入輸出量和/或容量。下面結(jié)合圖2對上述系統(tǒng)的一種具體實(shí)現(xiàn)進(jìn)行說明,上述各子系統(tǒng)及相應(yīng)單元的 功能,可通過以下三個(gè)模塊實(shí)現(xiàn)軟RAID管理模塊,資源管理模塊和操作維護(hù)模塊,其中
所述軟RAID管理模塊,用于配置API ;
所述資源管理模塊,用于在所述軟RAID初始化時(shí)、在軟RAID自動(dòng)創(chuàng)建時(shí)以及在對軟 RAID自動(dòng)管理時(shí)下發(fā)控制命令,觸發(fā)操作維護(hù)模塊;
所述操作維護(hù)模塊,用于調(diào)用軟RAID管理模塊中的相應(yīng)的API進(jìn)行操作。優(yōu)選地,所述軟RAID管理模塊,用于對軟RAID管理的命令和對卷組管理的命令分 別進(jìn)行編譯,封裝成模塊或動(dòng)態(tài)庫或靜態(tài)庫,即API,供上層調(diào)用。封裝的API接口可分別通 過調(diào)用Iinux內(nèi)核中MD和DM兩部分驅(qū)動(dòng)提供的ioctl API接口來實(shí)現(xiàn)。其中,所有操作 均可以直接通過Iinux的系統(tǒng)調(diào)用完成。優(yōu)選地,所述軟RAID管理模塊配置的API包括以下API的一種或幾種創(chuàng)建RAID 組的API、刪除RAID組的API、查詢RAID信息的API、創(chuàng)建卷的API、格式化卷的API、掛載卷 的API、刪除卷的API、查詢卷信息的API、查詢磁盤信息的API、查詢JBOD信息的API、添加 熱備盤的API、擴(kuò)容API、恢復(fù)API。優(yōu)選地,所述資源管理模塊用于在軟RAID自動(dòng)創(chuàng)建時(shí),指示操作維護(hù)模塊調(diào)用軟 RAID管理模塊中的查詢JBOD信息的API進(jìn)行JBOD信息查詢、調(diào)用查詢磁盤信息的API進(jìn) 行磁盤信息查詢操作;在查詢到所有的磁盤信息和JBOD信息后,資源管理模塊選擇空閑的 磁盤用來建組,根據(jù)建組規(guī)則(例如包括每個(gè)組個(gè)數(shù),建組的個(gè)數(shù),每個(gè)組磁盤對應(yīng)的槽位 等)指示操作維護(hù)模塊調(diào)用軟RAID管理模塊中的創(chuàng)建RAID組的API進(jìn)行創(chuàng)建RAID組的操 作;完成建組后,再指示操作維護(hù)模塊調(diào)用軟RAID管理模塊中的查詢RAID信息的API進(jìn)行 RAID信息查詢的操作,根據(jù)組信息的剩余空間決定所創(chuàng)建卷的大小,根據(jù)建卷規(guī)則(例如包 括卷的個(gè)數(shù)、卷文件系統(tǒng)類型、chunk (塊)大小等)指示操作維護(hù)模塊調(diào)用軟RAID管理模 塊中的創(chuàng)建卷的API進(jìn)行創(chuàng)建卷、調(diào)用格式化卷的API進(jìn)行格式化卷、調(diào)用掛載卷的API進(jìn) 行掛卷操作;建卷完成后,指示操作維護(hù)模塊調(diào)用軟RAID管理模塊中的查詢卷信息的API 進(jìn)行卷信息查詢操作。優(yōu)選地,所述資源管理模塊還用于在對軟RAID自動(dòng)管理時(shí),觸發(fā)操作維護(hù)模塊調(diào) 用軟RAID管理模塊中的相應(yīng)的API進(jìn)行以下操作查詢卷、組、磁盤信息以使數(shù)據(jù)庫對每 個(gè)節(jié)點(diǎn)的信息進(jìn)行更新和管理,以及在發(fā)現(xiàn)有新的磁盤插入時(shí),指示操作維護(hù)模塊發(fā)起磁 盤信息查詢,當(dāng)查詢到磁盤狀態(tài)為空閑時(shí),指示操作維護(hù)模塊調(diào)用RAID模塊的添加熱備盤 API,將該新磁盤加入到某個(gè)組做空閑盤。當(dāng)組校驗(yàn)完成并且有兩個(gè)以上的熱備盤,需將某 個(gè)熱備盤設(shè)置成工作盤時(shí),指示操作維護(hù)模塊調(diào)用RAID模塊的擴(kuò)容API,將該RAID組擴(kuò)容寸。優(yōu)選地,所述操作維護(hù)模塊直接和軟RAID管理模塊交互,根據(jù)資源管理模塊的指 示調(diào)用RAID管理模塊中的API接口完成以下操作中的一種或幾種磁盤信息的查詢、卷信 息的查詢、組信息的查詢、卷的創(chuàng)建、卷的刪除、組的創(chuàng)建、組的刪除、JBOD信息的查詢、添加 熱備盤、擴(kuò)容和恢復(fù)。此外,還在軟RAID自動(dòng)管理時(shí),還用于定期調(diào)用RAID管理模塊中涉 及查詢的API查詢以下信息中的一種或幾種卷信息、組信息、磁盤信息,根據(jù)查詢的結(jié)果
9進(jìn)行性能統(tǒng)計(jì)包括統(tǒng)計(jì)當(dāng)前的IO (輸入輸出)值(單位為字節(jié)/秒)和容量(單位為字節(jié)或 兆等)。當(dāng)判斷發(fā)生有異常時(shí),觸發(fā)告警或通知。優(yōu)選地,所述系統(tǒng)還包括數(shù)據(jù)庫模塊,其用于存儲磁盤信息、卷信息和組信息,以 及根據(jù)上層配置的參數(shù)在上電初始化時(shí)進(jìn)行建組規(guī)則和建卷規(guī)則的配置,如配置建組、建 卷參數(shù)。實(shí)施例3
下面將結(jié)合圖3對實(shí)施例1中所述的初始化和自動(dòng)創(chuàng)建的流程進(jìn)行詳細(xì)描述。上電初 始化流程主要包括建組、建卷、格式化卷、掛卷等一系列的流程,通過初始化接口可被調(diào)用, 如圖3所示,包括以下步驟
5001資源管理模塊在版本啟動(dòng)時(shí)向操作維護(hù)模塊下發(fā)初始化命令;
5002操作維護(hù)模塊指示RAID管理模塊調(diào)用軟RAID初始化流程,包括獲取磁盤超級塊 信息,根據(jù)所述超級塊信息嘗試恢復(fù)硬盤中的RAID組;
通過初始化流程中提供的恢復(fù)卷組的機(jī)制,可以避免重復(fù)建組和建卷。S101:資源管理模塊指示操作維護(hù)模塊發(fā)起JBOD信息以及相應(yīng)磁盤信息的查 詢;
5102操作維護(hù)模塊指示RAID管理模塊調(diào)用JBOD信息查詢API和磁盤查詢API ;
5103=RAID管理模塊向操作維護(hù)模塊返回JBOD信息以及對應(yīng)的磁盤信息;
其中JBOD信息包括JBOD總的槽位數(shù),磁盤信息包括實(shí)際插入的總磁盤數(shù)、每個(gè)磁盤的 磁盤序列號和磁盤的狀態(tài)等。S104 操作維護(hù)模塊向資源管理模塊上報(bào)JBOD信息以及對應(yīng)的磁盤信息;
5105資源管理模塊將JBOD信息以及對應(yīng)的磁盤信息發(fā)送至數(shù)據(jù)庫模塊;
5106數(shù)據(jù)庫模塊更新數(shù)據(jù)表,數(shù)據(jù)庫模塊根據(jù)資源管理模塊上報(bào)的JBOD的信息查詢 預(yù)配置的建組建卷規(guī)則,找到與JBOD信息對應(yīng)的建組建卷規(guī)則;
具體地,根據(jù)JBOD有多少個(gè)磁盤的槽位(不考慮JBOD上是否插有硬盤)進(jìn)行查詢。對 應(yīng)不同的槽位數(shù)有相應(yīng)的建組和建卷規(guī)則。S107 數(shù)據(jù)庫模塊向資源管理模塊返回響應(yīng),表示其收到JBOD信息以及對應(yīng)的磁
盤fe息;
S108-S109 資源管理模塊向數(shù)據(jù)庫模塊發(fā)起建組建卷規(guī)則查詢;數(shù)據(jù)庫模塊返回響 應(yīng),將查詢到的建組建卷規(guī)則通知資源管理模塊;
在其他實(shí)施例中,數(shù)據(jù)庫模塊也可以在S107中,將建組建卷規(guī)則返回給資源管理模塊。SllO 資源管理模塊根據(jù)這些規(guī)則觸發(fā)建組的流程,向操作維護(hù)模塊下發(fā)建組命 令;
5111操作維護(hù)模塊調(diào)用RAID模塊的創(chuàng)建RAID組的API ;
5112=RAID管理模塊返回建組結(jié)果;
5113操作維護(hù)模塊向資源管理模塊發(fā)送響應(yīng),通知其建組結(jié)果;
Sl 14:資源管理模塊發(fā)起查詢所有組信息流程,向操作維護(hù)模塊發(fā)送查詢所有組信息 命令;
S115 操作維護(hù)模塊調(diào)用RAID管理模塊的查詢組信息的API ;
105116=RAID管理模塊返回組信息查詢結(jié)果;
5117操作維護(hù)管理模塊向資源管理模塊上報(bào)查詢到的組信息;
5118資源管理模塊將查詢到的組信息發(fā)送至數(shù)據(jù)庫模塊; Sl 19 數(shù)據(jù)庫模塊對這些信息進(jìn)行更新和維護(hù);
S120 數(shù)據(jù)庫模塊向資源管理模塊返回響應(yīng),表示其接收到組信息; S114-S120為可選步驟,查詢組信息以確保建組成功,為后續(xù)建卷做準(zhǔn)備。S121 資源管理模塊根據(jù)建卷的規(guī)則發(fā)起建卷的流程,向操作維護(hù)模塊下發(fā)建卷 命令;
5122操作維護(hù)模塊調(diào)用RAID管理模塊的建卷API、格式化卷API、掛載卷API,分別完 成創(chuàng)建卷、格式化卷、掛載卷操作;
5123所述RAID管理模塊向操作維護(hù)模塊返回建卷結(jié)果;
5124所述操作維護(hù)模塊向資源管理模塊返回建卷結(jié)果;
至此,初始化流程結(jié)束,優(yōu)選地,為了確保建卷成功,還可執(zhí)行后續(xù)S125-S131的查詢 卷信息的操作。S125 資源管理模塊發(fā)起查詢所有卷信息流程,向操作維護(hù)模塊發(fā)送查詢所有卷 信息命令;
5126操作維護(hù)模塊調(diào)用RAID管理模塊的卷信息查詢API ;
5127:RAID管理模塊向操作維護(hù)模塊返回查詢到的卷信息;
5128所述操作維護(hù)模塊向資源管理模塊上報(bào)查詢到的卷信息;
5129資源管理模塊將查詢到的卷信息發(fā)送至數(shù)據(jù)庫模塊;
5130數(shù)據(jù)庫模塊這些信息進(jìn)行更新和維護(hù);
5131數(shù)據(jù)庫模塊向資源管理模塊返回響應(yīng),表示其接收到卷信息。在其他實(shí)施例中,磁盤信息的查詢也可不在步驟101執(zhí)行,而是在步驟109之后, 建組之前執(zhí)行。采用上述流程,系統(tǒng)上電自動(dòng)完成RAID組和邏輯組的創(chuàng)建,后續(xù)這些RAID可以被 用到整個(gè)系統(tǒng)中用作存儲管理。并且,系統(tǒng)在完成RAID和邏輯卷的創(chuàng)建后,可以對外提供 一個(gè)個(gè)的掛載點(diǎn),文件系統(tǒng)在讀寫文件時(shí)就訪問這些掛載點(diǎn)。對文件系統(tǒng)而言,這些RAID 是透明的。它往掛載點(diǎn)讀寫數(shù)據(jù),其實(shí)是訪問的已經(jīng)創(chuàng)建好的RAID中。實(shí)施例4
本實(shí)施例主要描述工作態(tài)卷組自動(dòng)管理流程,包括對RAID組和邏輯卷的狀態(tài)進(jìn)行監(jiān) 控,并將監(jiān)控結(jié)果反映給用戶。上電初始化和自動(dòng)創(chuàng)建卷組的流程完成后,系統(tǒng)進(jìn)入工作模式,該模式中操作維 護(hù)模塊根據(jù)預(yù)定時(shí)間(例如磁盤、組信息的查詢間隔為40s/次,卷信息的查詢間隔為2s/ 次)定時(shí)的查詢組、卷、磁盤信息,以此來監(jiān)控組、卷、磁盤的狀態(tài)。當(dāng)這些狀態(tài)發(fā)生異常時(shí), 操作維護(hù)模塊給出告警或通知,當(dāng)狀態(tài)恢復(fù)正常時(shí),恢復(fù)告警。另外操作維護(hù)模塊還可根據(jù)定時(shí)查詢到的信息,進(jìn)行性能統(tǒng)計(jì),例如統(tǒng)計(jì)出當(dāng)前 的IO值即每秒的輸入輸出字節(jié)數(shù)和容量。操作維護(hù)模塊提供的邏輯卷容量信息和IO性能 統(tǒng)計(jì)信息,會定時(shí)地將統(tǒng)計(jì)信息通過消息傳給需要的模塊,比如Chunk均衡算法時(shí)可能需 要這些信息,此外,還可以按照需求對外提供這些統(tǒng)計(jì)信息。
除上述管理操作外,還可以進(jìn)行以下操作中的一種或幾種在需要?jiǎng)h除RAID組 時(shí),調(diào)用刪除RAID組的API,用于刪除指定RAID組,并清除對應(yīng)磁盤上的超級塊信息;在需 要?jiǎng)h除卷時(shí),調(diào)用所述刪除卷的API,用于卸載卷、刪除LV、刪除VG、刪除PV ;在有新磁盤插 入且需要將其添加為熱備盤時(shí),調(diào)用所述添加熱備盤的API,用于將該新磁盤作為熱備盤加 入到現(xiàn)有的組中;在需要擴(kuò)容時(shí),調(diào)用所述擴(kuò)容API,用于將RAID組內(nèi)的熱備盤配置成工作
ο本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過程序來指令 相關(guān)硬件完成,所述程序可以存儲于計(jì)算機(jī)可讀存儲介質(zhì)中,如只讀存儲器、磁盤或光盤 等??蛇x地,上述實(shí)施例的全部或部分步驟也可以使用一個(gè)或多個(gè)集成電路來實(shí)現(xiàn)。相應(yīng) 地,上述實(shí)施例中的各模塊可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí) 現(xiàn)。本發(fā)明不限制于任何特定形式的硬件和軟件的結(jié)合。當(dāng)然,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟 悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變 形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
1權(quán)利要求
一種軟獨(dú)立冗余磁盤陣列(RAID)的管理方法,包括軟RAID初始化的步驟,包括獲取磁盤超級塊信息,根據(jù)所述超級塊信息嘗試恢復(fù)硬盤中的RAID組;軟RAID自動(dòng)創(chuàng)建的步驟,包括查詢磁盤簇(JBOD)信息和磁盤信息,根據(jù)查詢結(jié)果選擇合適的建組建卷規(guī)則;根據(jù)選擇的建組建卷規(guī)則執(zhí)行以下操作創(chuàng)建RAID組、創(chuàng)建卷、格式化卷、掛載卷;軟RAID自動(dòng)管理的步驟,包括周期性查詢以下信息中的一種或幾種并上報(bào) RAID組信息、磁盤信息、卷信息。
2.如權(quán)利要求1所述的方法,其特征在于在執(zhí)行軟RAID初始化的步驟前,預(yù)先配置用于軟RAID初始化的應(yīng)用程序編程接口 (API)恢復(fù) API ;在執(zhí)行軟RAID初始化的步驟時(shí),調(diào)用所述恢復(fù)API完成軟RAID初始化的步驟。
3.如權(quán)利要求1所述的方法,其特征在于所述根據(jù)查詢結(jié)果選擇合適的建組建卷規(guī)則的步驟包括根據(jù)查詢到的JBOD信息從 預(yù)先配置的建組建卷規(guī)則中選擇一個(gè)符合當(dāng)前JBOD信息情況的建組建卷規(guī)則。
4.如權(quán)利要求1-3中任一項(xiàng)所述的方法,其特征在于在執(zhí)行軟RAID自動(dòng)創(chuàng)建的步驟前,預(yù)先配置以下API 查詢JBOD信息的API、查詢磁盤 信息的API、創(chuàng)建RAID組的API、創(chuàng)建卷的API、格式化卷的API、掛載卷的API ;所述查詢JBOD信息的步驟包括調(diào)用查詢JBOD信息的API進(jìn)行JBOD信息查詢; 所述查詢磁盤信息的步驟包括調(diào)用查詢磁盤信息的API進(jìn)行磁盤信息查詢操作; 所述創(chuàng)建RAID組的步驟包括調(diào)用創(chuàng)建RAID組的API進(jìn)行創(chuàng)建RAID組的操作; 所述創(chuàng)建卷的步驟包括調(diào)用創(chuàng)建卷的API進(jìn)行創(chuàng)建卷的操作; 所述格式化卷的步驟包括調(diào)用格式化卷的API進(jìn)行格式化卷的操作; 所述掛載卷的步驟包括調(diào)用掛載卷的API進(jìn)行掛載卷的操作。
5.如權(quán)利要求1所述的方法,其特征在于在執(zhí)行軟RAID自動(dòng)創(chuàng)建的步驟前,預(yù)先配置以下API 查詢RAID組信息的API、查詢卷 信息的API ;在創(chuàng)建RAID組后創(chuàng)建卷前,所述方法還包括調(diào)用查詢RAID組信息的API進(jìn)行RAID 組信息查詢的操作;在掛載卷后,所述方法還包括調(diào)用查詢卷信息的API進(jìn)行卷信息查詢操作。
6.如權(quán)利要求1所述的方法,其特征在于所述軟RAID自動(dòng)管理的步驟還包括,根據(jù)周期性查詢的結(jié)果進(jìn)行性能統(tǒng)計(jì),包括統(tǒng)計(jì) 輸入輸出量和/或容量。
7.如權(quán)利要求1所述的方法,其特征在于所述軟RAID自動(dòng)管理的步驟還包括以下操作中的一種或幾種 在需要?jiǎng)h除RAID組時(shí),調(diào)用預(yù)配置的刪除RAID組的API,用于刪除指定RAID組,并清 除對應(yīng)磁盤上的超級塊信息;在需要?jiǎng)h除卷時(shí),調(diào)用預(yù)配置的刪除卷的API,用于卸載卷、刪除邏輯卷(LV)、刪除卷 組(VG)、刪除物理卷(PV);在有新磁盤插入且需要將其添加為熱備盤時(shí),調(diào)用預(yù)配置的添加熱備盤的API,用于將 該新磁盤作為熱備盤加入到現(xiàn)有的組中;在需要擴(kuò)容時(shí),調(diào)用預(yù)配置的擴(kuò)容API,用于將RAID組內(nèi)的熱備盤配置成工作盤。
8.一種軟獨(dú)立冗余磁盤陣列(RAID)的管理系統(tǒng),包括初始化子系統(tǒng)、軟RAID自動(dòng)創(chuàng)建 子系統(tǒng)以及軟RAID自動(dòng)管理子系統(tǒng),其中所述初始化子系統(tǒng),用于獲取磁盤超級塊信息,根據(jù)所述超級塊信息嘗試恢復(fù)硬盤中 的RAID組;所述軟RAID自動(dòng)創(chuàng)建子系統(tǒng),用于查詢磁盤簇(JBOD)信息和磁盤信息,根據(jù)查詢結(jié)果 選擇合適的建組建卷規(guī)則;根據(jù)選擇的建組建卷規(guī)則執(zhí)行以下操作創(chuàng)建RAID組、創(chuàng)建卷、 格式化卷、掛載卷;所述軟RAID自動(dòng)管理子系統(tǒng),用于周期性查詢以下信息中的一種或幾種并上報(bào) RAID組信息、磁盤信息、卷信息。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于所述軟RAID自動(dòng)創(chuàng)建子系統(tǒng)包括查詢單 元、選擇規(guī)則單元和操作執(zhí)行單元,其中所述查詢單元用于查詢JBOD信息和磁盤信息;所述選擇規(guī)則單元用于根據(jù)查詢到的JBOD信息從預(yù)先配置的建組建卷規(guī)則中選擇 一個(gè)符合當(dāng)前JBOD信息情況的建組建卷規(guī)則;所述操作執(zhí)行單元用于根據(jù)選擇的建組建卷規(guī)則執(zhí)行以下操作創(chuàng)建RAID組、創(chuàng)建 卷、格式化卷、掛載卷。
10.如權(quán)利要求8所述的系統(tǒng),其特征在于所述軟RAID自動(dòng)管理子系統(tǒng),還用于根據(jù)周期性查詢的結(jié)果進(jìn)行性能統(tǒng)計(jì)并上報(bào),包 括統(tǒng)計(jì)輸入輸出量和/或容量。
全文摘要
本發(fā)明公開了一種Linux操作系統(tǒng)中軟RAID的管理方法和系統(tǒng),提高軟RAID的管理效率。所述方法包括軟RAID初始化的步驟,包括獲取磁盤超級塊信息,根據(jù)所述超級塊信息嘗試恢復(fù)硬盤中的RAID組;軟RAID自動(dòng)創(chuàng)建的步驟,包括查詢磁盤簇(JBOD)信息和磁盤信息,根據(jù)查詢結(jié)果選擇合適的建組建卷規(guī)則;根據(jù)選擇的建組建卷規(guī)則執(zhí)行以下操作創(chuàng)建RAID組、創(chuàng)建卷、格式化卷、掛載卷;軟RAID自動(dòng)管理的步驟,包括周期性查詢以下信息中的一種或幾種并上報(bào)RAID組信息、磁盤信息、卷信息。
文檔編號G06F3/06GK101984399SQ20101052517
公開日2011年3月9日 申請日期2010年10月29日 優(yōu)先權(quán)日2010年10月29日
發(fā)明者何抗洪, 韓盛中, 高韌 申請人:中興通訊股份有限公司