一種數(shù)據(jù)重建方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)重建方法及裝置。
【背景技術(shù)】
[0002] 隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,單磁盤(pán)容量越來(lái)越大,同一個(gè)磁盤(pán)物理資源可以分 別屬于多個(gè)上層RAID(Redundant Arrays of Independent Disks,獨(dú)立磁盤(pán)冗余陣列)里 的塊虛擬化技術(shù)越發(fā)成熟,這種設(shè)計(jì)是用多塊物理磁盤(pán)(Physical Disk,簡(jiǎn)稱Η))構(gòu)建一個(gè) 大存儲(chǔ)池,每個(gè)劃分成多個(gè)虛擬磁盤(pán)(Virtual Disk,VD),由多個(gè)VD按照相應(yīng)的RAID策略 (N+M)組建VDG(Virtual Disk Group,虛擬磁盤(pán)組),向上層提供邏輯資源分配給客戶端進(jìn) 行讀寫(xiě)。
[0003] 在存儲(chǔ)池塊虛擬化結(jié)構(gòu)下,若某個(gè)PD(假設(shè)為PD1)發(fā)生故障,如磁盤(pán)離線超時(shí),存 儲(chǔ)池需要踢掉這個(gè)離線的roi,并對(duì)roi影響的vdg進(jìn)行重建,其重建實(shí)現(xiàn)原理為:生成roi對(duì) 應(yīng)的重建表項(xiàng),該重建表項(xiàng)中包括roi影響的所有VDG,當(dāng)進(jìn)行重建時(shí),按照重建表項(xiàng)中從前 往后的順序依次重建各VDG。
[0004] 若roi影響的VDG的重建過(guò)程中,存儲(chǔ)池中又產(chǎn)生無(wú)效ro(假設(shè)為T(mén)O2),例如磁盤(pán)診 斷檢測(cè)故障或磁盤(pán)上錯(cuò)誤VD數(shù)達(dá)到閾值,那么存儲(chǔ)池需要將PD2置為無(wú)效ro,此時(shí),PD2影響 的VDG也需要重建,其重建實(shí)現(xiàn)原理與roi影響的VDG重建原理相類似。
[0005] 然而實(shí)踐發(fā)現(xiàn),在現(xiàn)有數(shù)據(jù)重建方案中,針對(duì)上述數(shù)據(jù)重建場(chǎng)景,通常采用先上報(bào) 先處理原則,即先重建完roi影響的VDG后,再重建TO2影響的VDG,這種處理方式可能會(huì)導(dǎo)致 部分VDG無(wú)法重建而失效。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明提供一種數(shù)據(jù)重建方法及裝置,以解決現(xiàn)有數(shù)據(jù)重建方案中存在兩個(gè)物理 磁盤(pán)故障時(shí)VDG重建成功較低的問(wèn)題。
[0007] 根據(jù)本發(fā)明實(shí)施例的第一方面,提供一種數(shù)據(jù)重建方法,包括:
[0008] 當(dāng)?shù)谝晃锢泶疟P(pán)故障時(shí),生成所述第一物理磁盤(pán)對(duì)應(yīng)的重建表項(xiàng);其中,所述重建 表項(xiàng)包括受所述第一物理磁盤(pán)影響的需要重建的虛擬磁盤(pán)組VDG;
[0009] 判斷是否存在發(fā)生故障的第二物理磁盤(pán);
[0010] 若存在,則生成所述第二物理磁盤(pán)對(duì)應(yīng)的預(yù)警表項(xiàng);所述預(yù)警表項(xiàng)包括所述受第 二物理磁盤(pán)影響的需要重建的VDG;
[0011]比較所述重建表項(xiàng)和所述預(yù)警表項(xiàng),將所述預(yù)警表項(xiàng)中存在的重復(fù)的需要重建的 VDG保留在所述預(yù)警表項(xiàng)中,并將所述預(yù)警表項(xiàng)中存在的未重復(fù)的需要重建的VDG轉(zhuǎn)移到所 述重建表項(xiàng);
[0012]對(duì)更新后的預(yù)警表項(xiàng)中的需要重建的VDG進(jìn)行重建,并當(dāng)所述更新后的預(yù)警表項(xiàng) 中所有需要重建的VDG均重建完成后,對(duì)所述更新后的重建表項(xiàng)中需要重建的VDG進(jìn)行重 建。
[0013] 根據(jù)本發(fā)明實(shí)施例的第二方面,提供一種數(shù)據(jù)重建裝置,包括:
[0014] 生成單元,用于當(dāng)?shù)谝晃锢泶疟P(pán)故障時(shí),生成所述第一物理磁盤(pán)對(duì)應(yīng)的重建表項(xiàng); 其中,所述重建表項(xiàng)包括受所述第一物理磁盤(pán)影響的需要重建的虛擬磁盤(pán)組VDG;
[0015] 判斷單元,用于判斷是否存在發(fā)生故障的第二物理磁盤(pán);
[0016] 所述生成單元,還用于若所述判斷單元判斷為存在,則判斷是否存在發(fā)生故障的 第二物理磁盤(pán);
[0017] 更新單元,用于比較所述重建表項(xiàng)和所述預(yù)警表項(xiàng),將所述預(yù)警表項(xiàng)中存在的重 復(fù)的需要重建的VDG保留在所述預(yù)警表項(xiàng)中,并將所述預(yù)警表項(xiàng)中存在的未重復(fù)的需要重 建的VDG轉(zhuǎn)移到所述重建表項(xiàng);
[0018] 重建單元,用于對(duì)更新后的預(yù)警表項(xiàng)中的需要重建的VDG進(jìn)行重建,并當(dāng)所述更新 后的預(yù)警表項(xiàng)中所有需要重建的VDG均重建完成后,對(duì)所述更新后的重建表項(xiàng)中需要重建 的VDG進(jìn)行重建。
[0019] 應(yīng)用本發(fā)明實(shí)施例,當(dāng)?shù)谝晃锢泶疟P(pán)故障時(shí),生成第一物理磁盤(pán)對(duì)應(yīng)的重建表項(xiàng), 并判斷是否存在發(fā)生故障的第二物理磁盤(pán),若存在,則生成第二物理磁盤(pán)對(duì)應(yīng)的預(yù)警表項(xiàng), 并比較該重建表項(xiàng)和預(yù)警表項(xiàng),將該預(yù)警表項(xiàng)中存在的重復(fù)的需要重建的VDG保留在預(yù)警 表項(xiàng)中,將預(yù)警表項(xiàng)中存在的未重復(fù)的需要重建的VDG轉(zhuǎn)移到重建表項(xiàng)中,進(jìn)而對(duì)更新后的 預(yù)警表項(xiàng)中需要重建的VDG進(jìn)行重建,并當(dāng)更新后的預(yù)警表項(xiàng)中所有需要重建的VDG均重建 完成后,對(duì)更新后的重建表項(xiàng)中需要重建的VDG進(jìn)行重建,通過(guò)在存在兩個(gè)物理磁盤(pán)故障 時(shí),優(yōu)先對(duì)同時(shí)受兩個(gè)物理磁盤(pán)影響的需要重建的VDG進(jìn)行重建,提高了 VDG重建的成功率, 進(jìn)而提高了數(shù)據(jù)的可靠性。
【附圖說(shuō)明】
[0020] 圖1是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)重建方法的流程示意圖;
[0021] 圖2是本發(fā)明實(shí)施例提供的另一種一種數(shù)據(jù)重建方法的流程示意圖;
[0022] 圖3是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)重建裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0023] 為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明實(shí)施例中的技術(shù)方案,并使本發(fā)明實(shí) 施例的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例中技術(shù)方 案作進(jìn)一步詳細(xì)的說(shuō)明。
[0024] 請(qǐng)參見(jiàn)圖1,為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)重建方法,如圖1所示,該方法可以包 括以下步驟:
[0025]步驟101、當(dāng)?shù)谝晃锢泶疟P(pán)故障時(shí),生成第一物理磁盤(pán)對(duì)應(yīng)的重建表項(xiàng);其中,該重 建表項(xiàng)包括受第一物理磁盤(pán)影響的需要重建的VDG。
[0026]本發(fā)明實(shí)施例中,上述方法的執(zhí)行主體可以為存儲(chǔ)服務(wù)器或存儲(chǔ)服務(wù)器中的處理 單元,如CPU(Center Process Unit,中央處理器),為便于描述,以下該方法的執(zhí)行主體為 存儲(chǔ)服務(wù)器為例進(jìn)行說(shuō)明。
[0027]本發(fā)明實(shí)施例中,當(dāng)存儲(chǔ)池中第一物理磁盤(pán)故障(如離線超時(shí))時(shí),存儲(chǔ)服務(wù)器可 以根據(jù)查詢系統(tǒng)內(nèi)存在的VDG,將包括位于第一物理磁盤(pán)中的VD的VDG確定為受第一物理磁 盤(pán)影響的需要重建的VDG,進(jìn)而生成該第一物理磁盤(pán)對(duì)應(yīng)的重建表項(xiàng),其中,該重建表項(xiàng)包 括受第一物理磁盤(pán)影響的需要重建的VDG。
[0028] 值得說(shuō)明的是,在本發(fā)明實(shí)施例中,第一物理磁盤(pán)并不特指某一固定的磁盤(pán),而是 可以指代存儲(chǔ)池中任一物理磁盤(pán),本發(fā)明實(shí)施例后續(xù)不再?gòu)?fù)述。
[0029] 作為一種可選的實(shí)施方式,在本發(fā)明實(shí)施例中,重建表項(xiàng)可以為僅包括需要重建 的VDG的標(biāo)識(shí)(ID)的表項(xiàng),例如,其格式可以如表1所示:
[0030] 表 1
[0031]
[0032] 其中,根據(jù)該重建表項(xiàng)可知,VDG3、VDG4."VDGn由于受到第一物理磁盤(pán)故障的影響 需要重建。
[0033]作為另一種可選的實(shí)施方式,在本發(fā)明實(shí)施例中,重建表項(xiàng)可以為系統(tǒng)內(nèi)所有VDG 對(duì)應(yīng)的bitmap(位圖)表項(xiàng),其格式及具體實(shí)現(xiàn)將在下文中詳細(xì)描述。
[0034]步驟102、判斷是否存在發(fā)生故障的第二物理磁盤(pán)。若是,轉(zhuǎn)至步驟103;否則,結(jié)束 當(dāng)前流程。
[0035]本發(fā)明實(shí)施例中,存儲(chǔ)服務(wù)器生成第一物理磁盤(pán)對(duì)應(yīng)的重建表項(xiàng)后,一方面可以 根據(jù)該重建表項(xiàng)對(duì)需要重建的VDG進(jìn)行重建,另一方面,存儲(chǔ)服務(wù)器可以進(jìn)一步檢測(cè)存儲(chǔ)池 中是否存在其它物理磁盤(pán)(第二物理磁盤(pán))發(fā)生故障。
[0036]值得說(shuō)明的是,在本發(fā)明實(shí)施例中,第二物理磁盤(pán)也并不特指某一固定的磁盤(pán),而 是可以指代存儲(chǔ)池中除第一物理磁盤(pán)之外的任一物理磁盤(pán),本發(fā)明實(shí)施例后續(xù)不再?gòu)?fù)述。 [0037]本發(fā)明實(shí)施例中,若存儲(chǔ)服務(wù)器確定存儲(chǔ)池中不存在發(fā)生故障的第二物理磁盤(pán) 時(shí),存儲(chǔ)服務(wù)器可以對(duì)重建表項(xiàng)中需要重建的VDG進(jìn)行重建,其具體實(shí)現(xiàn)可以參見(jiàn)現(xiàn)有數(shù)據(jù) 重建方案中關(guān)于VDG重建的相關(guān)處理,本發(fā)明實(shí)施例在此不再贅述。
[0038]步驟103、生成第二物理磁盤(pán)對(duì)應(yīng)的預(yù)警表項(xiàng),該預(yù)警表項(xiàng)中包括受第二物理磁盤(pán) 影響的需要重建的VDG。
[0039]本發(fā)明實(shí)施例中,當(dāng)存儲(chǔ)服務(wù)器確定存儲(chǔ)池中存在發(fā)生故障的第二物理磁盤(pán)時(shí), 如第二物理磁盤(pán)讀寫(xiě)錯(cuò)誤次數(shù)達(dá)到閾值或發(fā)生故障的VD達(dá)到閾值或存儲(chǔ)服務(wù)器檢測(cè)到通 用的磁盤(pán)SMART(Self-Monitoring,Analysis and Reporting Technology,自我監(jiān)測(cè)分析 與報(bào)告技術(shù))故障預(yù)警等,存儲(chǔ)服務(wù)器可以查詢系統(tǒng)中存在的VDG,將包括位于第二物理磁 盤(pán)中的VD的VDG確定為受第二物理磁盤(pán)影響的需要重建的VDG,進(jìn)而生成包括受第二物理磁 盤(pán)影響需要重建的VDG的預(yù)警表項(xiàng)。
[0040] 其中,該預(yù)警表項(xiàng)的格式可以為與表1類型相同的僅包括需要重建的VDG的標(biāo)識(shí)的 表項(xiàng),例如,其格式可以如表2所示;該預(yù)警表項(xiàng)的格式還可以為包括系統(tǒng)內(nèi)所有VDG的 bitmap表項(xiàng),其格式及具體實(shí)現(xiàn)將在下文中詳細(xì)描述。
[0041] 表 2 Γηη4?ι
[0043] 其中,根據(jù)該重建表項(xiàng)可知,VDGl、VDG4'"VDGm由于受到第二物理磁盤(pán)故障的影響 需要重建。
[0044] 步驟104、比較重建表項(xiàng)和預(yù)警表項(xiàng),將預(yù)警表項(xiàng)中存在的重復(fù)的需要重建的VDG 保留在預(yù)警表項(xiàng)中,并將預(yù)警表項(xiàng)中存在的未重復(fù)的需要重建的VDG轉(zhuǎn)移到重建表項(xiàng)。
[0045] 本發(fā)明實(shí)施例中,與現(xiàn)有技術(shù)中按照先故障先排隊(duì)原則進(jìn)行VDG重建的實(shí)現(xiàn)不同 的是