一種將Raid的superblock分區(qū)域存儲(chǔ)的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種將Raid的superblock分區(qū)域存儲(chǔ)的方法及裝置。
【背景技術(shù)】
[0002]在傳統(tǒng)磁盤(pán)陣列(RedundantArrays of Inexpensive Disks,RAID)中超級(jí)塊superblock用于記錄磁盤(pán)所屬的raid信息、raid狀態(tài)和數(shù)據(jù)的使用情況等方面起到重要的作用。
[0003]傳統(tǒng)的raid的superblock是集中存儲(chǔ)在磁盤(pán)的一片區(qū)域,這種存儲(chǔ)方式存在著巨大的缺點(diǎn)是訪(fǎng)問(wèn)沖突大,每次訪(fǎng)問(wèn)需要加鎖,在雙控制器同時(shí)訪(fǎng)問(wèn)的過(guò)程中,這個(gè)問(wèn)題尤為嚴(yán)重,需要處理復(fù)雜的訪(fǎng)問(wèn)沖突;而且傳統(tǒng)raid的superblock的另一個(gè)問(wèn)題是訪(fǎng)問(wèn)次數(shù)過(guò)多,而寫(xiě)磁盤(pán)同一區(qū)域的次數(shù)與出現(xiàn)壞塊的可能性成正比,而且一旦superblock出現(xiàn)問(wèn)題,整個(gè)raid重啟后就無(wú)法工作。
【發(fā)明內(nèi)容】
[0004]為解決上述技術(shù)問(wèn)題,本發(fā)明提出了一種將Raid的superblock分區(qū)域存儲(chǔ)的方法及裝置,根據(jù)raid信息的訪(fǎng)問(wèn)頻次與訪(fǎng)問(wèn)沖突將superblock分開(kāi)區(qū)域存儲(chǔ),一方面減少了 raid運(yùn)行過(guò)程中對(duì)于superblock的訪(fǎng)問(wèn)沖突和訪(fǎng)問(wèn)次數(shù),另一方面也避免了控制器之間產(chǎn)生訪(fǎng)問(wèn)superblock的沖突。
[0005]本發(fā)明提供了一種將Raid的superblock分區(qū)域存儲(chǔ)的方法,該方法包括:
[0006]根據(jù)磁盤(pán)整列raid的超級(jí)塊superblock中存放的信息的訪(fǎng)問(wèn)頻次將所述superblock進(jìn)行區(qū)域劃分,得到低頻訪(fǎng)問(wèn)存儲(chǔ)區(qū)和高頻訪(fǎng)問(wèn)存儲(chǔ)區(qū);
[0007]將存放有低訪(fǎng)問(wèn)頻次的superblock信息保存在所述低頻訪(fǎng)問(wèn)存儲(chǔ)區(qū);
[0008]將存放有高訪(fǎng)問(wèn)頻次的superblock信息保存在所述高頻訪(fǎng)問(wèn)存儲(chǔ)區(qū)。
[0009]優(yōu)選地,所述低訪(fǎng)問(wèn)頻次的superblock信息,包括:盤(pán)組信息、磁盤(pán)狀態(tài)以及raid的初始狀態(tài);
[0010]所述盤(pán)組信息、磁盤(pán)狀態(tài)以及raid的初始狀態(tài)構(gòu)成superblock頭。
[0011]優(yōu)選地,所述高訪(fǎng)問(wèn)頻次的superblock信息,包括:初始化信息和重建信息。
[0012]優(yōu)選地,所述初始化信息和重建信息分成若干塊存于高頻訪(fǎng)問(wèn)存儲(chǔ)區(qū)的不同存儲(chǔ)區(qū)域,所述superblock中記載著所述存儲(chǔ)區(qū)域的個(gè)數(shù)以及偏移地址,每個(gè)所述存儲(chǔ)區(qū)域都存有自己的魔術(shù)數(shù)和表征當(dāng)前區(qū)域改變次數(shù)的版本號(hào)。
[0013]優(yōu)選地,所述方法還包括:
[0014]將所述superblock頭刷新到所述raid所屬的各個(gè)磁盤(pán)盤(pán)組中;
[0015]將所述初始化信息和重建信息劃分到各個(gè)控制器上分別管理,并進(jìn)行刷新。
[0016]優(yōu)選地,所述將superblock頭刷新到所述raid所屬的各個(gè)磁盤(pán)盤(pán)組中之后還包括:
[0017]當(dāng)所述raid發(fā)生狀態(tài)變化時(shí),根據(jù)所述raid的變化實(shí)時(shí)刷新superblock頭。
[0018]優(yōu)選地,所述將所述初始化信息和重建信息劃分到各個(gè)控制器上分別管理,并進(jìn)行刷新之后還包括:
[0019]當(dāng)所述初始化信息和重建信息發(fā)生變化時(shí),根據(jù)所述初始化信息和重建信息的變化進(jìn)行實(shí)時(shí)刷新。
[0020]優(yōu)選地,所述方法還包括:
[0021]當(dāng)控制器狀態(tài)發(fā)生變化時(shí),變化后的主控制器接管所述superblock頭的管理,負(fù)責(zé)之后的刷新,并對(duì)所述初始化信息和重建信息進(jìn)行重新劃分。
[0022]優(yōu)選地,所述方法還包括:
[0023]預(yù)留出至少一個(gè)預(yù)留磁盤(pán)盤(pán)組,根據(jù)所述superblock頭的內(nèi)容進(jìn)行所述預(yù)留磁盤(pán)盤(pán)組的使用。
[0024]相應(yīng)的,本發(fā)明還提出了一種將Raid的superblock分區(qū)域存儲(chǔ)的裝置,所述裝置包括:
[0025]劃分模塊,用于根據(jù)磁盤(pán)整列raid的超級(jí)塊superblock中存放的信息的訪(fǎng)問(wèn)頻次和訪(fǎng)問(wèn)時(shí)機(jī)將所述superblock進(jìn)行區(qū)域劃分,得到低頻訪(fǎng)問(wèn)存儲(chǔ)區(qū)和高頻訪(fǎng)問(wèn)存儲(chǔ)區(qū);
[0026]第一存儲(chǔ)模塊,用于將存放有低訪(fǎng)問(wèn)頻次的superblock信息保存在所述低頻訪(fǎng)問(wèn)存儲(chǔ)區(qū);
[0027]第二存儲(chǔ)模塊,用于將存放有高訪(fǎng)問(wèn)頻次的superblock信息保存在所述高頻訪(fǎng)問(wèn)存儲(chǔ)區(qū)。
[0028]采用本發(fā)明提出的一種將Raid的superblock分區(qū)域存儲(chǔ)的方法及裝置,根據(jù)訪(fǎng)問(wèn)時(shí)機(jī)的不同,將raid的盤(pán)組、狀態(tài)信息和讀寫(xiě)初始化信息分開(kāi)存放,在磁盤(pán)上預(yù)留出多個(gè)區(qū)片,根據(jù)superblock頭的內(nèi)容,決定實(shí)際使用的區(qū)片,降低了 superblock在磁盤(pán)的位置出現(xiàn)壞塊的危險(xiǎn),減小了 superblock的訪(fǎng)問(wèn)沖突,在確保低訪(fǎng)問(wèn)頻次以及訪(fǎng)問(wèn)沖突的前提下可以存儲(chǔ)更多的初始化、重建信息。
【附圖說(shuō)明】
[0029]通過(guò)參考附圖會(huì)更加清楚的理解本發(fā)明的特征和優(yōu)點(diǎn),附圖是示意性的而不應(yīng)理解為對(duì)本發(fā)明進(jìn)行任何限制,在附圖中:
[0030]圖1為本發(fā)明實(shí)施例一提出的一種將Raid的superblock分區(qū)域存儲(chǔ)的方法流程圖;
[0031]圖2為本發(fā)明實(shí)施例一中提出的一種雙控制器切換狀態(tài)時(shí)的方法流程圖;
[0032]圖3為本發(fā)明實(shí)施例二提出的一種將Raid的superblock分區(qū)域存儲(chǔ)的裝置模塊圖。
【具體實(shí)施方式】
[0033]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0034]圖1為本發(fā)明實(shí)施例一提出的一種將Raid的superblock分區(qū)域存儲(chǔ)的方法流程圖,如圖1所示,該方法包括以下步驟:
[0035]S101,根據(jù)磁盤(pán)整列raid的超級(jí)塊superblock中存放的信息的訪(fǎng)問(wèn)頻次將所述superblock進(jìn)行區(qū)域劃分,得到低頻訪(fǎng)問(wèn)存儲(chǔ)區(qū)和高頻訪(fǎng)問(wèn)存儲(chǔ)區(qū);
[0036]S102,將存放有低訪(fǎng)問(wèn)頻次的superblock信息保存在所述低頻訪(fǎng)問(wèn)存儲(chǔ)區(qū);
[0037]S103,將存放有高訪(fǎng)問(wèn)頻次的superblock信息保存在所述高頻訪(fǎng)問(wèn)存儲(chǔ)區(qū)。
[0038]本發(fā)明實(shí)施例中,訪(fǎng)問(wèn)頻次的高低有存儲(chǔ)行業(yè)的通用判斷標(biāo)準(zhǔn),如,所述低訪(fǎng)問(wèn)頻次的superblock信息,為保存盤(pán)組狀態(tài)和盤(pán)組在raid中的位置信息以及raid的狀態(tài)信息,包括:盤(pán)組信息、磁盤(pán)狀態(tài)以及raid的初始狀態(tài);所述盤(pán)組信息、磁盤(pán)狀態(tài)以及raid的初始狀態(tài)構(gòu)成superblock頭。所述低訪(fǎng)問(wèn)頻次的superblock信息,為每次寫(xiě)1的時(shí)候有可能會(huì)導(dǎo)致一次訪(fǎng)問(wèn),包括:初始化信息和重建信息。所述初始化信息和重建信息分成若干塊存于高頻訪(fǎng)問(wèn)存儲(chǔ)區(qū)的不同存儲(chǔ)區(qū)域,所述superblock中記載著所述存儲(chǔ)區(qū)域的個(gè)數(shù)以及偏移地址。
[0039]為了對(duì)磁盤(pán)區(qū)塊的初始化留有記錄,在raid的superblock中保存有整個(gè)raid的bitmap信息,除此以外superblock更需要保存盤(pán)組狀態(tài)和盤(pán)組在raid中的位置信息以及raid的狀態(tài)信息等,而這兩類(lèi)信息的訪(fǎng)問(wèn)頻次和訪(fǎng)問(wèn)時(shí)機(jī)都大相徑庭,本發(fā)明實(shí)施例提出的將Raid的superblock分區(qū)域存儲(chǔ)的方法,將此兩類(lèi)的信息分別存放在不同區(qū)域內(nèi)進(jìn)行存放。盤(pán)組狀態(tài)和盤(pán)組在raid中的位置信息以及raid的狀態(tài)信息等,改變頻次較低,訪(fǎng)問(wèn)次數(shù)少,在不發(fā)生掉盤(pán),熱備盤(pán)切換等動(dòng)作時(shí)一般不會(huì)發(fā)生變化,所以存放在superblock頭中進(jìn)行存放,至于其他的有關(guān)初始化和重建信息的部分則分成若干塊存于不同存儲(chǔ)區(qū)域,在superblock中留有這些區(qū)域的實(shí)際個(gè)數(shù)以及偏移地址。每個(gè)存儲(chǔ)區(qū)域都存有自己的魔術(shù)數(shù)magic和表征當(dāng)前存儲(chǔ)區(qū)域改變次數(shù)的版本號(hào),以及整個(gè)區(qū)塊的校驗(yàn),來(lái)確保該區(qū)塊可信。在雙控制器的情況下,只有屬于主的一端能夠訪(fǎng)問(wèn)superblock頭,其余區(qū)域也是只屬于某一個(gè)控制器訪(fǎng)問(wèn)的不存在兩個(gè)控制器同事訪(fǎng)問(wèn)一個(gè)區(qū)塊的情況。
[0040]其中,所述方法還包括:
[0041]將所述superblock頭刷新到所述raid所屬的各個(gè)磁盤(pán)盤(pán)組中;
[0042]將所述初始化信息和重建信息劃分到各個(gè)控制器上分別管理,并進(jìn)行刷新。當(dāng)所述raid發(fā)生狀態(tài)變化時(shí),根據(jù)所述raid的變化實(shí)時(shí)刷新superblock頭。當(dāng)所述初始化信息和重建信息發(fā)生變化時(shí),根據(jù)所述初始化信息和重建信息的變化進(jìn)行實(shí)時(shí)刷新。當(dāng)控制器狀態(tài)發(fā)生變化時(shí),變化后的主控制器接管所述superblock頭的管理,負(fù)責(zé)之后的刷新,并對(duì)所述初始化信息和重建信息進(jìn)行重新劃分。
[0043]其中,所述方法還包括:
[0044]預(yù)留出至少一個(gè)預(yù)留磁盤(pán)盤(pán)組,根據(jù)所述superblock頭的內(nèi)容進(jìn)行所述預(yù)留磁盤(pán)盤(pán)組的使