專利名稱:變更運(yùn)作中的磁盤陣列的等級(jí)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種變更磁盤陣列的等級(jí)的方法,特別涉及一種在運(yùn)作中的 磁盤陣列上,移動(dòng)各數(shù)據(jù)區(qū)塊的數(shù)據(jù)并存儲(chǔ)各數(shù)據(jù)區(qū)塊的校驗(yàn)碼的變更磁盤 陣列的等級(jí)的方法。
背景技術(shù):
磁盤陣列(RAID)的原理是利用陣列方式形成磁盤組,配合數(shù)據(jù)分散 排列的設(shè)計(jì),提升數(shù)據(jù)的安全性;主要目的是針對(duì)硬盤在容量及速度上無法 跟上中央處理器(Central Process Unit; CPU)及存儲(chǔ)器的發(fā)展所提出的改善 方法,附加增進(jìn)了數(shù)據(jù)的安全性。 一般而言,磁盤陣列是由很多便宜、容量 較小、穩(wěn)定性較高、速度較慢的磁盤,組合成一個(gè)大型的磁盤組,利用個(gè)別 磁盤提供數(shù)據(jù)所產(chǎn)生的疊加效果來提升整個(gè)磁盤系統(tǒng)的性能。同時(shí),在存儲(chǔ) 數(shù)據(jù)時(shí),利用這項(xiàng)技術(shù),將數(shù)據(jù)切割成許多區(qū)段,分別存放在各個(gè)硬盤上。
美國加州大學(xué)柏克萊分校(University of California, Berkeley)在1987年 發(fā)表的文章"A Case for Redundant Arrays of Inexpensive Disks"中定義了磁 盤陣列的5個(gè)等級(jí)(level),分別為RAID0、 RAIDl、 RAID 0+1、 RAID 3、 RAID 4、 RAID 5。之后隨著時(shí)代的進(jìn)步,又陸續(xù)出現(xiàn)了其它等級(jí)的磁盤陣列, 例如RAID4、 RAID 6等,事實(shí)上,目前最常被使用的等級(jí)只有RAID 0與 RAID 5。
然而,由于各種等級(jí)的磁盤陣列的陣列結(jié)構(gòu)都不相同,因此各種等級(jí)的 磁盤陣列并不能夠直接的改變等級(jí),也就是說,要改變磁盤陣列的等級(jí)往往 需要先將磁盤陣列中的數(shù)據(jù)復(fù)制出來,再變更磁盤陣列的等級(jí),最后再把復(fù) 制出來的數(shù)據(jù)復(fù)制回磁盤陣列中,上述的步驟不僅僅相當(dāng)耗時(shí),而且必須要 停止磁盤陣列的服務(wù),然而,當(dāng)磁盤陣列中的數(shù)據(jù)越來越重要時(shí),若磁盤陣 列保護(hù)數(shù)據(jù)的等級(jí)不夠,例如用來增加存儲(chǔ)空間及提高I/O性能的RAID 0, 則勢(shì)必需要進(jìn)行上述的步驟來轉(zhuǎn)換磁盤陣列的等級(jí),以達(dá)到保護(hù)重要數(shù)據(jù)的目的,但若該磁盤陣列提供了相當(dāng)重要的服務(wù),要進(jìn)行等級(jí)的變更是不被允 許的。因此,如何能提供一種可以不停止磁盤陣列的服務(wù)而可以變更磁盤陣 列的等級(jí)的功能,成為待解決的問題。
發(fā)明內(nèi)容
鑒于以上的問題,本發(fā)明的目的在于提供一種變更運(yùn)作中的磁盤陣列的 等級(jí)的方法,其應(yīng)用于使用存儲(chǔ)帶的磁盤陣列上,在新的硬盤加入運(yùn)作中的 磁盤陣列之后,搬移需要移動(dòng)的數(shù)據(jù)區(qū)塊中的數(shù)據(jù)至新等級(jí)的磁盤陣列的數(shù) 據(jù)區(qū)塊中及存儲(chǔ)各數(shù)據(jù)區(qū)塊對(duì)應(yīng)磁盤陣列的新等級(jí)的校驗(yàn)碼,如此不需要停 止磁盤陣列的服務(wù)即可以將磁盤陣列的等級(jí)變更為新等級(jí),由此解決現(xiàn)有技 術(shù)所提到的問題。
為達(dá)上述目的,本發(fā)明提供一種變更運(yùn)作中的磁盤陣列的等級(jí)的方法, 該方法應(yīng)用于使用多個(gè)硬盤來存儲(chǔ)數(shù)據(jù)的磁盤陣列上,其中該磁盤陣列的第 一陣列結(jié)構(gòu)包含多個(gè)存儲(chǔ)帶,且各存儲(chǔ)帶由分別位于各硬盤中的數(shù)據(jù)區(qū)塊所 構(gòu)成,該方法包括下列步驟新增至少一硬盤至磁盤陣列中;配置新增的各 硬盤中的各數(shù)據(jù)區(qū)塊至各存儲(chǔ)帶中,以建立第二陣列結(jié)構(gòu);依據(jù)第一陣列結(jié) 構(gòu)對(duì)應(yīng)第二陣列結(jié)構(gòu)產(chǎn)生的移動(dòng)規(guī)則,移動(dòng)第一陣列結(jié)構(gòu)的各數(shù)據(jù)區(qū)塊中的 數(shù)據(jù)至第二陣列結(jié)構(gòu)的各數(shù)據(jù)區(qū)塊中;計(jì)算第二陣列結(jié)構(gòu)的各數(shù)據(jù)區(qū)塊對(duì)應(yīng) 的各校驗(yàn)碼;寫入各校驗(yàn)碼至第二陣列結(jié)構(gòu)中各數(shù)據(jù)區(qū)塊對(duì)應(yīng)的各校驗(yàn)區(qū)塊 中;及依據(jù)第二陣列結(jié)構(gòu)修改第一陣列結(jié)構(gòu)。
如上所述的變更運(yùn)作中的磁盤陣列的等級(jí)的方法,其中該第一陣列結(jié)構(gòu) 為RAIDO的結(jié)構(gòu)、該第二陣列結(jié)構(gòu)為RAID5的結(jié)構(gòu)。
如上所述的變更運(yùn)作中的磁盤陣列的等級(jí)的方法,其中該第一陣列結(jié)構(gòu) 為RAIDO的結(jié)構(gòu)、該第二陣列結(jié)構(gòu)為RAID6的結(jié)構(gòu)。
如上所述的變更運(yùn)作中的磁盤陣列的等級(jí)的方法,其中該移動(dòng)規(guī)則為將 該第一陣列結(jié)構(gòu)與該第二陣列結(jié)構(gòu)中存取順序相同的各數(shù)據(jù)區(qū)塊產(chǎn)生對(duì)應(yīng)
關(guān)系
如上所述的變更運(yùn)作中的磁盤陣列的等級(jí)的方法,其中該移動(dòng)各數(shù)據(jù)區(qū) 塊的數(shù)據(jù)的步驟為移動(dòng)該存儲(chǔ)帶中的需要移動(dòng)的各數(shù)據(jù)區(qū)塊的數(shù)據(jù)至對(duì)應(yīng) 的該存儲(chǔ)帶中。
如上所述的變更運(yùn)作中的磁盤陣列的等級(jí)的方法,其中該移動(dòng)各數(shù)據(jù)區(qū) 塊的數(shù)據(jù)的步驟還包含判斷有對(duì)己移動(dòng)過的該存儲(chǔ)帶的請(qǐng)求產(chǎn)生時(shí),依據(jù)該 移動(dòng)規(guī)則,重新導(dǎo)向該請(qǐng)求存取對(duì)應(yīng)的該數(shù)據(jù)區(qū)塊的步驟。
如上所述的變更運(yùn)作中的磁盤陣列的等級(jí)的方法,其中該移動(dòng)各數(shù)據(jù)區(qū) 塊的數(shù)據(jù)的步驟還包含判斷有對(duì)移動(dòng)中的該存儲(chǔ)帶的請(qǐng)求產(chǎn)生時(shí),擱置
(pending)該請(qǐng)求的步驟。
如上所述的變更運(yùn)作中的磁盤陣列的等級(jí)的方法,其中該移動(dòng)各數(shù)據(jù)區(qū) 塊的數(shù)據(jù)的步驟還包含判斷該存儲(chǔ)帶移動(dòng)完成時(shí),復(fù)原該請(qǐng)求的步驟。
如上所述的變更運(yùn)作中的磁盤陣列的等級(jí)的方法;其中該方法還包含在 修改該第一陣列結(jié)構(gòu)前,判斷有存取各存儲(chǔ)帶的請(qǐng)求產(chǎn)生時(shí),擱置該請(qǐng)求的 步驟。
如上所述的變更運(yùn)作中的磁盤陣列的等級(jí)的方法,其中該方法還包含在 該第一陣列結(jié)構(gòu)修改完成后,判斷有被擱置的請(qǐng)求時(shí),復(fù)原該請(qǐng)求的步驟。
如上所述的變更運(yùn)作中的磁盤陣列的等級(jí)的方法,其中該方法還包含刪
除該第二陣列結(jié)構(gòu)的步驟。
本發(fā)明可以變更磁盤陣列的等級(jí),而無需停止磁盤陣列的服務(wù)。
有關(guān)本發(fā)明的詳細(xì)特征與運(yùn)作,配合附圖在實(shí)施方式中詳細(xì)說明如下,
其內(nèi)容可使任何所屬領(lǐng)域技術(shù)人員了解本發(fā)明的技術(shù)內(nèi)容并加以實(shí)施,且根
據(jù)本說明書所公開的內(nèi)容及附圖,任何所屬領(lǐng)域技術(shù)人員可輕易地理解本發(fā)
明相關(guān)的目的及優(yōu)點(diǎn)。
圖1A為公知的RAID0的陣列結(jié)構(gòu)示意圖。
圖1B為公知的RAID5的陣列結(jié)構(gòu)示意圖。
圖1C為公知的RAID6的陣列結(jié)構(gòu)示意圖。
圖2A為本發(fā)明所提供的變更運(yùn)作中的磁盤陣列的等級(jí)的方法流程圖。
圖2B為本發(fā)明所提供的移動(dòng)數(shù)據(jù)區(qū)塊的數(shù)據(jù)的方法流程圖。
圖3A為本發(fā)明第一實(shí)施例所提供的移動(dòng)數(shù)據(jù)區(qū)塊的數(shù)據(jù)的示意圖。
圖3B為本發(fā)明第二實(shí)施例所提供的移動(dòng)數(shù)據(jù)區(qū)塊的數(shù)據(jù)的示意圖。
其中,附圖標(biāo)記說明如下100a 第一陣列結(jié)構(gòu) 100b 第二陣列結(jié)構(gòu)
100c 第三陣列結(jié)構(gòu) 101第一存儲(chǔ)帶
102第二存儲(chǔ)帶 103第三存儲(chǔ)帶
104第四存儲(chǔ)帶 110第一硬盤
111第一數(shù)據(jù)區(qū)塊 112第二數(shù)據(jù)區(qū)塊
113第三數(shù)據(jù)區(qū)塊 114第四數(shù)據(jù)區(qū)塊
120第二硬盤 121第五數(shù)據(jù)區(qū)塊
122第六數(shù)據(jù)區(qū)塊 123第七數(shù)據(jù)區(qū)塊
124第八數(shù)據(jù)區(qū)塊 130第三硬盤
131第九數(shù)據(jù)區(qū)塊 132第十?dāng)?shù)據(jù)區(qū)塊
133第十一數(shù)據(jù)區(qū)塊 134第十二數(shù)據(jù)區(qū)塊
140第四硬盤 141第十三數(shù)據(jù)區(qū)塊
142 第十四數(shù)據(jù)區(qū)塊143第十五數(shù)據(jù)區(qū)塊
144 第十六數(shù)據(jù)區(qū)塊
步驟210 新增硬盤步驟220 建立暫時(shí)陣列結(jié)構(gòu)
步驟230依據(jù)移動(dòng)規(guī)則移動(dòng)區(qū)塊數(shù)據(jù)并寫入校驗(yàn)碼 步驟231是否存取移動(dòng)過數(shù)據(jù)區(qū)塊的存儲(chǔ)帶 步驟232是否存取移動(dòng)數(shù)據(jù)區(qū)塊中的存儲(chǔ)帶
步驟233擱置請(qǐng)求步驟234移動(dòng)數(shù)據(jù)區(qū)塊
步驟235是否有被擱置的請(qǐng)求 步驟236復(fù)原請(qǐng)求
步驟237重新導(dǎo)向請(qǐng)求 步驟238存取數(shù)據(jù)
步驟24是否有請(qǐng)求產(chǎn)生 步驟250擱置請(qǐng)求
步驟260修改磁盤陣列的陣列結(jié)構(gòu) 步驟270是否有請(qǐng)求被擱置
步驟280復(fù)原請(qǐng)求
具體實(shí)施例方式
如圖1所示為RAID 0的第一陣列結(jié)構(gòu)100a, RAID 0至少需要具有第 一硬盤110與第二硬盤120兩個(gè)硬盤,第一硬盤IIO與第二硬盤120在第一 陣列結(jié)構(gòu)100a中被分別劃分為數(shù)量相同且大小相同的數(shù)據(jù)區(qū)塊,如圖所示, 第一硬盤IIO包含第一數(shù)據(jù)區(qū)塊111、第二數(shù)據(jù)區(qū)塊112、第三數(shù)據(jù)區(qū)塊113、第四數(shù)據(jù)區(qū)塊114;第二硬盤120包含第五數(shù)據(jù)區(qū)塊121、第六數(shù)據(jù)區(qū)塊122、 第七數(shù)據(jù)區(qū)塊123、第八數(shù)據(jù)區(qū)塊124,而各硬盤中的第N個(gè)數(shù)據(jù)區(qū)塊又被 組合成各存儲(chǔ)帶,如第一硬盤110的第一數(shù)據(jù)區(qū)塊111與第二硬盤120的第 五數(shù)據(jù)區(qū)塊121組成第一存儲(chǔ)帶101;第一硬盤110的第二數(shù)據(jù)區(qū)塊112與 第二硬盤120的第六數(shù)據(jù)區(qū)塊122組成第二存儲(chǔ)帶102;第三數(shù)據(jù)區(qū)塊113 與第七數(shù)據(jù)區(qū)塊123組成第三存儲(chǔ)帶103;第四數(shù)據(jù)區(qū)塊114與第八數(shù)據(jù)區(qū) 塊124組成第四存儲(chǔ)帶104。
當(dāng)使用者使用RAIDO存儲(chǔ)數(shù)據(jù)的時(shí)候,會(huì)依照存儲(chǔ)帶的順序存儲(chǔ)數(shù)據(jù), 使得數(shù)據(jù)循環(huán)且平均分配在各個(gè)硬盤上,例如要存儲(chǔ)數(shù)據(jù)至具有第一陣列結(jié) 構(gòu)100a的磁盤陣列中時(shí),首先會(huì)使用第一存儲(chǔ)帶101,也就是第一硬盤UO 的第一數(shù)據(jù)區(qū)塊111與第二硬盤120的第五數(shù)據(jù)區(qū)塊121,當(dāng)?shù)谝淮鎯?chǔ)帶101 中的兩個(gè)數(shù)據(jù)區(qū)塊無法存入要存儲(chǔ)的數(shù)據(jù)時(shí),會(huì)使用第二存儲(chǔ)帶102、第三 存儲(chǔ)帶103、...,直到數(shù)據(jù)存儲(chǔ)完畢,同時(shí),數(shù)據(jù)是依序的被存儲(chǔ)在各存儲(chǔ) 帶中,也就是說,RAIDO存儲(chǔ)數(shù)據(jù)的順序是,第一數(shù)據(jù)區(qū)塊lll、第五數(shù)據(jù) 區(qū)塊121、第二數(shù)據(jù)區(qū)塊112、第六數(shù)據(jù)區(qū)塊122。
如圖1B所示為RAID 5的第二陣列結(jié)構(gòu)100b, RAID 5至少需要具有 第一硬盤110、第二硬盤120與第三硬盤130三個(gè)硬盤,與RAID 0非常相 似的,三個(gè)硬盤在第二陣列結(jié)構(gòu)100b中被分別劃分為數(shù)量相同且大小相同 的數(shù)據(jù)區(qū)塊,在圖1B中第一硬盤110包含第一數(shù)據(jù)區(qū)塊111、第二數(shù)據(jù)區(qū) 塊112、第三數(shù)據(jù)區(qū)塊113、第四數(shù)據(jù)區(qū)塊114;第二硬盤120包含第五數(shù)據(jù) 區(qū)塊121、第六數(shù)據(jù)區(qū)塊122、第七數(shù)據(jù)區(qū)塊123、第八數(shù)據(jù)區(qū)塊124;第三 硬盤130包含第九數(shù)據(jù)區(qū)塊131、第十?dāng)?shù)據(jù)區(qū)塊132、第十一數(shù)據(jù)區(qū)塊133、 第十二數(shù)據(jù)區(qū)塊134,而各硬盤中的第N個(gè)數(shù)據(jù)區(qū)塊又被組成各存儲(chǔ)帶,如 第一硬盤110的第一數(shù)據(jù)區(qū)塊111、第二硬盤120的第五數(shù)據(jù)區(qū)塊121及第 三硬盤130的第九數(shù)據(jù)區(qū)塊131組成第一存儲(chǔ)帶101;第二數(shù)據(jù)區(qū)塊112、 第六數(shù)據(jù)區(qū)塊122及第十?dāng)?shù)據(jù)區(qū)塊132組成第二存儲(chǔ)帶102;第三數(shù)據(jù)區(qū)塊 113、第七數(shù)據(jù)區(qū)塊123及第十一數(shù)據(jù)區(qū)塊133組成第三存儲(chǔ)帶103;第四數(shù) 據(jù)區(qū)塊114、第八數(shù)據(jù)區(qū)塊124及第十二數(shù)據(jù)區(qū)塊134組成第四存儲(chǔ)帶i04。
當(dāng)使用者使用RAID 5存儲(chǔ)數(shù)據(jù)的時(shí)候,如同RAID 0存儲(chǔ)數(shù)據(jù)的方式, 會(huì)循環(huán)且平均的使用各硬盤,同時(shí)依序的使用各存儲(chǔ)帶以及依序?qū)?shù)據(jù)存儲(chǔ)于各存儲(chǔ)帶的數(shù)據(jù)區(qū)塊中,不過,與RAIDO不同的是,為了具有避免存儲(chǔ) 的數(shù)據(jù)遭到破壞的特性,在一個(gè)由n個(gè)數(shù)據(jù)區(qū)塊所組成的存儲(chǔ)帶中,RAID 5 會(huì)使用其中一個(gè)與其它n-l個(gè)數(shù)據(jù)區(qū)塊對(duì)應(yīng)的數(shù)據(jù)區(qū)塊中存儲(chǔ)其它n-l個(gè)數(shù) 據(jù)區(qū)塊所對(duì)應(yīng)的校驗(yàn)碼,同時(shí),存儲(chǔ)校驗(yàn)碼的數(shù)據(jù)區(qū)塊會(huì)以循環(huán)的方式散布 在各存儲(chǔ)帶中,如圖1B所示,使用者存儲(chǔ)的數(shù)據(jù)會(huì)依序存儲(chǔ)在第一數(shù)據(jù)區(qū) 塊111、第五數(shù)據(jù)區(qū)塊121,而后計(jì)算第一數(shù)據(jù)區(qū)塊111與第五數(shù)據(jù)區(qū)塊121 對(duì)應(yīng)的的校驗(yàn)碼并將其存儲(chǔ)在第九數(shù)據(jù)區(qū)塊131中(事實(shí)上在存儲(chǔ)第一數(shù)據(jù) 區(qū)塊111時(shí),也會(huì)計(jì)算第一數(shù)據(jù)區(qū)塊111與未存儲(chǔ)數(shù)據(jù)前的第五數(shù)據(jù)區(qū)塊121 的校驗(yàn)碼,并更新至第九數(shù)據(jù)區(qū)塊131中),若數(shù)據(jù)尚未存儲(chǔ)完畢,則繼續(xù) 使用第二存儲(chǔ)帶102,由于校驗(yàn)碼需要循環(huán)的散布在各個(gè)存儲(chǔ)帶中,因此在 將數(shù)據(jù)存儲(chǔ)至第六數(shù)據(jù)區(qū)塊后,會(huì)計(jì)算第六數(shù)據(jù)區(qū)塊122與第十?dāng)?shù)據(jù)區(qū)塊B2 對(duì)應(yīng)的的校驗(yàn)碼,并存儲(chǔ)于第二數(shù)據(jù)區(qū)塊112中,隨后繼續(xù)存儲(chǔ)數(shù)據(jù)至第十 數(shù)據(jù)區(qū)塊132中,并更新第二數(shù)據(jù)區(qū)塊112中的校驗(yàn)碼。若需要使用第三存 儲(chǔ)帶103,則又輪回第一硬盤IIO進(jìn)行數(shù)據(jù)的寫入,數(shù)據(jù)會(huì)寫入第三數(shù)據(jù)區(qū) 塊113,接著計(jì)算第三數(shù)據(jù)區(qū)塊113與第十一數(shù)據(jù)區(qū)塊133對(duì)應(yīng)的校驗(yàn)碼并 存入第七數(shù)據(jù)區(qū)塊123中,再將數(shù)據(jù)繼續(xù)寫入第十一數(shù)據(jù)區(qū)塊133,并再次 更新第七數(shù)據(jù)區(qū)塊123中的校驗(yàn)碼,之后,校驗(yàn)碼又被存儲(chǔ)在第三硬盤130 的第十二數(shù)據(jù)區(qū)塊134上,RAID5即是如此不斷的存儲(chǔ)數(shù)據(jù)并更新校驗(yàn)碼, 使得當(dāng)有一個(gè)硬盤損壞時(shí),能夠依靠其它硬盤中各存儲(chǔ)帶的其它數(shù)據(jù)區(qū)塊的 數(shù)據(jù)將失去的數(shù)據(jù)區(qū)塊中的數(shù)據(jù)還原。
RAID 6與RAID 5的陣列結(jié)構(gòu)與運(yùn)作原理極其相似,主要的差別在于 RAID 6在n個(gè)數(shù)據(jù)區(qū)塊的存儲(chǔ)帶中使用兩個(gè)數(shù)據(jù)區(qū)塊存儲(chǔ)其它n-2個(gè)數(shù)據(jù)區(qū) 塊的校驗(yàn)碼,其中兩個(gè)校驗(yàn)碼是以不同的兩個(gè)公式計(jì)算得出,使得有兩個(gè)硬 盤同時(shí)損壞時(shí),能夠依據(jù)其它硬盤中同一存儲(chǔ)帶的其它數(shù)據(jù)區(qū)塊中的數(shù)據(jù)經(jīng) 過上述的兩個(gè)不同的公式計(jì)算后,計(jì)算出失去的數(shù)據(jù)區(qū)塊中的數(shù)據(jù)。如圖1C 所示,RAID6至少需要具有第一硬盤110、第二硬盤120、第三硬盤130與 第四硬盤140四個(gè)硬盤,四個(gè)硬盤在第三陣列結(jié)構(gòu)100c中被分別劃分為數(shù) 量相同且大小相同的存儲(chǔ)區(qū)塊,其中第一硬盤110、第二硬盤120、第三硬 盤130與上述第二陣列結(jié)構(gòu)100b的第一硬盤110、第二硬盤120、第三硬盤 130相同,新增加的第四硬盤140包含第十三數(shù)據(jù)區(qū)塊141、第十四數(shù)據(jù)區(qū)塊142、第十五數(shù)據(jù)區(qū)塊143與第十六數(shù)據(jù)區(qū)塊144,同樣的,各硬盤的第N個(gè)數(shù)據(jù)區(qū)塊又被組成各存儲(chǔ)帶,如第一硬盤110的第一數(shù)據(jù)區(qū)塊111、第二 硬盤120的第五數(shù)據(jù)區(qū)塊121、第三硬盤130的第九數(shù)據(jù)區(qū)塊131與第四硬 盤140的第十三數(shù)據(jù)區(qū)塊141組成第一存儲(chǔ)帶101等。
以下以第一實(shí)施例來說明本發(fā)明的運(yùn)作系統(tǒng)與方法,并請(qǐng)參照?qǐng)D2A本發(fā)明所提供的變更運(yùn)作中的磁盤陣列的等級(jí)的方法流程圖。本實(shí)施例以 RAID 0變更至RAID 5為例,當(dāng)使用者欲使用本發(fā)明將磁盤陣列由RAID 0 變更至RAID5時(shí),需要在第一硬盤110與第二硬盤120之外新增一個(gè)第三 硬盤130至運(yùn)作中的磁盤陣列中(步驟210),如圖3A所示,若使用者希 望維持磁盤陣列的存儲(chǔ)空間不變,則第三硬盤130的存儲(chǔ)空間至少需要與第 一硬盤110、第二硬盤120中存儲(chǔ)空間較小的硬盤的存儲(chǔ)空間相同。
在具有第一陣列結(jié)構(gòu)100a的磁盤陣列新增第三硬盤130 (步驟210)之后,執(zhí)行具有本發(fā)明的磁盤陣列將建立包含三個(gè)硬盤的暫時(shí)陣列結(jié)構(gòu),也就 是第二陣列結(jié)構(gòu)100b (步驟220),其中第三硬盤130的存儲(chǔ)空間會(huì)被劃分出與第一硬盤IIO、第二硬盤120具有相同數(shù)量的數(shù)據(jù)區(qū)塊,且各個(gè)數(shù)據(jù)區(qū)塊會(huì)被配置到各個(gè)存儲(chǔ)帶中,當(dāng)然,三個(gè)硬盤上的數(shù)據(jù)區(qū)塊可存儲(chǔ)數(shù)據(jù)的存儲(chǔ)空間是相同的。
在第二陣列結(jié)構(gòu)100b建立完成后,執(zhí)行具有本發(fā)明的磁盤陣列會(huì)判斷 第一陣列結(jié)構(gòu)100a與第二陣列結(jié)構(gòu)100b所代表的等級(jí)產(chǎn)生一個(gè)移動(dòng)規(guī)則, 并且依據(jù)產(chǎn)生出的移動(dòng)規(guī)則移動(dòng)第一陣列結(jié)構(gòu)100a的數(shù)據(jù)區(qū)塊中的數(shù)據(jù)至 第二陣列結(jié)構(gòu)100b的數(shù)據(jù)區(qū)塊中(也就是將數(shù)據(jù)區(qū)塊中的數(shù)據(jù)移動(dòng)到同一存儲(chǔ)帶的不同硬盤的數(shù)據(jù)區(qū)塊中),同時(shí)計(jì)算各個(gè)數(shù)據(jù)區(qū)塊對(duì)應(yīng)的校驗(yàn)碼, 并將校驗(yàn)碼寫入各數(shù)據(jù)區(qū)塊對(duì)應(yīng)的數(shù)據(jù)區(qū)塊中(步驟230),其中本發(fā)明通過使用者變更磁盤陣列的設(shè)定或是自動(dòng)偵測(cè)第一陣列結(jié)構(gòu)100a與第二陣列結(jié)構(gòu)100b的狀態(tài)即可得知變更前的磁盤陣列的等級(jí)為RAID0、變更后的磁 盤陣列的等級(jí)為RAID 5,但判斷磁盤陣列的等級(jí)的方式并不以上述為限。
由于RAID 5比RAID 0多了一個(gè)硬盤,但是存儲(chǔ)空間并沒有變多,而是將多出來的存儲(chǔ)空間用來存儲(chǔ)校驗(yàn)碼以確保數(shù)據(jù)的可靠度,并且由上述RAID 0與RAID 5的簡介可以發(fā)現(xiàn),RAID 0與RAID 5都是以循序的方式存儲(chǔ)數(shù)據(jù), 因此本實(shí)施例產(chǎn)生的移動(dòng)規(guī)則便是依據(jù)RAIDO存儲(chǔ)數(shù)據(jù)至數(shù)據(jù)區(qū)塊中的順序
以及RAID 5存儲(chǔ)數(shù)據(jù)至數(shù)據(jù)區(qū)塊中的順序,將存儲(chǔ)順序相同的數(shù)據(jù)區(qū)塊由
RAID 0中移動(dòng)到RAID 5中,如圖3A所示,第一陣列結(jié)構(gòu)100a中的第一數(shù) 據(jù)區(qū)塊111為第一存儲(chǔ)帶101中第一個(gè)存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)區(qū)塊,而磁盤陣列變 更至第二陣列結(jié)構(gòu)100b后,第一數(shù)據(jù)區(qū)塊111依然為第一存儲(chǔ)帶101中第一 個(gè)存^l數(shù)據(jù)的數(shù)據(jù)區(qū)塊,因此第一數(shù)據(jù)區(qū)塊111中的數(shù)據(jù)不需要被移動(dòng),同 理,第一存儲(chǔ)帶101中的第五數(shù)據(jù)區(qū)塊121中的數(shù)據(jù)也不需要被移動(dòng),于是 本發(fā)明此時(shí)會(huì)計(jì)算第一數(shù)據(jù)區(qū)塊1111與第五數(shù)據(jù)區(qū)塊121的校驗(yàn)碼,并把計(jì) 算出來的校驗(yàn)碼寫入第三硬盤130的第九數(shù)據(jù)區(qū)塊131中。接著檢查第二數(shù) 據(jù)區(qū)塊112,在第二陣列結(jié)構(gòu)100b中第二數(shù)據(jù)區(qū)塊112需要寫入第二存儲(chǔ)帶 102中的校驗(yàn)碼,所以第二數(shù)據(jù)區(qū)塊112中的數(shù)據(jù)需要搬移到第六數(shù)據(jù)區(qū)塊 122中,但此時(shí)第六數(shù)據(jù)區(qū)塊122中尚存在未搬移的數(shù)據(jù),所以需要把第六數(shù) 據(jù)區(qū)塊122中的數(shù)據(jù)搬移至第十?dāng)?shù)據(jù)區(qū)塊132,然后再把第二數(shù)據(jù)區(qū)塊112中 的數(shù)據(jù)搬移至第六數(shù)據(jù)區(qū)塊122,接下來計(jì)算第六數(shù)據(jù)區(qū)塊122與第十?dāng)?shù)據(jù)區(qū) 塊132的校驗(yàn)碼,并存儲(chǔ)到第二數(shù)據(jù)區(qū)塊112中。第三存儲(chǔ)帶103的校驗(yàn)碼 需要存儲(chǔ)至第二硬盤120的第七數(shù)據(jù)區(qū)塊123中,所以第三數(shù)據(jù)區(qū)塊113中 的數(shù)據(jù)不需要被搬動(dòng),且第七數(shù)據(jù)區(qū)塊123中的數(shù)據(jù)會(huì)被搬到第十一數(shù)據(jù)區(qū) 塊133中,而后,本發(fā)明會(huì)計(jì)算第三數(shù)據(jù)區(qū)塊113與第十一數(shù)據(jù)區(qū)塊133的 校驗(yàn)碼,并存儲(chǔ)到第七數(shù)據(jù)區(qū)塊123中。由于本實(shí)施例中只有三個(gè)硬盤,因 此接下來第四存儲(chǔ)帶104上的校驗(yàn)碼將會(huì)被存儲(chǔ)至第三硬盤130中的第十二 數(shù)據(jù)區(qū)塊134,數(shù)據(jù)搬移便會(huì)不斷的重復(fù)上述的過程,直到所有的數(shù)據(jù)都搬移 完成。
雖然數(shù)據(jù)搬移的過程是以數(shù)據(jù)區(qū)塊為單位進(jìn)行的,但邏輯上的搬移單位 是存^t帶,也就是說,各數(shù)據(jù)區(qū)塊中的數(shù)據(jù)只會(huì)被搬移到同一個(gè)存儲(chǔ)帶上的 其它數(shù)據(jù)區(qū)塊,例如,在磁盤陣列中,第一硬盤110的第二數(shù)據(jù)區(qū)塊112中 的數(shù)據(jù)和第二硬盤120的第六數(shù)據(jù)區(qū)塊122中的數(shù)據(jù)只會(huì)在第二存儲(chǔ)帶102 中被移動(dòng)。
在數(shù)據(jù)搬移完成并寫入校驗(yàn)碼(步驟230)之后,磁盤陣列中存儲(chǔ)的數(shù) 據(jù)已經(jīng)變成RAID 5的存儲(chǔ)方式,因此本發(fā)明便會(huì)依據(jù)暫時(shí)的第二陣列結(jié)構(gòu) 100b,將磁盤陣列的陣列結(jié)構(gòu)由第一陣列結(jié)構(gòu)100a修改為第二陣列結(jié)構(gòu)100b (步驟260),使得磁盤陣列的等級(jí)正式變更為RAID5。而后,由于磁盤陣
列的陣列結(jié)構(gòu)已為RAID5,因此可以將不再需要的第二陣列結(jié)構(gòu)100b刪除。
另外,由于磁盤陣列是處于提供服務(wù)的狀態(tài),因此在上述陣列結(jié)構(gòu)變更 的過程中都有可能產(chǎn)生存取數(shù)據(jù)的請(qǐng)求,本發(fā)明也提供了相關(guān)的對(duì)應(yīng)機(jī)制,
當(dāng)在上述的修改磁盤陣列的陣列結(jié)構(gòu)(步驟260)的過程中,若本發(fā)明判斷有 存取磁盤陣列任何一個(gè)存儲(chǔ)帶中的任何一個(gè)數(shù)據(jù)區(qū)塊的請(qǐng)求產(chǎn)生(步驟240), 則會(huì)擱置(pending)存取數(shù)據(jù)區(qū)塊的請(qǐng)求(步驟250),直到磁盤陣列的陣 列結(jié)構(gòu)修改完成(步驟260)后,會(huì)判斷是否有存取磁盤陣列的請(qǐng)求被擱置(步 驟270),若有的話,則會(huì)將請(qǐng)求復(fù)原(步驟280),使得存取數(shù)據(jù)區(qū)塊的請(qǐng) 求可以通過變更后的陣列結(jié)構(gòu)讀出移動(dòng)過后的數(shù)據(jù)區(qū)塊中的數(shù)據(jù)。
在數(shù)據(jù)移動(dòng)的過程中所產(chǎn)生的存取請(qǐng)求,事實(shí)上有三種情況,第一種是 存取己經(jīng)移動(dòng)過的數(shù)據(jù)區(qū)塊、第二種是存取正在移動(dòng)的數(shù)據(jù)塊、第三種是存 取尚未移動(dòng)過的數(shù)據(jù)區(qū)塊。若此時(shí)正在搬移第三存儲(chǔ)帶103中的數(shù)據(jù),且數(shù) 據(jù)正由第七數(shù)據(jù)區(qū)塊123搬移至第十一數(shù)據(jù)區(qū)塊133中,則如圖2B的流程 圖所示,當(dāng)存取請(qǐng)求要存取第二存儲(chǔ)帶102中的第六數(shù)據(jù)區(qū)塊122時(shí),本發(fā) 明會(huì)判斷出請(qǐng)求要存取的第六數(shù)據(jù)區(qū)塊122所在的第二存儲(chǔ)帶102中的數(shù)據(jù) 都已經(jīng)移動(dòng)完成(步驟231),由于此時(shí)磁盤陣列的陣列結(jié)構(gòu)尚未改變,依 然還是第一陣列結(jié)構(gòu)100a,因此執(zhí)行本發(fā)明的磁盤陣列會(huì)依據(jù)上述的移動(dòng)規(guī) 則,重新導(dǎo)向請(qǐng)求要存取的數(shù)據(jù)區(qū)塊(步驟237),也就是說本發(fā)明由移動(dòng) 規(guī)則得知第六數(shù)據(jù)區(qū)塊122中的數(shù)據(jù)已經(jīng)被移動(dòng)到第十?dāng)?shù)據(jù)區(qū)塊132中,因 此會(huì)依據(jù)請(qǐng)求的存取需求至第十?dāng)?shù)據(jù)區(qū)塊132中進(jìn)行讀寫(步驟238),使 得存取請(qǐng)求可以完成作業(yè);若請(qǐng)求要存取第三存儲(chǔ)帶103上的第七數(shù)據(jù)區(qū)塊 123中的數(shù)據(jù),本發(fā)明會(huì)判斷存取的數(shù)據(jù)區(qū)塊所在的存儲(chǔ)帶尚未移動(dòng)完成(步 驟231),而是正在移動(dòng)中(步驟232),因此會(huì)將請(qǐng)求擱置(步驟233), 然后繼續(xù)移動(dòng)數(shù)據(jù)區(qū)塊中的數(shù)據(jù)(步驟234),直到存儲(chǔ)帶中的所有數(shù)據(jù)都 已經(jīng)移動(dòng)完成后(本實(shí)施例于此處即第三存儲(chǔ)帶103中的第七數(shù)據(jù)區(qū)塊123 中的數(shù)據(jù)完成移動(dòng)至第十-一數(shù)據(jù)區(qū)塊133),本發(fā)明便會(huì)判斷是否有請(qǐng)求因 為欲存取的數(shù)據(jù)所在的存儲(chǔ)帶正在進(jìn)行數(shù)據(jù)的移動(dòng)而被擱置(步驟235), 若有的話,則會(huì)復(fù)原請(qǐng)求以進(jìn)行請(qǐng)求需要的作業(yè)(步驟236),而在請(qǐng)求被 復(fù)原之后,由于要存取的數(shù)據(jù)已經(jīng)移動(dòng)完成,因此會(huì)重復(fù)上述的存取移動(dòng)完 成的數(shù)據(jù)區(qū)塊的動(dòng)作,也就是依據(jù)移動(dòng)規(guī)則得知第七數(shù)據(jù)區(qū)塊123中的數(shù)據(jù)已經(jīng)被搬移至第十一數(shù)據(jù)區(qū)塊133中,因此執(zhí)行具有本發(fā)明的磁盤陣列至第
十一數(shù)據(jù)區(qū)塊133進(jìn)行讀寫,而若是沒有被擱置的請(qǐng)求,則會(huì)繼續(xù)移動(dòng)尚未
移動(dòng)的存儲(chǔ)帶;若是請(qǐng)求存取的是尚未被移動(dòng)過的數(shù)據(jù)區(qū)塊,則不需要做任 何的處理,可以直接依據(jù)請(qǐng)求讀寫數(shù)據(jù)區(qū)塊。
以下以將運(yùn)作中的磁盤陣列的由RAID 0變更至RAID 6為第二實(shí)施例, 并請(qǐng)參照?qǐng)D3B,在新增第三硬盤130與第四硬盤140兩個(gè)硬盤至磁盤陣列 (步驟210)后,本發(fā)明會(huì)配置第三硬盤130中的第九數(shù)據(jù)區(qū)塊131與第四 硬盤140中的第十三數(shù)據(jù)區(qū)塊141給第一存儲(chǔ)帶101、第十?dāng)?shù)據(jù)區(qū)塊132與 第十四數(shù)據(jù)區(qū)塊142給第二存儲(chǔ)帶102,依此類推至第三存儲(chǔ)帶103、第四 存儲(chǔ)帶104、...,如此建立暫時(shí)的第三陣列結(jié)構(gòu)100c (步驟220),接著由 RAID 0的第一陣列結(jié)構(gòu)100a及RAID 6的第三陣列結(jié)構(gòu)100c存儲(chǔ)數(shù)據(jù)區(qū)塊 的規(guī)則產(chǎn)生移動(dòng)規(guī)則(步驟230),也就是將第六數(shù)據(jù)區(qū)塊122中的數(shù)據(jù)移 動(dòng)至第十四數(shù)據(jù)區(qū)塊142;第三數(shù)據(jù)區(qū)塊113的數(shù)據(jù)移動(dòng)至第十一數(shù)據(jù)區(qū)塊 133;第七數(shù)據(jù)區(qū)塊123的數(shù)據(jù)移動(dòng)至第十五數(shù)據(jù)區(qū)塊143;第四數(shù)據(jù)區(qū)塊 114的數(shù)據(jù)移動(dòng)至第八數(shù)據(jù)區(qū)塊124;第八數(shù)據(jù)區(qū)塊124的數(shù)據(jù)移動(dòng)至第十 二數(shù)據(jù)區(qū)塊134 (步驟240),并計(jì)算第一存儲(chǔ)帶101中的第一數(shù)據(jù)區(qū)塊111 與第五數(shù)據(jù)區(qū)塊121對(duì)應(yīng)的兩個(gè)校驗(yàn)碼,并分別存儲(chǔ)到第九數(shù)據(jù)區(qū)塊131與 第十三數(shù)據(jù)區(qū)塊141中,如此以計(jì)算出第二存儲(chǔ)帶102中對(duì)應(yīng)第二數(shù)據(jù)區(qū)塊 112與第十四數(shù)據(jù)區(qū)塊142的校驗(yàn)碼至第六數(shù)據(jù)區(qū)塊122與第十?dāng)?shù)據(jù)區(qū)塊 132;第三存儲(chǔ)帶103中的數(shù)據(jù)區(qū)塊對(duì)應(yīng)的校驗(yàn)碼至第三數(shù)據(jù)區(qū)塊113與第 七數(shù)據(jù)區(qū)塊123中;及第四存儲(chǔ)帶104中的數(shù)據(jù)區(qū)塊對(duì)應(yīng)的校驗(yàn)碼并存儲(chǔ)至 對(duì)應(yīng)的第四數(shù)據(jù)區(qū)塊114與第十六數(shù)據(jù)區(qū)塊144中(步驟250),在步驟240 與步驟250完成之后,本發(fā)明便會(huì)修改磁盤陣列的陣列結(jié)構(gòu)為第三陣列結(jié)構(gòu) 100c (步驟260),如此便可變更磁盤陣列的等級(jí)。
通過上述兩個(gè)實(shí)施例可知,本發(fā)明可以解決現(xiàn)有技術(shù)的需要停止磁盤陣 列的服務(wù)才可以變更磁盤陣列的等級(jí)的問題。
雖然本發(fā)明已以優(yōu)選實(shí)施例公開如上,然其并非用以限制本發(fā)明的范 圍,任何所屬領(lǐng)域的技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作些 許的變更與修飾,因此本發(fā)明的保護(hù)范圍當(dāng)視后附的權(quán)利要求所界定的范圍 為準(zhǔn)。
權(quán)利要求
1.一種變更運(yùn)作中的磁盤陣列的等級(jí)的方法,該方法應(yīng)用于使用多個(gè)硬盤來存儲(chǔ)數(shù)據(jù)的磁盤陣列上,其中該磁盤陣列的第一陣列結(jié)構(gòu)包含多個(gè)存儲(chǔ)帶,且各存儲(chǔ)帶由分別位于各硬盤中的一個(gè)數(shù)據(jù)區(qū)塊所構(gòu)成,該方法包含下列步驟新增至少一個(gè)硬盤至該磁盤陣列;配置新增的各硬盤中的各數(shù)據(jù)區(qū)塊至各存儲(chǔ)帶中,以建立第二陣列結(jié)構(gòu);依據(jù)該第一陣列結(jié)構(gòu)對(duì)應(yīng)該第二陣列結(jié)構(gòu)產(chǎn)生的移動(dòng)規(guī)則,移動(dòng)該第一陣列結(jié)構(gòu)的各數(shù)據(jù)區(qū)塊中的數(shù)據(jù)至該第二陣列結(jié)構(gòu)的各數(shù)據(jù)區(qū)塊中;計(jì)算該第二陣列結(jié)構(gòu)的各數(shù)據(jù)區(qū)塊對(duì)應(yīng)的各校驗(yàn)碼;寫入各校驗(yàn)碼至該第二陣列結(jié)構(gòu)中各數(shù)據(jù)區(qū)塊對(duì)應(yīng)的各校驗(yàn)區(qū)塊中;及依據(jù)該第二陣列結(jié)構(gòu)修改該第一陣列結(jié)構(gòu)。
2. 如權(quán)利要求1所述的變更運(yùn)作中的磁盤陣列的等級(jí)的方法,其中該第 一陣列結(jié)構(gòu)為RAID0的結(jié)構(gòu)、該第二陣列結(jié)構(gòu)為RAID 5的結(jié)構(gòu)。
3. 如權(quán)利要求1所述的變更運(yùn)作中的磁盤陣列的等級(jí)的方法,其中該第 一陣列結(jié)構(gòu)為RAID0的結(jié)構(gòu)、該第二陣列結(jié)構(gòu)為RAID6的結(jié)構(gòu)。
4. 如權(quán)利要求1所述的變更運(yùn)作中的磁盤陣列的等級(jí)的方法,其中該移 動(dòng)規(guī)則為將該第一陣列結(jié)構(gòu)與該第二陣列結(jié)構(gòu)中存取順序相同的各數(shù)據(jù)區(qū) 塊產(chǎn)生對(duì)應(yīng)關(guān)系。
5. 如權(quán)利要求1所述的變更運(yùn)作中的磁盤陣列的等級(jí)的方法,其中該移 動(dòng)各數(shù)據(jù)區(qū)塊的數(shù)據(jù)的步驟為移動(dòng)該存儲(chǔ)帶中的需要移動(dòng)的各數(shù)據(jù)區(qū)塊的 數(shù)據(jù)至對(duì)應(yīng)的該存儲(chǔ)帶中。
6. 如權(quán)利要求5所述的變更運(yùn)作中的磁盤陣列的等級(jí)的方法,其中該移 動(dòng)各數(shù)據(jù)區(qū)塊的數(shù)據(jù)的步驟還包含判斷有對(duì)已移動(dòng)過的該存儲(chǔ)帶的請(qǐng)求產(chǎn) 生時(shí),依據(jù)該移動(dòng)規(guī)則,重新導(dǎo)向該請(qǐng)求存取對(duì)應(yīng)的該數(shù)據(jù)區(qū)塊的歩驟。
7. 如權(quán)利要求5所述的變更運(yùn)作中的磁盤陣列的等級(jí)的方法,其中該移 動(dòng)各數(shù)據(jù)區(qū)塊的數(shù)據(jù)的步驟還包含判斷有對(duì)移動(dòng)中的該存儲(chǔ)帶的請(qǐng)求產(chǎn)生 時(shí),擱置該請(qǐng)求的步驟。
8. 如權(quán)利要求7所述的變更運(yùn)作中的磁盤陣列的等級(jí)的方法,其中該移動(dòng)各數(shù)據(jù)區(qū)塊的數(shù)據(jù)的步驟還包含判斷該存儲(chǔ)帶移動(dòng)完成時(shí),復(fù)原該請(qǐng)求的 步驟。
9. 如權(quán)利要求1所述的變更運(yùn)作中的磁盤陣列的等級(jí)的方法,其中該方 法還包含在修改該第一陣列結(jié)構(gòu)前,判斷有存取各存儲(chǔ)帶的請(qǐng)求產(chǎn)生時(shí),擱 置該請(qǐng)求的步驟。
10. 如權(quán)利要求9所述的變更運(yùn)作中的磁盤陣列的等級(jí)的方法,其中該方 法還包含在該第一陣列結(jié)構(gòu)修改完成后,判斷有被擱置的請(qǐng)求時(shí),復(fù)原該請(qǐng) 求的步驟。
11. 如權(quán)利要求1所述的變更運(yùn)作中的磁盤陣列的等級(jí)的方法,其中該方 法還包含刪除該第二陣列結(jié)構(gòu)的步驟。
全文摘要
一種變更運(yùn)作中的磁盤陣列的等級(jí)的方法,應(yīng)用于使用存儲(chǔ)帶的磁盤陣列上,磁盤陣列的第一陣列結(jié)構(gòu)包含各存儲(chǔ)帶,且各存儲(chǔ)帶由分別位于各硬盤中的一個(gè)數(shù)據(jù)區(qū)塊所構(gòu)成,當(dāng)新增至少一硬盤至磁盤陣列中時(shí),配置新增的硬盤中的各數(shù)據(jù)區(qū)塊至各存儲(chǔ)帶中以建立第二陣列結(jié)構(gòu),接著移動(dòng)第一陣列結(jié)構(gòu)的各數(shù)據(jù)區(qū)塊中的數(shù)據(jù)至第二陣列結(jié)構(gòu)的各數(shù)據(jù)區(qū)塊中,并計(jì)算第二陣列結(jié)構(gòu)中各存儲(chǔ)帶對(duì)應(yīng)的各校驗(yàn)碼,最后依據(jù)第二陣列結(jié)構(gòu)修改該第一陣列結(jié)構(gòu)。本發(fā)明可以變更磁盤陣列的等級(jí),而無需停止磁盤陣列的服務(wù)。
文檔編號(hào)G06F3/06GK101174196SQ20061014295
公開日2008年5月7日 申請(qǐng)日期2006年10月31日 優(yōu)先權(quán)日2006年10月31日
發(fā)明者劉文涵, 王建忠, 陳玄同 申請(qǐng)人:英業(yè)達(dá)股份有限公司