一種元數(shù)據(jù)的存儲(chǔ)方法和裝置的制造方法
【專利摘要】本申請(qǐng)?zhí)峁┮环N元數(shù)據(jù)的存儲(chǔ)方法和裝置,應(yīng)用于包括N個(gè)成員磁盤的RAID中,RAID的冗余度為M,N大于M;該方法包括:維護(hù)成員磁盤與存儲(chǔ)區(qū)域的映射關(guān)系;其中,針對(duì)每個(gè)成員磁盤,從N個(gè)成員磁盤中選取L個(gè)成員磁盤,并從L個(gè)成員磁盤的每個(gè)成員磁盤中選取一個(gè)存儲(chǔ)區(qū)域,并維護(hù)成員磁盤與選取的L個(gè)存儲(chǔ)區(qū)域的映射關(guān)系;L大于M,L小于等于N,且在每個(gè)成員磁盤的元數(shù)據(jù)空間中被劃分出L個(gè)存儲(chǔ)區(qū)域;在需要存儲(chǔ)成員磁盤的元數(shù)據(jù)時(shí),利用所述映射關(guān)系,查詢?cè)摮蓡T磁盤對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域,并將元數(shù)據(jù)存儲(chǔ)在該L個(gè)存儲(chǔ)區(qū)域中。通過本申請(qǐng)的技術(shù)方案,可以節(jié)省磁盤的存儲(chǔ)空間,提高空間利用率,提高元數(shù)據(jù)的操作效率和操作性能,更新速度效率高。
【專利說明】
一種元數(shù)據(jù)的存儲(chǔ)方法和裝置
技術(shù)領(lǐng)域
[0001 ]本申請(qǐng)涉及存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種元數(shù)據(jù)的存儲(chǔ)方法和裝置。【背景技術(shù)】
[0002]RAID(Redundant Array of Independent Disks,獨(dú)立磁盤冗余陣列)是一種將多塊獨(dú)立的物理磁盤,按照不同方式組合起來,形成一個(gè)磁盤組,從而提供比單個(gè)物理磁盤更高的存儲(chǔ)性能,并提供數(shù)據(jù)備份的技術(shù)。根據(jù)不同的數(shù)據(jù)組織方式,常用的RAID可以包括 RAID0、RAID1、RAID5、RAID6、RAID10等。其中,組成RAID的物理磁盤稱為成員磁盤,且該成員磁盤的空間包括元數(shù)據(jù)空間和數(shù)據(jù)空間,數(shù)據(jù)空間用于存儲(chǔ)真實(shí)的數(shù)據(jù),而元數(shù)據(jù)空間用于存儲(chǔ)元數(shù)據(jù)。元數(shù)據(jù)包括用于管理RAID及其成員磁盤的數(shù)據(jù),例如,RAID由哪些成員磁盤組成、RAID的狀態(tài)、RAID的組織信息、成員磁盤的重建信息等。
[0003]RAID的每個(gè)成員磁盤都有自身的元數(shù)據(jù),并存儲(chǔ)在本成員磁盤的元數(shù)據(jù)空間。例如,成員磁盤1的元數(shù)據(jù)1存儲(chǔ)在本成員磁盤1的元數(shù)據(jù)空間,成員磁盤2的元數(shù)據(jù)2存儲(chǔ)在本成員磁盤2的元數(shù)據(jù)空間,成員磁盤3的元數(shù)據(jù)3存儲(chǔ)在本成員磁盤3的元數(shù)據(jù)空間,以此類推。進(jìn)一步的,在RAID的讀寫過程中,成員磁盤有可能掉線,因此為了保證成員磁盤的元數(shù)據(jù)不發(fā)生丟失,通常將每個(gè)成員磁盤的元數(shù)據(jù)都存儲(chǔ)在所有成員磁盤上。如圖1所示,將成員磁盤1的元數(shù)據(jù)1依次存儲(chǔ)在成員磁盤1-成員磁盤8的元數(shù)據(jù)空間,將成員磁盤2的元數(shù)據(jù) 2依次存儲(chǔ)在成員磁盤1-成員磁盤8的元數(shù)據(jù)空間,以此類推。
[0004]但是,如果成員磁盤的數(shù)量很多,則需要在每個(gè)成員磁盤的元數(shù)據(jù)空間都存儲(chǔ)大量的元數(shù)據(jù),例如,成員磁盤的數(shù)量為64個(gè)時(shí),則每個(gè)成員磁盤的元數(shù)據(jù)空間都存儲(chǔ)64個(gè)成員磁盤的元數(shù)據(jù)。這樣,元數(shù)據(jù)占用的磁盤空間過大,導(dǎo)致磁盤空間的浪費(fèi)。而且,需要將每個(gè)成員磁盤的元數(shù)據(jù)依次存儲(chǔ)到每個(gè)成員磁盤的元數(shù)據(jù)空間,導(dǎo)致更新元數(shù)據(jù)的操作不能并發(fā)進(jìn)行,更新速度效率低。
【發(fā)明內(nèi)容】
[0005]本申請(qǐng)?zhí)峁┮环N元數(shù)據(jù)的存儲(chǔ)方法,應(yīng)用于包括N個(gè)成員磁盤的獨(dú)立磁盤冗余陣列RAID中,所述RAID的冗余度為M,N大于M;所述方法包括:
[0006]維護(hù)成員磁盤與存儲(chǔ)區(qū)域的映射關(guān)系;其中,針對(duì)每個(gè)成員磁盤,從N個(gè)成員磁盤中選取L個(gè)成員磁盤,并從L個(gè)成員磁盤的每個(gè)成員磁盤中選取一個(gè)存儲(chǔ)區(qū)域,并維護(hù)所述成員磁盤與選取的L個(gè)存儲(chǔ)區(qū)域的映射關(guān)系;L大于M,L小于等于N,且在每個(gè)成員磁盤的元數(shù)據(jù)空間中被劃分出L個(gè)存儲(chǔ)區(qū)域;
[0007]在需要存儲(chǔ)成員磁盤的元數(shù)據(jù)時(shí),利用所述映射關(guān)系,查詢?cè)摮蓡T磁盤對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域,并將所述元數(shù)據(jù)存儲(chǔ)在該L個(gè)存儲(chǔ)區(qū)域中。[00〇8]所述L的確定方式具體包括:確定元數(shù)據(jù)的備份數(shù)量L為所述RAID的冗余度M加1。
[0009]所述從N個(gè)成員磁盤中選取L個(gè)成員磁盤的過程,具體包括:針對(duì)每個(gè)成員磁盤,從 N個(gè)成員磁盤中選取所述成員磁盤,并從剩余的N-1個(gè)成員磁盤中選取L-1個(gè)成員磁盤。
[0010]所述從剩余的N-1個(gè)成員磁盤中選取L-1個(gè)成員磁盤的過程,具體包括:從剩余的 N-1個(gè)成員磁盤中,選取與所述成員磁盤相鄰的L-1個(gè)成員磁盤;其中,與所述成員磁盤相鄰的L-1個(gè)成員磁盤是指:在成員磁盤列表空間中,如果位于所述成員磁盤后面的成員磁盤數(shù)量不小于L-1個(gè),則所述L-1個(gè)成員磁盤包括位于所述成員磁盤后面的連續(xù)L-1個(gè)成員磁盤; 如果位于所述成員磁盤后面的成員磁盤數(shù)量小于L-1個(gè),則所述L-1個(gè)成員磁盤包括位于所述成員磁盤后面的所有成員磁盤,剩下的成員磁盤是從所述成員磁盤列表空間的首個(gè)成員磁盤開始的連續(xù)成員磁盤。
[0011]所述從L個(gè)成員磁盤的每個(gè)成員磁盤中選取一個(gè)存儲(chǔ)區(qū)域的過程,具體包括:在從第一個(gè)成員磁盤至第L個(gè)成員磁盤的順序上,依次選取第一個(gè)存儲(chǔ)區(qū)域至第L個(gè)存儲(chǔ)區(qū)域。
[0012]所述將所述元數(shù)據(jù)存儲(chǔ)在該L個(gè)存儲(chǔ)區(qū)域的過程,具體包括:在需要存儲(chǔ)至少兩個(gè)成員磁盤的元數(shù)據(jù)時(shí),如果所述至少兩個(gè)成員磁盤對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域處在不同的成員磁盤,則并發(fā)執(zhí)行將所述至少兩個(gè)成員磁盤的元數(shù)據(jù)存儲(chǔ)在對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域的過程。
[0013]所述方法還包括:
[0014]在需要讀取成員磁盤的元數(shù)據(jù)時(shí),利用所述映射關(guān)系,查詢?cè)摮蓡T磁盤對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域,并從該L個(gè)存儲(chǔ)區(qū)域的一個(gè)存儲(chǔ)區(qū)域中讀取元數(shù)據(jù)。
[0015]所述方法還包括:
[0016]當(dāng)N個(gè)成員磁盤中有成員磁盤發(fā)生異常時(shí),如果在所述RAID中增加新成員磁盤,則利用所述映射關(guān)系,從未發(fā)生異常的成員磁盤中獲取發(fā)生異常的成員磁盤中記錄的元數(shù)據(jù),并將獲取的元數(shù)據(jù)存儲(chǔ)在所述新成員磁盤的存儲(chǔ)區(qū)域。
[0017]本申請(qǐng)?zhí)峁┮环N元數(shù)據(jù)的存儲(chǔ)裝置,應(yīng)用于包括N個(gè)成員磁盤的獨(dú)立磁盤冗余陣列RAID中,所述RAID的冗余度為M,N大于M;所述裝置包括:
[0018]維護(hù)模塊,用于維護(hù)成員磁盤與存儲(chǔ)區(qū)域的映射關(guān)系;其中,在維護(hù)成員磁盤與存儲(chǔ)區(qū)域的映射關(guān)系的過程中,針對(duì)每個(gè)成員磁盤,從N個(gè)成員磁盤中選取L個(gè)成員磁盤,并從 L個(gè)成員磁盤的每個(gè)成員磁盤中選取一個(gè)存儲(chǔ)區(qū)域,并維護(hù)所述成員磁盤與選取的L個(gè)存儲(chǔ)區(qū)域的映射關(guān)系;L大于M,L小于等于N,且在每個(gè)成員磁盤的元數(shù)據(jù)空間中被劃分出L個(gè)存儲(chǔ)區(qū)域;
[0019]處理模塊,用于在需要存儲(chǔ)成員磁盤的元數(shù)據(jù)時(shí),利用所述映射關(guān)系,查詢?cè)摮蓡T磁盤對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域,并將所述元數(shù)據(jù)存儲(chǔ)在該L個(gè)存儲(chǔ)區(qū)域中。
[0020]所述維護(hù)模塊,具體用于在確定所述L的過程中,確定元數(shù)據(jù)的備份數(shù)量L為所述 RAID的冗余度M加1;在從N個(gè)成員磁盤中選取L個(gè)成員磁盤的過程中,針對(duì)每個(gè)成員磁盤,從所述N個(gè)成員磁盤中選取所述成員磁盤,并從剩余的N-1個(gè)成員磁盤中選取L-1個(gè)成員磁盤; 在從剩余的N-1個(gè)成員磁盤中選取L-1個(gè)成員磁盤的過程中,從剩余的N-1個(gè)成員磁盤中,選取與所述成員磁盤相鄰的L-1個(gè)成員磁盤;在從所述L個(gè)成員磁盤的每個(gè)成員磁盤中選取一個(gè)存儲(chǔ)區(qū)域的過程中,在從第一個(gè)成員磁盤至第L個(gè)成員磁盤的順序上,依次選取第一個(gè)存儲(chǔ)區(qū)域至第L個(gè)存儲(chǔ)區(qū)域;其中,與所述成員磁盤相鄰的L-1個(gè)成員磁盤是指:在成員磁盤列表空間中,如果位于所述成員磁盤后面的成員磁盤數(shù)量不小于L-1個(gè),則所述L-1個(gè)成員磁盤包括位于所述成員磁盤后面的連續(xù)L-1個(gè)成員磁盤,如果位于所述成員磁盤后面的成員磁盤數(shù)量小于L-1個(gè),則所述L-1個(gè)成員磁盤包括位于所述成員磁盤后面的所有成員磁盤, 剩下的成員磁盤是從所述成員磁盤列表空間的首個(gè)成員磁盤開始的連續(xù)成員磁盤;
[0021]所述處理模塊,具體用于在將所述元數(shù)據(jù)存儲(chǔ)在該L個(gè)存儲(chǔ)區(qū)域的過程中,當(dāng)需要存儲(chǔ)至少兩個(gè)成員磁盤的元數(shù)據(jù)時(shí),如果所述至少兩個(gè)成員磁盤對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域處在不同的成員磁盤,則并發(fā)執(zhí)行將所述至少兩個(gè)成員磁盤的元數(shù)據(jù)存儲(chǔ)在對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域的過程;
[0022]所述處理模塊,還用于在需要讀取成員磁盤的元數(shù)據(jù)時(shí),利用所述映射關(guān)系,查詢?cè)摮蓡T磁盤對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域,并從該L個(gè)存儲(chǔ)區(qū)域的一個(gè)存儲(chǔ)區(qū)域中讀取元數(shù)據(jù);和/ 或,所述處理模塊,還用于當(dāng)所述N個(gè)成員磁盤中有成員磁盤發(fā)生異常時(shí),如果在所述RAID 中增加新成員磁盤時(shí),則利用所述映射關(guān)系,從未發(fā)生異常的成員磁盤中獲取發(fā)生異常的成員磁盤中記錄的元數(shù)據(jù),并將獲取的元數(shù)據(jù)存儲(chǔ)在所述新成員磁盤的存儲(chǔ)區(qū)域。
[0023]基于上述技術(shù)方案,本申請(qǐng)實(shí)施例中,可以只將元數(shù)據(jù)存儲(chǔ)在少量成員磁盤的存儲(chǔ)區(qū)域中,而不是將元數(shù)據(jù)存儲(chǔ)在所有成員磁盤的存儲(chǔ)區(qū)域中,從而避免元數(shù)據(jù)占用的磁盤空間過大,避免磁盤空間的浪費(fèi),節(jié)省磁盤的存儲(chǔ)空間,提高空間利用率。而且,可以并發(fā)執(zhí)行將至少兩個(gè)成員磁盤的元數(shù)據(jù)存儲(chǔ)在存儲(chǔ)區(qū)域的過程,提高元數(shù)據(jù)的操作效率和操作性能,更新速度效率高?!靖綀D說明】
[0024]為了更加清楚地說明本申請(qǐng)實(shí)施例或者現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)本申請(qǐng)實(shí)施例或者現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,還可以根據(jù)這些附圖獲得其他的附圖。
[0025]圖1是將每個(gè)成員磁盤的元數(shù)據(jù)都存儲(chǔ)在所有成員磁盤的示意圖;
[0026]圖2是本申請(qǐng)一種實(shí)施方式中的元數(shù)據(jù)的存儲(chǔ)方法的流程圖;
[0027]圖3是本申請(qǐng)一種實(shí)施方式中的元數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu)示意圖;
[0028]圖4和圖5是本申請(qǐng)一種實(shí)施方式中的成員磁盤發(fā)生異常的示意圖;[〇〇29]圖6是本申請(qǐng)一種實(shí)施方式中的存儲(chǔ)設(shè)備的硬件結(jié)構(gòu)圖;[〇〇3〇]圖7是本申請(qǐng)一種實(shí)施方式中元數(shù)據(jù)的存儲(chǔ)裝置的結(jié)構(gòu)圖?!揪唧w實(shí)施方式】[0031 ]在本申請(qǐng)使用的術(shù)語僅僅是出于描述特定實(shí)施例的目的,而非限制本申請(qǐng)。本申請(qǐng)和權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其它含義。還應(yīng)當(dāng)理解,本文中使用的術(shù)語“和/或”是指包含一個(gè)或多個(gè)相關(guān)聯(lián)的列出項(xiàng)目的任何或所有可能組合。[〇〇32]應(yīng)當(dāng)理解,盡管在本申請(qǐng)可能采用術(shù)語第一、第二、第三等來描述各種信息,但這些信息不應(yīng)限于這些術(shù)語。這些術(shù)語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本申請(qǐng)范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,此外,所使用的詞語“如果”可以被解釋成為“在……時(shí)”或“當(dāng)……時(shí)” 或“響應(yīng)于確定”。
[0033]針對(duì)現(xiàn)有技術(shù)中存在的問題,本申請(qǐng)實(shí)施例中提出一種元數(shù)據(jù)的存儲(chǔ)方法,該方法可以應(yīng)用于包括N個(gè)成員磁盤的RAID中,且RAID的冗余度為M。在一個(gè)例子中,RAID的冗余度是指RAID正常讀寫時(shí),允許發(fā)生異常的成員磁盤的最大數(shù)量,如RAID5的冗余度為1, RAID6的冗余度為2?;诖?,當(dāng)發(fā)生異常的成員磁盤的數(shù)量小于等于RAID的冗余度時(shí),RAID 仍可以正常讀寫。為了實(shí)現(xiàn)RAID正常讀寫的過程,則成員磁盤的數(shù)量N大于RAID的冗余度M。
[0034]在一個(gè)例子中,成員磁盤的空間包括元數(shù)據(jù)空間和數(shù)據(jù)空間,數(shù)據(jù)空間用于存儲(chǔ)真實(shí)的數(shù)據(jù),而元數(shù)據(jù)空間用于存儲(chǔ)元數(shù)據(jù)。在本申請(qǐng)實(shí)施例的后續(xù)過程中,該元數(shù)據(jù)包括用于管理RAID及其成員磁盤的數(shù)據(jù),例如,RAID由哪些成員磁盤組成、RAID的狀態(tài)、RAID的組織信息、成員磁盤的重建信息等。
[0035]在一個(gè)例子中,RAID的每個(gè)成員磁盤都有自身的元數(shù)據(jù),例如,成員磁盤1具有對(duì)應(yīng)的元數(shù)據(jù)1,成員磁盤2具有對(duì)應(yīng)的元數(shù)據(jù)2等,以此類推。
[0036]在上述應(yīng)用場(chǎng)景下,如圖2所示,該元數(shù)據(jù)的存儲(chǔ)方法可以包括以下步驟:[〇〇37]步驟201,維護(hù)成員磁盤與存儲(chǔ)區(qū)域的映射關(guān)系;其中,針對(duì)每個(gè)成員磁盤,從N個(gè)成員磁盤中選取L個(gè)成員磁盤,并從L個(gè)成員磁盤的每個(gè)成員磁盤中選取一個(gè)存儲(chǔ)區(qū)域,并維護(hù)成員磁盤與選取的L個(gè)存儲(chǔ)區(qū)域的映射關(guān)系;L大于M,L小于等于N,且在每個(gè)成員磁盤的元數(shù)據(jù)空間中被劃分出L個(gè)存儲(chǔ)區(qū)域。
[0038]步驟202,在需要存儲(chǔ)成員磁盤的元數(shù)據(jù)時(shí),利用上述映射關(guān)系,查詢?cè)摮蓡T磁盤對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域,并將該元數(shù)據(jù)存儲(chǔ)在該L個(gè)存儲(chǔ)區(qū)域中。[〇〇39]針對(duì)步驟201,在一個(gè)例子中,L的確定方式具體可以包括但不限于:確定元數(shù)據(jù)的備份數(shù)量L為RAID的冗余度M加1。當(dāng)然,元數(shù)據(jù)的備份數(shù)量L只要大于RAID的冗余度M,且小于等于成員磁盤的數(shù)量N即可,并不限制L的具體數(shù)值,如元數(shù)據(jù)的備份數(shù)量L為RAID的冗余度M加2、加3、加4等。
[0040]其中,為了保證RAID可以正常讀寫,則需要記錄所有成員磁盤的元數(shù)據(jù)。因此,為了實(shí)現(xiàn)當(dāng)發(fā)生異常的成員磁盤的數(shù)量小于等于RAID的冗余度時(shí),RAID仍然可以正常讀寫, 針對(duì)每個(gè)成員磁盤的元數(shù)據(jù),則除了發(fā)生異常的成員磁盤之外,至少還需要有一個(gè)成員磁盤中記錄有該元數(shù)據(jù),這樣,就可以保證RAID中記錄所有成員磁盤的元數(shù)據(jù),繼而正常讀寫。例如,成員磁盤1的元數(shù)據(jù)1記錄在成員磁盤1、成員磁盤2和成員磁盤3的元數(shù)據(jù)空間,假設(shè)RAID的冗余度為2,則當(dāng)成員磁盤1發(fā)生故障時(shí),由于只有一個(gè)成員磁盤發(fā)生故障,而RAID 的冗余度為2,因此RAID可以正常讀寫,而此時(shí)成員磁盤2和成員磁盤3的元數(shù)據(jù)空間中存在元數(shù)據(jù)1,因此,可以保證RAID的正常讀寫。當(dāng)成員磁盤1和成員磁盤2發(fā)生故障時(shí),由于只有兩個(gè)成員磁盤發(fā)生故障,而RAID的冗余度為2,因此RAID可以正常讀寫,而此時(shí)成員磁盤3的元數(shù)據(jù)空間中存在元數(shù)據(jù)1,因此,可以保證RAID的正常讀寫。當(dāng)成員磁盤1、成員磁盤2和成員磁盤3發(fā)生故障時(shí),由于有三個(gè)成員磁盤發(fā)生故障,而RAID的冗余度為2,因此RAID無法正常讀寫,也就不用保證至少還有一個(gè)成員磁盤中記錄有元數(shù)據(jù)1。[〇〇41] 在上述過程中,可以保證RAID的正常讀寫的原因是:當(dāng)數(shù)據(jù)寫入到故障成員磁盤1 的數(shù)據(jù)空間的某個(gè)塊時(shí),由于成員磁盤1已經(jīng)故障,因此會(huì)通過冗余算法將數(shù)據(jù)寫入到其它成員磁盤的數(shù)據(jù)空間的某個(gè)塊,而成員磁盤1的數(shù)據(jù)空間中,該塊的數(shù)據(jù)就是錯(cuò)誤的。當(dāng)成員磁盤1的故障恢復(fù)時(shí),RAID需要知道成員磁盤1的數(shù)據(jù)空間中,該塊的數(shù)據(jù)是錯(cuò)誤的信息, 因此需要在元數(shù)據(jù)1中記錄這個(gè)信息,并通過在多個(gè)成員磁盤的元數(shù)據(jù)空間中存儲(chǔ)元數(shù)據(jù) 1,使得RAID可以知道成員磁盤1的數(shù)據(jù)空間中,該塊的數(shù)據(jù)是錯(cuò)誤的信息,繼而正常讀寫。 [〇〇42]基于上述分析,則元數(shù)據(jù)的備份數(shù)量L需要大于RAID的冗余度M。此外,為了節(jié)省磁盤的存儲(chǔ)空間,提高空間利用率,則元數(shù)據(jù)的備份數(shù)量L越小越好。因此基于上述兩個(gè)策略, 則元數(shù)據(jù)的備份數(shù)量L可以為RAID的冗余度M加1。
[0043]在一個(gè)例子中,需要在每個(gè)成員磁盤的元數(shù)據(jù)空間中劃分出L個(gè)存儲(chǔ)區(qū)域,例如, 當(dāng)L為4時(shí),則可以在每個(gè)成員磁盤的元數(shù)據(jù)空間中,劃分出第一個(gè)存儲(chǔ)區(qū)域、第二個(gè)存儲(chǔ)區(qū)域、第三個(gè)存儲(chǔ)區(qū)域、第四個(gè)存儲(chǔ)區(qū)域等。其中,在劃分存儲(chǔ)區(qū)域時(shí),則每個(gè)存儲(chǔ)區(qū)域的大小需要大于等于元數(shù)據(jù)的大小。
[0044]在一個(gè)例子中,從N個(gè)成員磁盤中選取L個(gè)成員磁盤的過程,具體可以包括但不限于如下方式:針對(duì)每個(gè)成員磁盤,從N個(gè)成員磁盤中選取該成員磁盤,并從剩余的N-1個(gè)成員磁盤中選取L-1個(gè)成員磁盤。例如,當(dāng)N為8, L為4時(shí),針對(duì)成員磁盤1,則選取該成員磁盤1,并從剩余的7個(gè)成員磁盤中選取3個(gè)成員磁盤,如選取成員磁盤3、成員磁盤5、成員磁盤7。當(dāng)然,也可以采用其它方式選取成員磁盤,如針對(duì)成員磁盤1,則選取成員磁盤2、成員磁盤4、 成員磁盤6、成員磁盤8等。本申請(qǐng)實(shí)施例中,對(duì)于選取成員磁盤的方式不再贅述,只要能夠選取出L個(gè)不同的成員磁盤即可,以上述從N個(gè)成員磁盤中選取該成員磁盤,并從剩余的N-1 個(gè)成員磁盤中選取L-1個(gè)成員磁盤為例進(jìn)行說明。
[0045]在一個(gè)例子中,從剩余的N-1個(gè)成員磁盤中選取L-1個(gè)成員磁盤的過程,具體可以包括但不限于如下方式:從剩余的N-1個(gè)成員磁盤中,選取與成員磁盤相鄰的L-1個(gè)成員磁盤。其中,與成員磁盤相鄰的L-1個(gè)成員磁盤是指:在成員磁盤列表空間中,如果位于成員磁盤后面的成員磁盤數(shù)量不小于L-1個(gè),則L-1個(gè)成員磁盤包括位于成員磁盤后面的連續(xù)L-1 個(gè)成員磁盤;如果位于成員磁盤后面的成員磁盤數(shù)量小于L-1個(gè),則L-1個(gè)成員磁盤包括位于成員磁盤后面的所有成員磁盤,剩下的成員磁盤是從成員磁盤列表空間的首個(gè)成員磁盤開始的連續(xù)成員磁盤。當(dāng)然,也可以采用其它方式選取L-1個(gè)成員磁盤,如針對(duì)成員磁盤1, 不是選取成員磁盤2、成員磁盤3、成員磁盤4,而是選取成員磁盤2、成員磁盤5、成員磁盤8 等。本申請(qǐng)實(shí)施例中,對(duì)于選取L-1個(gè)成員磁盤的方式不再贅述,只要能夠選取出L-1個(gè)不同的成員磁盤即可,以上述從剩余的N-1個(gè)成員磁盤中,選取與成員磁盤相鄰的L-1個(gè)成員磁盤為例進(jìn)行說明。
[0046]在一個(gè)例子中,從L個(gè)成員磁盤的每個(gè)成員磁盤中選取一個(gè)存儲(chǔ)區(qū)域的過程,具體可以包括但不限于如下方式:在從第一個(gè)成員磁盤至第L個(gè)成員磁盤的順序上,依次選取第一個(gè)存儲(chǔ)區(qū)域至第L個(gè)存儲(chǔ)區(qū)域。例如,從第一個(gè)成員磁盤選取第一個(gè)存儲(chǔ)區(qū)域,從第二個(gè)成員磁盤選取第二個(gè)存儲(chǔ)區(qū)域,以此類推,從第L個(gè)成員磁盤選取第L個(gè)存儲(chǔ)區(qū)域。當(dāng)然,也可以采用其它方式選取存儲(chǔ)區(qū)域,如從第一個(gè)成員磁盤選取第二個(gè)存儲(chǔ)區(qū)域,從第二個(gè)成員磁盤選取第三個(gè)存儲(chǔ)區(qū)域,以此類推,從第L個(gè)成員磁盤選取第一個(gè)存儲(chǔ)區(qū)域。本申請(qǐng)實(shí)施例中,對(duì)于從每個(gè)成員磁盤中選取一個(gè)存儲(chǔ)區(qū)域的方式不再贅述,只要能夠從每個(gè)成員磁盤中選取一個(gè)存儲(chǔ)區(qū)域即可,以上述在從第一個(gè)成員磁盤至第L個(gè)成員磁盤的順序上,依次選取第一個(gè)存儲(chǔ)區(qū)域至第L個(gè)存儲(chǔ)區(qū)域?yàn)槔M(jìn)行說明。
[0047]以下結(jié)合圖3所示的應(yīng)用場(chǎng)景對(duì)上述過程進(jìn)行詳細(xì)說明。在圖3中,N個(gè)成員磁盤分別為成員磁盤1、成員磁盤2、成員磁盤3、成員磁盤4、成員磁盤5、成員磁盤6、成員磁盤7、成員磁盤8,此外,RAID的冗余度M為3。
[0048]在確定元數(shù)據(jù)的備份數(shù)量L的過程中,可以確定L為M+1,S卩L為4。
[0049]在成員磁盤1、成員磁盤2、成員磁盤3、成員磁盤4、成員磁盤5、成員磁盤6、成員磁盤7、成員磁盤8的元數(shù)據(jù)空間中分別劃分出4個(gè)存儲(chǔ)區(qū)域,即第一個(gè)存儲(chǔ)區(qū)域、第二個(gè)存儲(chǔ)區(qū)域、第三個(gè)存儲(chǔ)區(qū)域、第四個(gè)存儲(chǔ)區(qū)域等。
[0050]在從N個(gè)成員磁盤中選取L個(gè)成員磁盤的過程中,針對(duì)成員磁盤1,選擇的4個(gè)成員磁盤可以包含成員磁盤1,也可以不包含成員磁盤1,以包含成員磁盤1為例。對(duì)于剩下的3個(gè)成員磁盤,可以從成員磁盤2、成員磁盤3、成員磁盤4、成員磁盤5、成員磁盤6、成員磁盤7、成員磁盤8中,隨機(jī)選擇3個(gè)成員磁盤,也可以選取與成員磁盤1相鄰的3個(gè)成員磁盤,以選取與成員磁盤1相鄰的3個(gè)成員磁盤為例。對(duì)于其它成員磁盤,處理與成員磁盤1的處理類似。
[0051]在成員磁盤列表空間中,依次包含成員磁盤1、成員磁盤2、成員磁盤3、成員磁盤4、 成員磁盤5、成員磁盤6、成員磁盤7、成員磁盤8。對(duì)于成員磁盤1,位于成員磁盤1后面的成員磁盤數(shù)量為7個(gè),不小于3個(gè),因此針對(duì)成員磁盤1,選擇的4個(gè)成員磁盤為成員磁盤1、成員磁盤2、成員磁盤3、成員磁盤4。同理,針對(duì)成員磁盤2,選擇的4個(gè)成員磁盤為成員磁盤2、成員磁盤3、成員磁盤4、成員磁盤5。針對(duì)成員磁盤3,選擇的4個(gè)成員磁盤為成員磁盤3、成員磁盤 4、成員磁盤5、成員磁盤6。針對(duì)成員磁盤4,選擇的4個(gè)成員磁盤為成員磁盤4、成員磁盤5、成員磁盤6、成員磁盤7。針對(duì)成員磁盤5,選擇的4個(gè)成員磁盤為成員磁盤5、成員磁盤6、成員磁盤7、成員磁盤8。對(duì)于成員磁盤6,位于成員磁盤6后面的成員磁盤數(shù)量為2個(gè),小于3個(gè),因此針對(duì)成員磁盤6,選擇的4個(gè)成員磁盤為成員磁盤6、成員磁盤7、成員磁盤8、成員磁盤1,成員磁盤7和成員磁盤8是成員磁盤后面的所有成員磁盤,而成員磁盤1是從成員磁盤列表空間的首個(gè)成員磁盤開始的成員磁盤。針對(duì)成員磁盤7,選擇的4個(gè)成員磁盤為成員磁盤7、成員磁盤8、成員磁盤1、成員磁盤2,成員磁盤8是成員磁盤后面的所有成員磁盤,而成員磁盤1和成員磁盤2是從成員磁盤列表空間的首個(gè)成員磁盤開始的連續(xù)成員磁盤。針對(duì)成員磁盤8, 選擇的4個(gè)成員磁盤為成員磁盤8、成員磁盤1、成員磁盤2、成員磁盤3,成員磁盤1、成員磁盤 2和成員磁盤3是從成員磁盤列表空間的首個(gè)成員磁盤開始的連續(xù)成員磁盤。[〇〇52]在從L個(gè)成員磁盤的每個(gè)成員磁盤中選取一個(gè)存儲(chǔ)區(qū)域的過程中,針對(duì)成員磁盤 1,選擇的4個(gè)成員磁盤分別為成員磁盤1、成員磁盤2、成員磁盤3、成員磁盤4,因此為成員磁盤1選取的存儲(chǔ)區(qū)域可以為成員磁盤1、成員磁盤2、成員磁盤3、成員磁盤4的任意存儲(chǔ)區(qū)域, 如成員磁盤1的第一個(gè)存儲(chǔ)區(qū)域、成員磁盤2的第一個(gè)存儲(chǔ)區(qū)域、成員磁盤3的第一個(gè)存儲(chǔ)區(qū)域、成員磁盤4的第一個(gè)存儲(chǔ)區(qū)域。在一個(gè)例子中,針對(duì)成員磁盤1選擇的存儲(chǔ)區(qū)域可以為: 成員磁盤1的第一個(gè)存儲(chǔ)區(qū)域、成員磁盤2的第二個(gè)存儲(chǔ)區(qū)域、成員磁盤3的第三個(gè)存儲(chǔ)區(qū)域、成員磁盤4的第四個(gè)存儲(chǔ)區(qū)域。對(duì)于其它成員磁盤,選取存儲(chǔ)區(qū)域的方式與針對(duì)成員磁盤1選取存儲(chǔ)區(qū)域的方式相同,在此不再贅述。[〇〇53]基于上述分析,對(duì)于每個(gè)成員磁盤來說,橫向?qū)?yīng)自身及后面相鄰的L-1個(gè)成員磁盤,縱向依次對(duì)應(yīng)第一個(gè)存儲(chǔ)區(qū)域、第二個(gè)存儲(chǔ)區(qū)域、以此類推、第L個(gè)存儲(chǔ)區(qū)域。因此,成員磁盤與存儲(chǔ)區(qū)域的映射關(guān)系可以如圖3所示,成員磁盤1與成員磁盤1的第一個(gè)存儲(chǔ)區(qū)域、成員磁盤2的第二個(gè)存儲(chǔ)區(qū)域、成員磁盤3的第三個(gè)存儲(chǔ)區(qū)域、成員磁盤4的第四個(gè)存儲(chǔ)區(qū)域的映射關(guān)系;成員磁盤2與成員磁盤2的第一個(gè)存儲(chǔ)區(qū)域、成員磁盤3的第二個(gè)存儲(chǔ)區(qū)域、成員磁盤4的第三個(gè)存儲(chǔ)區(qū)域、成員磁盤5的第四個(gè)存儲(chǔ)區(qū)域的映射關(guān)系;以此類推,成員磁盤8 與成員磁盤8的第一個(gè)存儲(chǔ)區(qū)域、成員磁盤1的第二個(gè)存儲(chǔ)區(qū)域、成員磁盤2的第三個(gè)存儲(chǔ)區(qū)域、成員磁盤3的第四個(gè)存儲(chǔ)區(qū)域的映射關(guān)系。[〇〇54]針對(duì)步驟202,在需要存儲(chǔ)成員磁盤1的元數(shù)據(jù)時(shí),可以利用上述映射關(guān)系,查詢到該成員磁盤1對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域,即成員磁盤1的第一個(gè)存儲(chǔ)區(qū)域、成員磁盤2的第二個(gè)存儲(chǔ)區(qū)域、成員磁盤3的第三個(gè)存儲(chǔ)區(qū)域、成員磁盤4的第四個(gè)存儲(chǔ)區(qū)域,因此,可以將成員磁盤1的元數(shù)據(jù)分別存儲(chǔ)在成員磁盤1的第一個(gè)存儲(chǔ)區(qū)域、成員磁盤2的第二個(gè)存儲(chǔ)區(qū)域、成員磁盤3的第三個(gè)存儲(chǔ)區(qū)域、成員磁盤4的第四個(gè)存儲(chǔ)區(qū)域。同理,在需要存儲(chǔ)其它成員磁盤的元數(shù)據(jù)時(shí),其存儲(chǔ)方式與成員磁盤1的元數(shù)據(jù)的存儲(chǔ)方式類似,在此不再贅述。
[0055]在一個(gè)例子中,將元數(shù)據(jù)存儲(chǔ)在L個(gè)存儲(chǔ)區(qū)域的過程,具體可以包括但不限于如下方式:在需要存儲(chǔ)至少兩個(gè)成員磁盤的元數(shù)據(jù)時(shí),如果所述至少兩個(gè)成員磁盤對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域處在不同的成員磁盤,則可以并發(fā)執(zhí)行將所述至少兩個(gè)成員磁盤的元數(shù)據(jù)存儲(chǔ)在對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域的過程。
[0056]其中,在元數(shù)據(jù)的寫入過程中,可以控制同時(shí)對(duì)不沖突的成員磁盤進(jìn)行并發(fā)操作, 在寫入某塊成員磁盤的元數(shù)據(jù)時(shí),可以同時(shí)寫入與該成員磁盤不對(duì)應(yīng)相同成員磁盤的其它成員磁盤的元數(shù)據(jù)。例如,針對(duì)成員磁盤1,對(duì)應(yīng)成員磁盤1、成員磁盤2、成員磁盤3、成員磁盤4,而針對(duì)成員磁盤5,對(duì)應(yīng)成員磁盤5、成員磁盤6、成員磁盤7、成員磁盤8,因此,成員磁盤 1對(duì)應(yīng)的4個(gè)存儲(chǔ)區(qū)域與成員磁盤5對(duì)應(yīng)的4個(gè)存儲(chǔ)區(qū)域,處在不同的成員磁盤,兩個(gè)成員磁盤對(duì)應(yīng)的所有存儲(chǔ)區(qū)域未發(fā)生重合,因此,在將成員磁盤1的元數(shù)據(jù)分別存儲(chǔ)在成員磁盤1 的第一個(gè)存儲(chǔ)區(qū)域、成員磁盤2的第二個(gè)存儲(chǔ)區(qū)域、成員磁盤3的第三個(gè)存儲(chǔ)區(qū)域、成員磁盤 4的第四個(gè)存儲(chǔ)區(qū)域的過程中,可以同時(shí)將成員磁盤5的元數(shù)據(jù)分別存儲(chǔ)在成員磁盤5的第一個(gè)存儲(chǔ)區(qū)域、成員磁盤6的第二個(gè)存儲(chǔ)區(qū)域、成員磁盤7的第三個(gè)存儲(chǔ)區(qū)域、成員磁盤8的第四個(gè)存儲(chǔ)區(qū)域。此外,可以并發(fā)執(zhí)行將成員磁盤2和成員磁盤6的元數(shù)據(jù)存儲(chǔ)在對(duì)應(yīng)的存儲(chǔ)區(qū)域的過程,可以并發(fā)執(zhí)行將成員磁盤3和成員磁盤7的元數(shù)據(jù)存儲(chǔ)在對(duì)應(yīng)的存儲(chǔ)區(qū)域的過程,可以并發(fā)執(zhí)行將成員磁盤4和成員磁盤8的元數(shù)據(jù)存儲(chǔ)在對(duì)應(yīng)的存儲(chǔ)區(qū)域的過程。而對(duì)于其它組合,由于所有存儲(chǔ)區(qū)域發(fā)生重合,因此不可以并發(fā)執(zhí)行,如成員磁盤1和成員磁盤4的存儲(chǔ)區(qū)域,在成員磁盤4上發(fā)生重合。
[0057]基于上述技術(shù)方案,本申請(qǐng)實(shí)施例中,可以只將元數(shù)據(jù)存儲(chǔ)在少量成員磁盤的存儲(chǔ)區(qū)域(如RAID的冗余度M+1個(gè)存儲(chǔ)區(qū)域)中,而不是將元數(shù)據(jù)存儲(chǔ)在所有成員磁盤的存儲(chǔ)區(qū)域中,從而避免元數(shù)據(jù)占用的磁盤空間過大,避免磁盤空間的浪費(fèi),節(jié)省磁盤的存儲(chǔ)空間,提高空間利用率。而且,可以并發(fā)執(zhí)行將至少兩個(gè)成員磁盤的元數(shù)據(jù)存儲(chǔ)在存儲(chǔ)區(qū)域的過程,提高了元數(shù)據(jù)的操作效率和操作性能,且更新速度效率更高,為用戶提供了更加流暢的業(yè)務(wù)體驗(yàn)。
[0058]本發(fā)明實(shí)施例中,針對(duì)元數(shù)據(jù)的讀取過程,則在需要讀取成員磁盤的元數(shù)據(jù)時(shí),可以利用成員磁盤與存儲(chǔ)區(qū)域的映射關(guān)系,查詢?cè)摮蓡T磁盤對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域,并從該L個(gè)存儲(chǔ)區(qū)域的一個(gè)存儲(chǔ)區(qū)域中讀取元數(shù)據(jù)。
[0059]例如,在需要讀取成員磁盤1的元數(shù)據(jù)時(shí),可以利用成員磁盤與存儲(chǔ)區(qū)域的映射關(guān)系,查詢到成員磁盤1的L個(gè)存儲(chǔ)區(qū)域?yàn)?成員磁盤1的第一個(gè)存儲(chǔ)區(qū)域、成員磁盤2的第二個(gè)存儲(chǔ)區(qū)域、成員磁盤3的第三個(gè)存儲(chǔ)區(qū)域、成員磁盤4的第四個(gè)存儲(chǔ)區(qū)域。基于此,則從任意一個(gè)存儲(chǔ)區(qū)域讀取成員磁盤1的元數(shù)據(jù),如可以成員磁盤1的第一個(gè)存儲(chǔ)區(qū)域中讀取成員磁盤1的元數(shù)據(jù),或者,可以從成員磁盤2的第二個(gè)存儲(chǔ)區(qū)域中讀取成員磁盤1的元數(shù)據(jù),或者, 可以從成員磁盤3的第三個(gè)存儲(chǔ)區(qū)域中讀取成員磁盤1的元數(shù)據(jù),或者,可以從成員磁盤4的第四個(gè)存儲(chǔ)區(qū)域中讀取成員磁盤1的元數(shù)據(jù)。
[0060]在一個(gè)例子中,針對(duì)元數(shù)據(jù)的讀取過程,在需要讀取至少兩個(gè)成員磁盤的元數(shù)據(jù)時(shí),可以并發(fā)讀取至少兩個(gè)成員磁盤的元數(shù)據(jù),只要不在同一個(gè)成員磁盤上并發(fā)讀取至少兩個(gè)成員磁盤的元數(shù)據(jù)即可。例如,在需要讀取成員磁盤1和成員磁盤2的元數(shù)據(jù)時(shí),可以從成員磁盤1的第一個(gè)存儲(chǔ)區(qū)域中讀取成員磁盤1的元數(shù)據(jù),并同時(shí)從成員磁盤2的第一個(gè)存儲(chǔ)區(qū)域中讀取成員磁盤2的元數(shù)據(jù),而不在成員磁盤2上同時(shí)讀取成員磁盤1和成員磁盤2的元數(shù)據(jù)。[〇〇61]在一個(gè)例子中,針對(duì)元數(shù)據(jù)的讀取過程,在讀取元數(shù)據(jù)時(shí),可以指定需要讀取元數(shù)據(jù)的第一個(gè)成員磁盤(即元數(shù)據(jù)對(duì)應(yīng)的成員磁盤),直接讀取該成員磁盤的第一個(gè)存儲(chǔ)區(qū)域中的元數(shù)據(jù)。如果讀取成功,則可以結(jié)束元數(shù)據(jù)的讀取過程。如果讀取失敗,則可以讀取緊鄰其后的第一個(gè)成員磁盤的第二個(gè)存儲(chǔ)區(qū)域中的元數(shù)據(jù)。如果讀取成功,則可以結(jié)束元數(shù)據(jù)的讀取過程。如果讀取失敗,則可以讀取緊鄰其后的第二個(gè)成員磁盤的第三個(gè)存儲(chǔ)區(qū)域中的元數(shù)據(jù);以此類推,一直讀取到正確的元數(shù)據(jù),并結(jié)束元數(shù)據(jù)的讀取過程。
[0062]例如,在讀取成員磁盤1的元數(shù)據(jù)時(shí),元數(shù)據(jù)對(duì)應(yīng)的成員磁盤為成員磁盤1,因此需要讀取元數(shù)據(jù)的第一個(gè)成員磁盤為成員磁盤1?;诖?,直接讀取成員磁盤1的第一個(gè)存儲(chǔ)區(qū)域中的元數(shù)據(jù)。如果讀取成功,則結(jié)束元數(shù)據(jù)的讀取過程。如果讀取失敗,則讀取成員磁盤2的第二個(gè)存儲(chǔ)區(qū)域中的元數(shù)據(jù)。如果讀取成功,則結(jié)束元數(shù)據(jù)的讀取過程。如果讀取失敗,則讀取成員磁盤3的第三個(gè)存儲(chǔ)區(qū)域中的元數(shù)據(jù)。如果讀取成功,則結(jié)束元數(shù)據(jù)的讀取過程。如果讀取失敗,則讀取成員磁盤4的第四個(gè)存儲(chǔ)區(qū)域中的元數(shù)據(jù);以此類推,一直讀取到正確的元數(shù)據(jù),并結(jié)束元數(shù)據(jù)的讀取過程。
[0063]本申請(qǐng)實(shí)施例中,針對(duì)元數(shù)據(jù)的恢復(fù)過程,當(dāng)N個(gè)成員磁盤中有成員磁盤發(fā)生異常時(shí),如果在RAID中增加新成員磁盤,則可以利用成員磁盤與存儲(chǔ)區(qū)域的映射關(guān)系,從未發(fā)生異常的成員磁盤中獲取到發(fā)生異常的成員磁盤中記錄的元數(shù)據(jù),并將獲取的元數(shù)據(jù)存儲(chǔ)在所述新成員磁盤的存儲(chǔ)區(qū)域中。
[0064]其中,成員磁盤發(fā)生異常可以包括但不限于:成員磁盤掉線、成員磁盤發(fā)生介質(zhì)錯(cuò)誤等。
[0065]其中,在成員磁盤發(fā)生異常時(shí),該成員磁盤上記錄的元數(shù)據(jù)不可操作,但是在未發(fā)生異常的成員磁盤上,元數(shù)據(jù)(即備份的元數(shù)據(jù))仍然存在,此時(shí)發(fā)生異常的成員磁盤的元數(shù)據(jù)仍可以正常讀寫,如圖4所示,為3塊成員磁盤發(fā)生異常的示意圖。雖然成員磁盤3、成員磁盤4、成員磁盤5發(fā)生異常,但是,成員磁盤3的元數(shù)據(jù),仍然存儲(chǔ)在成員磁盤6上,可以基于成員磁盤6讀寫成員磁盤3的元數(shù)據(jù)。此外,成員磁盤4的元數(shù)據(jù),仍然存儲(chǔ)在成員磁盤6和成員磁盤7上,可以基于成員磁盤6和成員磁盤7讀寫成員磁盤4的元數(shù)據(jù)。成員磁盤5的元數(shù)據(jù),仍然存儲(chǔ)在成員磁盤6、成員磁盤7和成員磁盤8上,可以基于成員磁盤6、成員磁盤7和成員磁盤8讀寫成員磁盤5的元數(shù)據(jù)。
[0066]在一個(gè)例子中,由于成員磁盤3的元數(shù)據(jù)只存儲(chǔ)在成員磁盤6上,因此元數(shù)據(jù)只有一份,該元數(shù)據(jù)丟失的風(fēng)險(xiǎn)很大?;诖耍?dāng)有成員磁盤發(fā)生異常時(shí),如果在RAID中增加新成員磁盤,即使用新成員磁盤替換發(fā)生異常的成員磁盤,進(jìn)行元數(shù)據(jù)恢復(fù),則可以利用成員磁盤與存儲(chǔ)區(qū)域的映射關(guān)系,從未發(fā)生異常的成員磁盤中獲取到發(fā)生異常的成員磁盤中記錄的元數(shù)據(jù),并將獲取的元數(shù)據(jù)存儲(chǔ)在所述新成員磁盤的存儲(chǔ)區(qū)域中。如圖5所示,當(dāng)使用新成員磁盤替換發(fā)生異常的成員磁盤3時(shí),則從成員磁盤6的第四個(gè)存儲(chǔ)區(qū)域讀取成員磁盤3的元數(shù)據(jù),將成員磁盤3的元數(shù)據(jù)寫入到新成員磁盤的第一個(gè)存儲(chǔ)區(qū)域;從成員磁盤2的第一個(gè)存儲(chǔ)區(qū)域讀取成員磁盤2的元數(shù)據(jù),將成員磁盤2的元數(shù)據(jù)寫入到新成員磁盤的第二個(gè)存儲(chǔ)區(qū)域;從成員磁盤1的第一個(gè)存儲(chǔ)區(qū)域讀取成員磁盤1的元數(shù)據(jù),將成員磁盤1的元數(shù)據(jù)寫入到新成員磁盤的第三個(gè)存儲(chǔ)區(qū)域;從成員磁盤8的第一個(gè)存儲(chǔ)區(qū)域讀取成員磁盤8的元數(shù)據(jù),將成員磁盤8的元數(shù)據(jù)寫入到新成員磁盤的第四個(gè)存儲(chǔ)區(qū)域。
[0067]基于與上述方法同樣的申請(qǐng)構(gòu)思,本申請(qǐng)實(shí)施例中還提供了一種元數(shù)據(jù)的存儲(chǔ)裝置,該元數(shù)據(jù)的存儲(chǔ)裝置應(yīng)用在存儲(chǔ)設(shè)備上。該元數(shù)據(jù)的存儲(chǔ)裝置可以通過軟件實(shí)現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn)。以軟件實(shí)現(xiàn)為例,作為一個(gè)邏輯意義上的裝置,是通過其所在的存儲(chǔ)設(shè)備的處理器,讀取非易失性存儲(chǔ)器中對(duì)應(yīng)的計(jì)算機(jī)程序指令形成的。 從硬件層面而言,如圖6所示,為本申請(qǐng)?zhí)岢龅脑獢?shù)據(jù)的存儲(chǔ)裝置所在的存儲(chǔ)設(shè)備的一種硬件結(jié)構(gòu)圖,除了圖6所示的處理器、非易失性存儲(chǔ)器外,存儲(chǔ)設(shè)備還可以包括其他硬件,如負(fù)責(zé)處理報(bào)文的轉(zhuǎn)發(fā)芯片、網(wǎng)絡(luò)接口、內(nèi)存等;從硬件結(jié)構(gòu)上來講,該存儲(chǔ)設(shè)備還可能是分布式設(shè)備,可能包括多個(gè)接口卡,以便在硬件層面進(jìn)行報(bào)文處理的擴(kuò)展。
[0068]如圖7所示,為本申請(qǐng)?zhí)岢龅囊环N元數(shù)據(jù)的存儲(chǔ)裝置的結(jié)構(gòu)圖,可以應(yīng)用于包括N 個(gè)成員磁盤的獨(dú)立磁盤冗余陣列RAID中,其中,所述RAID的冗余度為M,所述N大于所述M;所述元數(shù)據(jù)的存儲(chǔ)裝置具體包括:
[0069]維護(hù)模塊11,用于維護(hù)成員磁盤與存儲(chǔ)區(qū)域的映射關(guān)系;其中,在維護(hù)成員磁盤與存儲(chǔ)區(qū)域的映射關(guān)系的過程中,針對(duì)每個(gè)成員磁盤,從N個(gè)成員磁盤中選取L個(gè)成員磁盤,并從L個(gè)成員磁盤的每個(gè)成員磁盤中選取一個(gè)存儲(chǔ)區(qū)域,并維護(hù)所述成員磁盤與選取的L個(gè)存儲(chǔ)區(qū)域的映射關(guān)系;L大于M,L小于等于N,且在每個(gè)成員磁盤的元數(shù)據(jù)空間中被劃分出L個(gè)存儲(chǔ)區(qū)域;
[0070]處理模塊12,用于在需要存儲(chǔ)成員磁盤的元數(shù)據(jù)時(shí),利用所述映射關(guān)系,查詢?cè)摮蓡T磁盤對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域,將所述元數(shù)據(jù)存儲(chǔ)在該L個(gè)存儲(chǔ)區(qū)域中。
[0071]所述維護(hù)模塊11,具體用于在確定所述L的過程中,確定元數(shù)據(jù)的備份數(shù)量L為所述RAID的冗余度M加1;在從N個(gè)成員磁盤中選取L個(gè)成員磁盤的過程中,針對(duì)每個(gè)成員磁盤, 從所述N個(gè)成員磁盤中選取所述成員磁盤,并從剩余的N-1個(gè)成員磁盤中選取L-1個(gè)成員磁盤;在從剩余的N-1個(gè)成員磁盤中選取L-1個(gè)成員磁盤的過程中,從剩余的N-1個(gè)成員磁盤中,選取與所述成員磁盤相鄰的L-1個(gè)成員磁盤;在從所述L個(gè)成員磁盤的每個(gè)成員磁盤中選取一個(gè)存儲(chǔ)區(qū)域的過程中,在從第一個(gè)成員磁盤至第L個(gè)成員磁盤的順序上,依次選取第一個(gè)存儲(chǔ)區(qū)域至第L個(gè)存儲(chǔ)區(qū)域;其中,與所述成員磁盤相鄰的L-1個(gè)成員磁盤是指:在成員磁盤列表空間中,如果位于所述成員磁盤后面的成員磁盤數(shù)量不小于L-1個(gè),則所述L-1個(gè)成員磁盤包括位于所述成員磁盤后面的連續(xù)L-1個(gè)成員磁盤,如果位于所述成員磁盤后面的成員磁盤數(shù)量小于L-1個(gè),則所述L-1個(gè)成員磁盤包括位于所述成員磁盤后面的所有成員磁盤,剩下的成員磁盤是從所述成員磁盤列表空間的首個(gè)成員磁盤開始的連續(xù)成員磁盤;
[0072]所述處理模塊12,具體用于在將所述元數(shù)據(jù)存儲(chǔ)在該L個(gè)存儲(chǔ)區(qū)域的過程中,當(dāng)需要存儲(chǔ)至少兩個(gè)成員磁盤的元數(shù)據(jù)時(shí),如果所述至少兩個(gè)成員磁盤對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域處在不同的成員磁盤,則并發(fā)執(zhí)行將所述至少兩個(gè)成員磁盤的元數(shù)據(jù)存儲(chǔ)在對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域的過程;
[0073]所述處理模塊12,還用于在需要讀取成員磁盤的元數(shù)據(jù)時(shí),利用所述映射關(guān)系,查詢?cè)摮蓡T磁盤對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域,并從該L個(gè)存儲(chǔ)區(qū)域的一個(gè)存儲(chǔ)區(qū)域中讀取元數(shù)據(jù);和/ 或,所述處理模塊12,還用于當(dāng)所述N個(gè)成員磁盤中有成員磁盤發(fā)生異常時(shí),如果在所述 RAID中增加新成員磁盤時(shí),則利用所述映射關(guān)系,從未發(fā)生異常的成員磁盤中獲取發(fā)生異常的成員磁盤中記錄的元數(shù)據(jù),并將獲取的元數(shù)據(jù)存儲(chǔ)在所述新成員磁盤的存儲(chǔ)區(qū)域。
[0074]其中,本申請(qǐng)裝置的各個(gè)模塊可以集成于一體,也可以分離部署。上述模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。
[0075]通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請(qǐng)可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例所述的方法。本領(lǐng)域技術(shù)人員可以理解附圖只是一個(gè)優(yōu)選實(shí)施例的示意圖, 附圖中的模塊或流程并不一定是實(shí)施本申請(qǐng)所必須的。
[0076]本領(lǐng)域技術(shù)人員可以理解實(shí)施例中的裝置中的模塊可以按照實(shí)施例描述進(jìn)行分布于實(shí)施例的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施例的一個(gè)或多個(gè)裝置中。上述實(shí)施例的模塊可以合并為一個(gè)模塊,也可進(jìn)一步拆分成多個(gè)子模塊。上述本申請(qǐng)實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
[0077]以上公開的僅為本申請(qǐng)的幾個(gè)具體實(shí)施例,但是,本申請(qǐng)并非局限于此,任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本申請(qǐng)的保護(hù)范圍。
【主權(quán)項(xiàng)】
1.一種元數(shù)據(jù)的存儲(chǔ)方法,其特征在于,應(yīng)用于包括N個(gè)成員磁盤的獨(dú)立磁盤冗余陣列 RAID中,所述RAID的冗余度為M,N大于M;所述方法包括:維護(hù)成員磁盤與存儲(chǔ)區(qū)域的映射關(guān)系;其中,針對(duì)每個(gè)成員磁盤,從N個(gè)成員磁盤中選 取L個(gè)成員磁盤,并從L個(gè)成員磁盤的每個(gè)成員磁盤中選取一個(gè)存儲(chǔ)區(qū)域,并維護(hù)所述成員 磁盤與選取的L個(gè)存儲(chǔ)區(qū)域的映射關(guān)系;L大于M,L小于等于N,且在每個(gè)成員磁盤的元數(shù)據(jù) 空間中被劃分出L個(gè)存儲(chǔ)區(qū)域;在需要存儲(chǔ)成員磁盤的元數(shù)據(jù)時(shí),利用所述映射關(guān)系,查詢?cè)摮蓡T磁盤對(duì)應(yīng)的L個(gè)存儲(chǔ) 區(qū)域,并將所述元數(shù)據(jù)存儲(chǔ)在該L個(gè)存儲(chǔ)區(qū)域中。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述L的確定方式具體包括:確定元數(shù)據(jù)的 備份數(shù)量L為所述RAID的冗余度M加1。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述從N個(gè)成員磁盤中選取L個(gè)成員磁盤的 過程,具體包括:針對(duì)每個(gè)成員磁盤,從N個(gè)成員磁盤中選取所述成員磁盤,并從剩余的N-1 個(gè)成員磁盤中選取L-1個(gè)成員磁盤。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述從剩余的N-1個(gè)成員磁盤中選取L-1個(gè) 成員磁盤的過程,具體包括:從剩余的N-1個(gè)成員磁盤中,選取與所述成員磁盤相鄰的L-1個(gè) 成員磁盤;其中,與所述成員磁盤相鄰的L-1個(gè)成員磁盤是指:在成員磁盤列表空間中,如果 位于所述成員磁盤后面的成員磁盤數(shù)量不小于L-1個(gè),則所述L-1個(gè)成員磁盤包括位于所述 成員磁盤后面的連續(xù)L-1個(gè)成員磁盤;如果位于所述成員磁盤后面的成員磁盤數(shù)量小于L-1 個(gè),則所述L-1個(gè)成員磁盤包括位于所述成員磁盤后面的所有成員磁盤,剩下的成員磁盤是 從所述成員磁盤列表空間的首個(gè)成員磁盤開始的連續(xù)成員磁盤。5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述從L個(gè)成員磁盤的每個(gè)成員磁盤中選 取一個(gè)存儲(chǔ)區(qū)域的過程,具體包括:在從第一個(gè)成員磁盤至第L個(gè)成員磁盤的順序上,依次 選取第一個(gè)存儲(chǔ)區(qū)域至第L個(gè)存儲(chǔ)區(qū)域。6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述元數(shù)據(jù)存儲(chǔ)在該L個(gè)存儲(chǔ)區(qū)域 的過程,具體包括:在需要存儲(chǔ)至少兩個(gè)成員磁盤的元數(shù)據(jù)時(shí),如果所述至少兩個(gè)成員磁盤 對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域處在不同的成員磁盤,則并發(fā)執(zhí)行將所述至少兩個(gè)成員磁盤的元數(shù)據(jù) 存儲(chǔ)在對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域的過程。7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:在需要讀取成員磁盤的元數(shù)據(jù)時(shí),利用所述映射關(guān)系,查詢?cè)摮蓡T磁盤對(duì)應(yīng)的L個(gè)存儲(chǔ) 區(qū)域,并從該L個(gè)存儲(chǔ)區(qū)域的一個(gè)存儲(chǔ)區(qū)域中讀取元數(shù)據(jù)。8.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:當(dāng)N個(gè)成員磁盤中有成員磁盤發(fā)生異常時(shí),如果在所述RAID中增加新成員磁盤,則利用 所述映射關(guān)系,從未發(fā)生異常的成員磁盤中獲取發(fā)生異常的成員磁盤中記錄的元數(shù)據(jù),并 將獲取的元數(shù)據(jù)存儲(chǔ)在所述新成員磁盤的存儲(chǔ)區(qū)域。9.一種元數(shù)據(jù)的存儲(chǔ)裝置,其特征在于,應(yīng)用于包括N個(gè)成員磁盤的獨(dú)立磁盤冗余陣列 RAID中,所述RAID的冗余度為M,N大于M;所述裝置包括:維護(hù)模塊,用于維護(hù)成員磁盤與存儲(chǔ)區(qū)域的映射關(guān)系;其中,在維護(hù)成員磁盤與存儲(chǔ)區(qū) 域的映射關(guān)系的過程中,針對(duì)每個(gè)成員磁盤,從N個(gè)成員磁盤中選取L個(gè)成員磁盤,并從L個(gè) 成員磁盤的每個(gè)成員磁盤中選取一個(gè)存儲(chǔ)區(qū)域,并維護(hù)所述成員磁盤與選取的L個(gè)存儲(chǔ)區(qū)域的映射關(guān)系;L大于M,L小于等于N,且在每個(gè)成員磁盤的元數(shù)據(jù)空間中被劃分出L個(gè)存儲(chǔ) 區(qū)域;處理模塊,用于在需要存儲(chǔ)成員磁盤的元數(shù)據(jù)時(shí),利用所述映射關(guān)系,查詢?cè)摮蓡T磁盤 對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域,并將所述元數(shù)據(jù)存儲(chǔ)在該L個(gè)存儲(chǔ)區(qū)域中。10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述維護(hù)模塊,具體用于在確定所述L的過程中,確定元數(shù)據(jù)的備份數(shù)量L為所述RAID 的冗余度M加1;在從N個(gè)成員磁盤中選取L個(gè)成員磁盤的過程中,針對(duì)每個(gè)成員磁盤,從所述 N個(gè)成員磁盤中選取所述成員磁盤,并從剩余的N-1個(gè)成員磁盤中選取L-1個(gè)成員磁盤;在從 剩余的N-1個(gè)成員磁盤中選取L-1個(gè)成員磁盤的過程中,從剩余的N-1個(gè)成員磁盤中,選取與 所述成員磁盤相鄰的L-1個(gè)成員磁盤;在從所述L個(gè)成員磁盤的每個(gè)成員磁盤中選取一個(gè)存 儲(chǔ)區(qū)域的過程中,在從第一個(gè)成員磁盤至第L個(gè)成員磁盤的順序上,依次選取第一個(gè)存儲(chǔ)區(qū) 域至第L個(gè)存儲(chǔ)區(qū)域;其中,與所述成員磁盤相鄰的L-1個(gè)成員磁盤是指:在成員磁盤列表空 間中,如果位于所述成員磁盤后面的成員磁盤數(shù)量不小于L-1個(gè),則所述L-1個(gè)成員磁盤包 括位于所述成員磁盤后面的連續(xù)L-1個(gè)成員磁盤,如果位于所述成員磁盤后面的成員磁盤 數(shù)量小于L-1個(gè),則所述L-1個(gè)成員磁盤包括位于所述成員磁盤后面的所有成員磁盤,剩下 的成員磁盤是從所述成員磁盤列表空間的首個(gè)成員磁盤開始的連續(xù)成員磁盤;所述處理模塊,具體用于在將所述元數(shù)據(jù)存儲(chǔ)在該L個(gè)存儲(chǔ)區(qū)域的過程中,當(dāng)需要存儲(chǔ) 至少兩個(gè)成員磁盤的元數(shù)據(jù)時(shí),如果所述至少兩個(gè)成員磁盤對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域處在不同 的成員磁盤,則并發(fā)執(zhí)行將所述至少兩個(gè)成員磁盤的元數(shù)據(jù)存儲(chǔ)在對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域的 過程;所述處理模塊,還用于在需要讀取成員磁盤的元數(shù)據(jù)時(shí),利用所述映射關(guān)系,查詢?cè)摮?員磁盤對(duì)應(yīng)的L個(gè)存儲(chǔ)區(qū)域,并從該L個(gè)存儲(chǔ)區(qū)域的一個(gè)存儲(chǔ)區(qū)域中讀取元數(shù)據(jù);和/或,所 述處理模塊,還用于當(dāng)所述N個(gè)成員磁盤中有成員磁盤發(fā)生異常時(shí),如果在所述RAID中增加 新成員磁盤時(shí),則利用所述映射關(guān)系,從未發(fā)生異常的成員磁盤中獲取發(fā)生異常的成員磁 盤中記錄的元數(shù)據(jù),并將獲取的元數(shù)據(jù)存儲(chǔ)在所述新成員磁盤的存儲(chǔ)區(qū)域。
【文檔編號(hào)】G06F3/06GK106095330SQ201610375013
【公開日】2016年11月9日
【申請(qǐng)日】2016年5月30日
【發(fā)明人】楊二壘
【申請(qǐng)人】杭州宏杉科技有限公司