一種數(shù)據(jù)遷移方法和裝置制造方法
【專利摘要】本發(fā)明提供了一種數(shù)據(jù)遷移技術(shù),包括:獲取第一磁盤組的負(fù)載信息;當(dāng)所述負(fù)載信息達(dá)到遷出閾值時(shí),把第一磁盤組中目標(biāo)邏輯單元號(hào)LUN的至少一個(gè)遷出Extent中的數(shù)據(jù)讀取到所述控制器的緩存中;獲取第二磁盤組中的至少一個(gè)遷入Extent,所述遷入Extent的數(shù)量和所述遷出Extent的數(shù)量相同,每個(gè)所述遷出Extent的RAID等級(jí)和一個(gè)所述遷入Extent的RAID等級(jí)一一對(duì)應(yīng),所述遷入Extent是空閑的Extent;將所述遷出LUN與所述遷出Extent的映射關(guān)系更新為所述遷出LUN與所述遷入Extent的映射關(guān)系。
【專利說(shuō)明】一種數(shù)據(jù)遷移方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及存儲(chǔ)技術(shù),特別涉及一種數(shù)據(jù)遷移技術(shù)。
【背景技術(shù)】
[0002]在存儲(chǔ)領(lǐng)域中,為了提高數(shù)據(jù)的讀寫速度或者增強(qiáng)數(shù)據(jù)的安全性,一種稱為廉價(jià)磁盤陣列(Redundant Arrays of Independent Disks, RAID)的技術(shù)得到廣泛應(yīng)用。在這項(xiàng)技術(shù)中,按照某個(gè)RIAD級(jí)別的要求把多個(gè)磁盤聯(lián)系在一起,組成一個(gè)RAID組。
[0003]按照小型計(jì)算機(jī)系統(tǒng)接口(SmallComputer System Interface, SCSI),或者纖維通道(Fibre Channel, FC)、因特網(wǎng)小型計(jì)算機(jī)系統(tǒng)接口網(wǎng)iSCSI (internet SmallComputer System Interface, SCSI)等封裝了 SCSI的協(xié)議,或者其他類似協(xié)議,可以根據(jù)RAID組的容量,從邏輯上對(duì)RAID組做橫向切割,把這個(gè)RAID組劃分成多個(gè)邏輯單元(LogicUnit)。在存儲(chǔ)領(lǐng)域中,習(xí)慣上也以LUN (邏輯單元號(hào),Logic Unit Number)來(lái)稱呼邏輯單元,除非特別說(shuō)明,本發(fā)明沿用這種習(xí)慣。
[0004]RAID組中每個(gè)磁盤都為這個(gè)LUN提供相同大小的存儲(chǔ)空間,每個(gè)切割下來(lái)的單元就稱為一個(gè)LUN。每個(gè)LUN可以單獨(dú)供主機(jī)訪問,這樣的話,原先的一個(gè)RAID組就可以邏輯上作為多個(gè)RAID組來(lái)使用了。
[0005]磁盤組由至少一個(gè)RAID組組成,由于磁盤組內(nèi)磁盤數(shù)量難以直接擴(kuò)充,而磁盤組建立之初,難以確定用戶對(duì)資源的實(shí)際需求量,因此經(jīng)常出現(xiàn)磁盤組能提供的資源難以滿足用戶需求的情況。
【發(fā)明內(nèi)容】
[0006]本發(fā)明提供一種數(shù)據(jù)遷移技術(shù),可以實(shí)現(xiàn)跨磁盤組的數(shù)據(jù)遷移。
[0007]第一方面,本發(fā)明提供一種數(shù)據(jù)遷移方法,應(yīng)用于控制器中,所述控制器分別和第一磁盤組、第二磁盤組連接,所述第一磁盤組DG以及所述第二磁盤組均包括磁盤 ,每個(gè)所述磁盤包括多個(gè)分塊Chunk,其中,至少2個(gè)來(lái)自同一 DG且不同磁盤的Chunk,按照廉價(jià)磁盤冗余陣列RAID算法組成分塊組CKG,每個(gè)CKG劃分成多個(gè)長(zhǎng)度Extent,且所述CKG中每個(gè)所述Chunk為所述Extent提供同樣大小的存儲(chǔ)空間,該方法包括:獲取第一磁盤組的負(fù)載信息;當(dāng)所述負(fù)載信息達(dá)到遷出閾值時(shí),把第一磁盤組中目標(biāo)邏輯單元號(hào)LUN的至少一個(gè)遷出Extent中的數(shù)據(jù)讀取到所述控制器的緩存中;獲取第二磁盤組中的至少一個(gè)遷入Extent,所述遷入Extent的數(shù)量和所述遷出Extent的數(shù)量相同,每個(gè)所述遷出Extent
的RAID等級(jí)和一個(gè)所述遷入Extent的RAID等級(jí)--對(duì)應(yīng),所述遷入Extent是空閑的
Extent ;將所述遷出LUN與所述遷出Extent的映射關(guān)系更新為所述遷出LUN與所述遷入Extent的映射關(guān)系。
[0008]在第一方面的第一種可能的實(shí)現(xiàn)方式中,負(fù)載信息包括:每秒帶寬BPS高于第一閾值,與空閑存儲(chǔ)空間低于第二閾值中的至少一種。
[0009]第二方面,本發(fā)明提供一種數(shù)據(jù)遷移裝置,用于遷移第一磁盤組的數(shù)據(jù)到第二磁盤組,所述第一磁盤組DG以及所述第二磁盤組均包括磁盤,每個(gè)所述磁盤包括多個(gè)分塊Chunk,其中,至少2個(gè)來(lái)自同一 DG且不同磁盤的Chunk,按照廉價(jià)磁盤冗余陣列RAID算法組成分塊組CKG,每個(gè)CKG劃分成多個(gè)長(zhǎng)度Extent,且所述CKG中每個(gè)所述Chunk為所述Extent提供同樣大小的存儲(chǔ)空間,該裝置包括:參數(shù)獲取單元,用于獲取第一磁盤組的負(fù)載信息;數(shù)據(jù)讀取單元,和所述參數(shù)獲取單元41連接,當(dāng)所述負(fù)載信息達(dá)到遷出閾值時(shí),把第一磁盤組中目標(biāo)邏輯單元號(hào)LUN的至少一個(gè)遷出Extent中的數(shù)據(jù)讀取到所述控制器的緩存中;數(shù)據(jù)寫入單元,和所述數(shù)據(jù)讀取單元連接,用于獲取第二磁盤組中的至少一個(gè)遷入Extent,所述遷入Extent的數(shù)量和所述遷出Extent的數(shù)量相同,每個(gè)所述遷出Extent
的RAID等級(jí)和一個(gè)所述遷入Extent的RAID等級(jí)--對(duì)應(yīng),所述遷入Extent是空閑的
Extent ;LUN更新單元,用于將所述遷出LUN與所述遷出Extent的映射關(guān)系更新為所述遷出LUN與所述遷入Extent的映射關(guān)系。
[0010]在第二方面的第一種可能的實(shí)現(xiàn)方式中,負(fù)載信息包括:每秒帶寬BPS高于第一閾值,與空閑存儲(chǔ)空間低于第二閾值中的至少一種。
【專利附圖】
【附圖說(shuō)明】
[0011]為了更清楚地說(shuō)明本發(fā)明實(shí)施例技術(shù)方案,下面將對(duì)實(shí)施例所需要使用的附圖作簡(jiǎn)單地介紹,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,還可以根據(jù)這些附圖獲得其他的附圖。
[0012]圖1是本發(fā)明實(shí)施例數(shù)據(jù)遷移方法流程圖;
[0013]圖2是本發(fā)明實(shí)施例控制器示意圖;
[0014]圖3是本發(fā)明實(shí)施例·數(shù)據(jù)遷移裝置結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0015]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0016]傳統(tǒng)的RAID技術(shù)中,先按照選定的RAID級(jí)別把多個(gè)磁盤組合在一起形成RAID組,然后以RAID組中每個(gè)磁盤作為最小單位,每個(gè)磁盤取出大小相等的一部分空間共同組成LUN。LUN作為單位提供給主機(jī)讀寫,因?yàn)長(zhǎng)UN橫跨了所有磁盤,所以當(dāng)主機(jī)寫數(shù)據(jù)時(shí),數(shù)據(jù)會(huì)寫到整個(gè)RAID組中;讀數(shù)據(jù)時(shí),由整個(gè)RAID組提供數(shù)據(jù)給主機(jī)。
[0017]大部分RAID級(jí)別都提供了數(shù)據(jù)重構(gòu)的功能。例如在RAID3中,有一個(gè)磁盤存儲(chǔ)校驗(yàn)數(shù)據(jù),其余磁盤存儲(chǔ)業(yè)務(wù)數(shù)據(jù)。當(dāng)有一個(gè)磁盤發(fā)生了故障后,可以由其余磁盤通過校驗(yàn)算法恢復(fù)出故障磁盤中的數(shù)據(jù)。然而,由于單個(gè)磁盤的存儲(chǔ)空間越來(lái)越大,而組成RAID組中的磁盤數(shù)量往往不多,例如由6個(gè)磁盤組成一個(gè)RAID組,因此如果有一個(gè)磁盤發(fā)生了故障,只能由RAID組中數(shù)量不多的其余磁盤參與重構(gòu),這個(gè)時(shí)間可能會(huì)很漫長(zhǎng),例如重構(gòu)I太字節(jié)(TB)的數(shù)據(jù)塊,需要耗費(fèi)10小時(shí)。如果重構(gòu)期間有新的磁盤發(fā)生故障,將可能對(duì)存儲(chǔ)系統(tǒng)造成無(wú)法恢復(fù)的數(shù)據(jù)丟失。
[0018]和現(xiàn)有技術(shù)中直接以磁盤作為粒度建立RAID組不同的是。本發(fā)明方案中,先把多個(gè)磁盤中的每個(gè)磁盤切分成大小相等的分塊(CK,Chunk),例如6個(gè)磁盤組成一個(gè)磁盤組(Disk Group, DG),把DG中每個(gè)磁盤切分成大小是64MB (兆字節(jié))的Chunk,然后以Chunk作為粒度建立RAID組,例如3個(gè)Chunk組成一個(gè)RAID組,由這些Chunk構(gòu)成的RAID組,我們稱為分塊組(Chunk Group, CKG)。同一個(gè)磁盤中不會(huì)有屬于同一個(gè)CKG中多個(gè)Chunk,換句話說(shuō),一個(gè)磁盤至多為一個(gè)CKG提供一個(gè)Chunk。并非DG中的每個(gè)磁盤都要為CKG提供Chunk,也就是,CKG中Chunk的數(shù)量可以比DG中磁盤的數(shù)量少。
[0019]需要說(shuō)明的是,本發(fā)明所涉及的技術(shù)并不受限于存儲(chǔ)介質(zhì)本身,因此除了磁盤外,同樣適用于固態(tài)硬盤、可擦寫光盤、軟盤、磁帶等其他介質(zhì),為了方便說(shuō)明,本發(fā)明實(shí)施例以磁盤進(jìn)行舉例。本發(fā)明實(shí)施例所說(shuō)的數(shù)據(jù),例如圖片、視頻、數(shù)據(jù)庫(kù)數(shù)據(jù)、音頻、文本等。
[0020]此時(shí)磁盤間不再組成傳統(tǒng)的RAID關(guān)系,而是可以組成更大磁盤數(shù)量的磁盤組(例如96個(gè)磁盤),磁盤上的Chunk可與此磁盤組中不同磁盤的Chunk組成CKG。每個(gè)CKG可以有自己的RAID級(jí)別,這樣,一個(gè)磁盤上的Chunk可以屬于多個(gè)RAID級(jí)別的多個(gè)分塊組。
[0021]把CKG中的每個(gè)Chunk劃分成小塊的存儲(chǔ)空間,由每個(gè)Chunk提供相同大小的一塊空間,可以組成一個(gè)長(zhǎng)度(Extent),—個(gè)Extent的大小例如256KB (千字節(jié))。用這種辦法,可以把一個(gè)CKG可以分割成多個(gè)Extent,形成Extent Pool (長(zhǎng)度池)。Extent是組成本發(fā)明LUN的基本單元,從Extent Pool中選取一個(gè)或多個(gè)Extent可以組成LUN以供主機(jī)訪問。當(dāng)LUN由多個(gè)Extent組成時(shí),組成這個(gè)LUN的Extent來(lái)自同一個(gè)CKG,也可以來(lái)自不同的CKG,組成同一個(gè)LUN的Extent的RAID級(jí)別可以相同也可以不同,Extent的Raid級(jí)別與其來(lái)自的CKG的RAID級(jí)別相同。屬于同一個(gè)LUN的不同Extent的存儲(chǔ)空間大小相同,可以方便數(shù)據(jù)遷移時(shí)實(shí)現(xiàn)互斥。
[0022]此外,由于傳統(tǒng)RAID技術(shù)中,對(duì)LUN中數(shù)據(jù)的尋址方式是LUN ID+邏輯塊地址(LBA)地址。如果每6個(gè)Chunk組成一個(gè)RAID組,那么每個(gè)Extent的存儲(chǔ)空間也來(lái)自6個(gè)磁盤。但是由于LUN由不同的Extent組成,而每個(gè)Extent所跨越的磁盤可以不一樣,所以在這種情況下,LUN跨越的磁盤數(shù)量可以比傳統(tǒng)RAID組跨越的磁盤更多。因此當(dāng)有磁盤發(fā)生故障時(shí),參與重構(gòu)的磁盤數(shù)量也更多,重構(gòu)時(shí)間大大縮短。本發(fā)明實(shí)施例Chunk、CKG、Extent以及LUN的建立都可以通過控制器來(lái)完成。存儲(chǔ)系統(tǒng)中由控制器和存儲(chǔ)介質(zhì)共同組成,存儲(chǔ)介質(zhì)提供存儲(chǔ)空間,而控制器對(duì)存儲(chǔ)空間進(jìn)行管理,并負(fù)責(zé)對(duì)存儲(chǔ)空間中數(shù)據(jù)的讀出和寫入。Extent跨越的磁盤,是指Extent的存儲(chǔ)空間所來(lái)源的磁盤。
[0023]本發(fā)明實(shí)施例可以實(shí)現(xiàn)跨DG的數(shù)據(jù)遷移。在一個(gè)存儲(chǔ)系統(tǒng)中可以有多個(gè)DG,每個(gè)DG由多個(gè)相同類型的磁盤組成,在DG中按照RAID算法要求的數(shù)量選出CKG,CKG是由DG中不同硬盤上的塊構(gòu)成的,LUN的空間就是由若干個(gè)CKG的空間構(gòu)成的,所以LUN的數(shù)據(jù)可以分布到了 DG內(nèi)的多個(gè)硬盤中。
[0024]本發(fā)明實(shí)施例中,同一個(gè)磁盤組屬于同一個(gè)故障域,不同磁盤組屬于不同的故障域。也就是說(shuō)如果一個(gè)磁盤組中有任意數(shù)量的磁盤發(fā)送故障,在恢復(fù)數(shù)據(jù)時(shí),與其他磁盤組的磁盤無(wú)關(guān),依靠磁盤組內(nèi)部的其他磁盤進(jìn)行恢復(fù)。
[0025]通過CKG的劃分,同一個(gè)磁盤組的磁盤與其他磁盤存在直接或間接的關(guān)系。例如一共有磁盤A、B、C、D和E共計(jì)5個(gè)磁盤組成一個(gè)DG,那么組成一個(gè)CKG的Chunk可以來(lái)自其中任意2個(gè)或者2個(gè)以上磁盤。例如CKGl的Chunk可以來(lái)自A、B和C這3個(gè)磁盤,CKG2的Chunk來(lái)自A、B、C和D這4個(gè)磁盤、CKG3的Chunk來(lái)自C、D、E這三個(gè)磁盤……由于磁盤A與磁盤C共同提供Chunk組成CKGI,因此通過CKGl與CKG2,磁盤A、C建立了直接的聯(lián)系;通過CKG3,磁盤C與E建立了直接聯(lián)系;通過磁盤A、C之間的直接聯(lián)系和磁盤C、E之間的直接聯(lián)系,形成磁盤A、E的間接聯(lián)系。
[0026]如圖1,下面對(duì)跨DG的數(shù)據(jù)遷移做具體介紹。
[0027]步驟11,控制器獲取第一 DG的每秒帶寬(Band Per Second,BPS)以及剩余磁盤空間。第一 DG中有可以遷移出去的LUN,稱為遷出LUN,遷出LUN映射由多個(gè)Extent組成,并和組成它的Extent存在映射關(guān)系。其中,控制器對(duì)第一 DG、第二 DG進(jìn)行管理。遷出任意LUN的任意Extent中的數(shù)據(jù)都可以減少第一 DG的負(fù)載。第一 DG和第二 DG可以是由相同規(guī)格的存儲(chǔ)介質(zhì)組成,例如相同讀寫速度存儲(chǔ)介質(zhì)。
[0028]每次執(zhí)行輸入操作或者輸出操作時(shí),控制器都可以記錄下來(lái),對(duì)一個(gè)時(shí)間段內(nèi)的輸入/輸出操作的總數(shù)進(jìn)行統(tǒng)計(jì),取平均值就可以獲得每秒BPS。而控制器查詢DG的總存儲(chǔ)空間,以及每次寫操作占用的磁盤空間,可以獲得DG剩余空間。
[0029]步驟12,當(dāng)BPS高于第一閾值,并且剩余磁盤空間低于第二閾值時(shí),讀出遷出LUN中至少一個(gè)Extent的數(shù)據(jù)到控制器的緩存。
[0030]本步驟介紹的是數(shù)據(jù)遷移的觸發(fā)條件。BPS是讀/寫操作平均每秒占用的帶寬。例如根據(jù)閾值的設(shè)置,當(dāng)BPS>=100MB/S,并且剩余存儲(chǔ)空間<=10%,就觸發(fā)遷移,然后遷出LUN中至少一個(gè)Extent的數(shù)據(jù)到控制器的緩存。讀出數(shù)據(jù)的Extent的數(shù)量可以由用戶設(shè)定,也可以分別設(shè)置閾值,然后根據(jù)算法計(jì)算獲得。例如可以設(shè)置當(dāng)滿足BPS <= 50MB/S并且剩余存儲(chǔ)空間> =50%就不再遷移。那么可以根據(jù)這兩個(gè)停止遷移的閾值設(shè)置計(jì)算或者大致估算出需要遷移的Extent的數(shù)量。
[0031]步驟13,獲取第二 DG的Extent信息,將讀取到控制器緩存的數(shù)據(jù),寫入第二 DG的Extent中。從第一 DG中讀出數(shù)據(jù)的Extent,和第二 DG中寫入數(shù)據(jù)的Extent具有相同的RAID級(jí)別以及存儲(chǔ)容量。獲取第二 DG的Extent信息和步驟12也可以任意一個(gè)先執(zhí)行,或者并行執(zhí)行。被寫入的Extent是沒有存儲(chǔ)有效數(shù)據(jù)的,可以稱為空閑Extent。Extent的RAID級(jí)別就是Extent所屬于的CKG的RAID級(jí)別。
[0032]如果控制器管理的DG除了第一 DG外,還有多個(gè),可以從這多個(gè)DG中任意挑選一個(gè)作為第二 DG,也可以根據(jù)一定的條件選取,例如設(shè)置遷入閾值,遷入閾值的判斷參數(shù)和遷出閾值的判斷參數(shù)相同。當(dāng)遷出閾值考慮BPS是否高于第一閾值,則遷入閾值考慮BPS是否低于第三閾值。當(dāng)遷出閾值考慮BPS是否高于第一閾值,并且空閑空間是否小于第二閾值;則遷入閾值考慮BPS是否低于第三閾值,并且空閑空間是否大于第四閾值。例如,可以設(shè)定BPS和剩余存儲(chǔ)空間均滿足一定條件的DG作為第二 DG,例如BPS <= 20MB/S并且剩余存儲(chǔ)空間>= 80%才能成為被遷入數(shù)據(jù)的DG。選擇除了第一 DG外的任意一個(gè)DG作為第二DG,從統(tǒng)計(jì)上來(lái)看也可以達(dá)到本發(fā)明是有益效果。
[0033]步驟14,更新遷出LUN所映射的Extent,具體而言,是把與第一 DG中讀出數(shù)據(jù)的Extent的映射,改為與第二 DG中寫入數(shù)據(jù)的Extent的映射。可以釋放第一 DG中讀出數(shù)據(jù)的遷出Extent的存儲(chǔ)空間,使其成為空閑Extent,供其他LUN使用。
[0034]本發(fā)明實(shí)施例中,第一磁盤組以及第二磁盤組均包括磁盤,每個(gè)磁盤包括多個(gè)分塊Chunk。CKG由至少2個(gè)Chunk組成按照RAID算法組成,組成同一個(gè)CKG的Chunk來(lái)自同一 DG的不同磁盤。每個(gè)CKG劃分成多個(gè)長(zhǎng)度Extent,并且每個(gè)Extent的存儲(chǔ)空間由CKG的所有Chunk共同提供,對(duì)同一個(gè)Extent,每個(gè)Chunk提供的存儲(chǔ)空間大小相同。[0035]LUN是由Extent組成的,通過映射關(guān)系,記錄LUN所包含的Extent。通過更新映射關(guān)系,使得LUN中的一部分Extent來(lái)自第二 DG,完成了對(duì)LUN中數(shù)據(jù)的遷移。
[0036]本實(shí)施例中,涉及BPS、剩余磁盤空間這兩項(xiàng)參數(shù),可以把這兩項(xiàng)參數(shù)統(tǒng)稱為負(fù)載信息,并以此兩項(xiàng)參數(shù)同時(shí)滿足閾值,也就是當(dāng)BPS ^ 100MB/S,并且剩余存儲(chǔ)空間≤10%,作為觸發(fā)數(shù)據(jù)遷移操作。在其他實(shí)施例中,也可以只獲取其中一項(xiàng)參數(shù),當(dāng)這一項(xiàng)參數(shù)滿足閾值時(shí)就觸發(fā)數(shù)據(jù)遷移?;蛘呤峭瑫r(shí)考慮兩項(xiàng)參數(shù),設(shè)置兩項(xiàng)參數(shù)各自權(quán)重,把兩項(xiàng)參數(shù)加權(quán)后得到一個(gè)總的數(shù)值,然后用總的數(shù)值和總閾值進(jìn)行比較,以判斷是否處罰數(shù)據(jù)遷移操作。
[0037]本發(fā)明實(shí)施例采用LUN-Extent的映射關(guān)系對(duì)LUN的內(nèi)容進(jìn)行尋址,把待遷移的數(shù)據(jù)復(fù)制到目的DG,然后改變這個(gè)映射關(guān)系就可以實(shí)現(xiàn)跨DG的數(shù)據(jù)遷移。而傳統(tǒng)RAID中,以LUN ID+LAB地址來(lái)進(jìn)行尋址,無(wú)法完成跨DG的數(shù)據(jù)遷移。
[0038]如圖2,從硬件來(lái)描述,上述數(shù)據(jù)遷移步驟可以由控制器2的處理器21執(zhí)行,控制器2的內(nèi)存22中存儲(chǔ)有程序指令,處理器21執(zhí)行程序指令來(lái)實(shí)現(xiàn)這個(gè)方法??刂破?和磁盤組31磁盤組32連接,具體而言可以是內(nèi)存22和磁盤組31以及磁盤組32連接。
[0039]如圖3,本發(fā)明還提供一種數(shù)據(jù)遷移裝置4,可以應(yīng)用上述遷移方法。數(shù)據(jù)遷移裝置4包括參數(shù)獲取單元41,數(shù)據(jù)讀取單元42,數(shù)據(jù)寫入單元43以及LUN更新單元44。數(shù)據(jù)遷移裝置4集成在控制器中,可以在磁盤組之間對(duì)數(shù)據(jù)進(jìn)行遷移。
[0040]參數(shù)獲取單元41,用于獲取第一 DG的每秒讀寫操作次(Input/OutputOperations Per Second, BPS)以及剩余磁盤空間。
[0041]第一 DG中有可 以遷移出去的LUN,稱為遷出LUN,也可以稱為遷出LUN,遷出LUN映射有多個(gè)Extent。其中,控制器對(duì)第一 DG、第二 DG進(jìn)行管理。遷出任意LUN的任意Extent中的數(shù)據(jù)都可以減少第一 DG的負(fù)載。第一 DG和第二 DG可以是由相同規(guī)格的存儲(chǔ)介質(zhì)組成,例如相同讀寫速度存儲(chǔ)介質(zhì)。
[0042]每次執(zhí)行輸入操作或者輸出操作時(shí),可以記錄在控制器都的緩存中,對(duì)一個(gè)時(shí)間段內(nèi)的輸入/輸出操作的總數(shù)進(jìn)行統(tǒng)計(jì),取平均值就可以獲得每秒BPS。而參數(shù)獲取單元41查詢DG的總存儲(chǔ)空間,以及每次寫操作占用的磁盤空間,可以獲得DG剩余空間。
[0043]數(shù)據(jù)讀取單元42,和參數(shù)獲取單元41連接,用于當(dāng)BPS高于第一閾值,并且剩余磁盤空間低于第一閾值時(shí),讀出遷出LUN中至少一個(gè)Extent的數(shù)據(jù)到控制器的緩存。
[0044]可以設(shè)置閾值作為數(shù)據(jù)遷移的觸發(fā)條件。例如根據(jù)閾值的設(shè)置,當(dāng)BPS≥100MB/S,并且剩余存儲(chǔ)空間< 10%,就觸發(fā)遷移,然后遷出LUN中至少一個(gè)Extent的數(shù)據(jù)到控制器的緩存。讀出數(shù)據(jù)的Extent的數(shù)量可以由用戶設(shè)定,也可以分別設(shè)置閾值,然后根據(jù)算法計(jì)算獲得。例如可以設(shè)置當(dāng)滿足BPSS 50MB/S并且剩余存儲(chǔ)空間≥50%就不再遷移。那么可以根據(jù)這兩個(gè)停止遷移的閾值設(shè)置計(jì)算或者大致估算出需要遷移的Extent的數(shù)量。
[0045]數(shù)據(jù)寫入單元43,和數(shù)據(jù)讀取單元42連接,用于獲取第二 DG的Extent信息,將讀取到控制器緩存的數(shù)據(jù),寫入第二 DG的Extent中。
[0046]從第一 DG中讀出數(shù)據(jù)的Extent,和第二 DG中寫入數(shù)據(jù)的Extent具有相同的RAID級(jí)別以及存儲(chǔ)容量。被寫入的Extent是沒有存儲(chǔ)有效數(shù)據(jù)的,可以稱為空閑Extent。Extent的RAID級(jí)別就是Extent所屬于的CKG的RAID級(jí)別。
[0047]如果DG有三個(gè)或者三個(gè)以上,數(shù)據(jù)寫入單元43可以從中任意挑選一個(gè)作為第二DG,也可以根據(jù)一定的條件選取,例如設(shè)置遷入閾值,遷入閾值的項(xiàng)目和遷出閾值匹配。當(dāng)遷出閾值考慮BPS是否高于第一閾值,則遷入閾值考慮BPS是否低于第三閾值。當(dāng)遷出閾值考慮BPS是否高于第一閾值,并且空閑空間是否小于第二閾值;則遷入閾值考慮BPS是否低于第三閾值,并且空閑空間是否大于第四閾值。
[0048]LUN更新單元44,和數(shù)據(jù)寫入單元43連接,用于更新遷出LUN所映射的Extent,具體而言,是把與第一 DG中讀出數(shù)據(jù)的Extent的映射,改為與第二 DG中寫入數(shù)據(jù)的Extent的映射。LUN更新單元44還可以進(jìn)一步,、釋放第一 DG中讀出數(shù)據(jù)的遷出Extent的存儲(chǔ)空間,使其成為空閑Extent。
[0049]LUN是由Extent組成的,通過映射關(guān)系,記錄LUN所包含的Extent。通過更新映射關(guān)系,使得LUN中的一部分Extent來(lái)自第二 DG,完成了對(duì)LUN中數(shù)據(jù)的遷移。
[0050]本發(fā)明實(shí)施例中,第一磁盤組DG以及第二磁盤組均包括磁盤,每個(gè)磁盤包括多個(gè)分塊Chunk。CKG由至少2個(gè)Chunk組成按照RAID算法組成,組成同一個(gè)CKG的Chunk來(lái)自同一 DG的不同磁盤。每個(gè)CKG劃分成多個(gè)長(zhǎng)度Extent,并且每個(gè)Extent的存儲(chǔ)空間由CKG的所有Chunk共同提供,對(duì)同一個(gè)Extent,每個(gè)Chunk提供的存儲(chǔ)空間大小相同
[0051]本實(shí)施例中,涉及BPS、剩余磁盤空間這兩項(xiàng)參數(shù),可以把這兩項(xiàng)參數(shù)統(tǒng)稱為負(fù)載信息,并以此兩項(xiàng)參數(shù)同時(shí)滿足閾值,也就是當(dāng)BPS ^ 100MB/S,并且剩余存儲(chǔ)空間≤10%,作為觸發(fā)數(shù)據(jù)遷移操作。在其他實(shí)施例中,也可以只獲取其中一項(xiàng)參數(shù),當(dāng)這一項(xiàng)參數(shù)滿足閾值時(shí)就觸發(fā)數(shù)據(jù)遷移?;蛘呤峭瑫r(shí)考慮兩項(xiàng)參數(shù),對(duì)兩項(xiàng)設(shè)置權(quán)重,加權(quán)后得到一個(gè)總的數(shù)值,然后用總的數(shù)值和總閾值進(jìn)行比較,以判斷是否處罰數(shù)據(jù)遷移操作。
[0052]本發(fā)明實(shí)施例采用LUN-Extent的映射關(guān)系對(duì)LUN的內(nèi)容進(jìn)行尋址,把待遷移的數(shù)據(jù)復(fù)制到目的DG,然后改變這個(gè)映射關(guān)系就可以實(shí)現(xiàn)跨DG的數(shù)據(jù)遷移。而傳統(tǒng)RAID中,以LUN ID+LAB地址來(lái)進(jìn)行尋址,無(wú)法完成跨DG的數(shù)據(jù)遷移。
[0053]上述實(shí)施例中,除了 BPS,還可以使用每秒讀寫次數(shù)(Input/OutputOperationsPer Second, IOPS)作為閾值,BPS=IOPSX I/O大小,1/0大小是單次讀/寫請(qǐng)求所請(qǐng)求的數(shù)據(jù)量,例如比如512B,4KB,1MB等等。
[0054]本領(lǐng)域普通技術(shù)人員將會(huì)理解,本發(fā)明的各個(gè)方面、或各個(gè)方面的可能實(shí)現(xiàn)方式可以被具體實(shí)施為系統(tǒng)、方法或者計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明的各方面、或各個(gè)方面的可能實(shí)現(xiàn)方式可以采用完全硬件實(shí)施例、完全軟件實(shí)施例(包括固件、駐留軟件等等),或者組合軟件和硬件方面的實(shí)施例的形式,在這里都統(tǒng)稱為“電路”、“模塊”或者“系統(tǒng)”。此外,本發(fā)明的各方面、或各個(gè)方面的可能實(shí)現(xiàn)方式可以采用計(jì)算機(jī)程序產(chǎn)品的形式,計(jì)算機(jī)程序產(chǎn)品是指存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)可讀程序代碼。
[0055]計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包含但不限于電子、磁性、光學(xué)、電磁、紅外或半導(dǎo)體系統(tǒng)、設(shè)備或者裝置,或者前述的任意適當(dāng)組合,如隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦除可編程只讀存儲(chǔ)器(EPROM或者快閃存儲(chǔ)器)、光纖、便攜式只讀存儲(chǔ)器(CD-ROM)。
[0056]計(jì)算機(jī)中的處理器讀取存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)可讀程序代碼,使得處理器能夠執(zhí)行在流程圖中每個(gè)步驟、或各步驟的組合中規(guī)定的功能動(dòng)作;生成實(shí)施在框圖的每一塊、或各塊的組合中規(guī)定的功能動(dòng)作的裝置。
【權(quán)利要求】
1.一種數(shù)據(jù)遷移方法,應(yīng)用于控制器中,所述控制器分別和第一磁盤組、第二磁盤組連接,其特征在于:所述第一磁盤組以及所述第二磁盤組均包括磁盤,每個(gè)所述磁盤包括多個(gè)分塊Chunk,其中,至少2個(gè)來(lái)自同一磁盤組且不同磁盤的Chunk,按照廉價(jià)磁盤冗余陣列RAID算法組成分塊組CKG,每個(gè)CKG劃分成多個(gè)長(zhǎng)度Extent,且所述CKG中每個(gè)所述Chunk為所述Extent提供同樣大小的存儲(chǔ)空間,該方法包括: 獲取第一磁盤組的負(fù)載信息; 當(dāng)所述負(fù)載信息達(dá)到遷出閾值時(shí),把第一磁盤組中目標(biāo)邏輯單元號(hào)LUN的至少一個(gè)遷出Extent中的數(shù)據(jù)讀取到所述控制器的緩存中; 獲取第二磁盤組中的至少一個(gè)遷入Extent,所述遷入Extent的數(shù)量和所述遷出Extent的數(shù)量相同,每個(gè)所述遷出Extent的RAID等級(jí)和一個(gè)所述遷入Extent的RAID等級(jí)--對(duì)應(yīng),所述遷入Extent是空閑的Extent ; 將所述遷出LUN與所述遷出Extent的映射關(guān)系更新為所述遷出LUN與所述遷入Extent的映射關(guān)系。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述負(fù)載信息達(dá)到遷出閾值,包括: 每秒帶寬BPS高于第一閾值;和 空閑存儲(chǔ)空間低于第二閾值。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述負(fù)載信息達(dá)到遷出閾值,包括: 每秒帶寬BPS高于第一閾值。·
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述負(fù)載信息達(dá)到遷出閾值,包括: 空閑存儲(chǔ)空間低于第二閾值。
5.根據(jù)權(quán)利要求1、2、3或4所述的方法,其特征在于,將所述遷出LUN與所述遷出Extent的映射關(guān)系更新為所述遷出LUN與所述遷入Extent的映射關(guān)系之后,進(jìn)一步包括: 釋放所述遷出Extent的存儲(chǔ)空間。
6.根據(jù)權(quán)利要求1、2、3或4所述的方法,其特征在于: 所述第二磁盤組的負(fù)載信息滿足遷入閾值。
7.根據(jù)權(quán)利要求1、2、3或4所述的方法,其特征在于: 屬于同一個(gè)LUN的不同Extent的存儲(chǔ)空間大小相同。
8.一種數(shù)據(jù)遷移裝置,用于遷移第一磁盤組的數(shù)據(jù)到第二磁盤組,其特征在于:所述第一磁盤組以及所述第二磁盤組均包括磁盤,每個(gè)所述磁盤包括多個(gè)分塊Chunk,其中,至少2個(gè)來(lái)自同一磁盤組且不同磁盤的Chunk,按照廉價(jià)磁盤冗余陣列RAID算法組成分塊組CKG,每個(gè)CKG劃分成多個(gè)長(zhǎng)度Extent,且所述CKG中每個(gè)所述Chunk為所述Extent提供同樣大小的存儲(chǔ)空間,該裝置包括: 參數(shù)獲取單元,用于獲取第一磁盤組的負(fù)載信息; 數(shù)據(jù)讀取單元,和所述參數(shù)獲取單元41連接,當(dāng)所述負(fù)載信息達(dá)到遷出閾值時(shí),把第一磁盤組中目標(biāo)邏輯單元號(hào)LUN的至少一個(gè)遷出Extent中的數(shù)據(jù)讀取到所述控制器的緩存中; 數(shù)據(jù)寫入單元,和所述數(shù)據(jù)讀取單元連接,用于獲取第二磁盤組中的至少一個(gè)遷入Extent,所述遷入Extent的數(shù)量和所述遷出Extent的數(shù)量相同,每個(gè)所述遷出Extent的RAID等級(jí)和一個(gè)所述遷入Extent的RAID等級(jí)--對(duì)應(yīng),所述遷入Extent是空閑的Extent ; LUN更新單元,用于將所述遷出LUN與所述遷出Extent的映射關(guān)系更新為所述遷出LUN與所述遷入Extent的映射關(guān)系。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述負(fù)載信息達(dá)到遷出閾值,包括: 每秒帶寬BPS高于第一閾值;和 空閑存儲(chǔ)空間低于第二閾值。
10.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述負(fù)載信息達(dá)到遷出閾值,包括: 每秒帶寬BPS高于第一閾值。
11.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述負(fù)載信息達(dá)到遷出閾值,包括: 空閑存儲(chǔ)空間低于第二閾值。
12.根據(jù)權(quán)利要求8、9、10或11所述的裝置,其特征在于: 屬于同一個(gè)LUN的不同Extent的`存儲(chǔ)空間大小相同。
【文檔編號(hào)】G06F3/06GK103858092SQ201380002566
【公開日】2014年6月11日 申請(qǐng)日期:2013年12月19日 優(yōu)先權(quán)日:2013年12月19日
【發(fā)明者】任仕飛, 薛強(qiáng) 申請(qǐng)人:華為技術(shù)有限公司