分布式存儲(chǔ)系統(tǒng)中數(shù)據(jù)副本恢復(fù)方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種分布式存儲(chǔ)系統(tǒng)中數(shù)據(jù)副本恢復(fù)方法及裝置。
【背景技術(shù)】
[0002]現(xiàn)有的多副本分布式存儲(chǔ)系統(tǒng)中,每個(gè)文件數(shù)據(jù)以N個(gè)副本的方式按照預(yù)設(shè)節(jié)點(diǎn)容量負(fù)載均衡策略存放于M臺(tái)數(shù)據(jù)節(jié)點(diǎn)中(M3 N)。系統(tǒng)中低于N個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)故障時(shí),可以其它數(shù)據(jù)副本為源重構(gòu)恢復(fù)出預(yù)設(shè)數(shù)量的其它副本,以保證在分布式存儲(chǔ)系統(tǒng)中數(shù)據(jù)的可靠性符合預(yù)設(shè)值。
[0003]目前的分布式存儲(chǔ)系統(tǒng)中數(shù)據(jù)副本恢復(fù)主要有以下兩種方式:
[0004]方式一、
[0005]數(shù)據(jù)節(jié)點(diǎn)故障后馬上進(jìn)行多副本數(shù)據(jù)重構(gòu)恢復(fù):每個(gè)文件數(shù)據(jù)以N個(gè)副本的方式存放于M臺(tái)數(shù)據(jù)節(jié)點(diǎn)中(M ^ N), Master (主)節(jié)點(diǎn)檢測(cè)出M臺(tái)數(shù)據(jù)節(jié)點(diǎn)中任一臺(tái)數(shù)據(jù)節(jié)點(diǎn)被檢測(cè)出故障即將該數(shù)據(jù)節(jié)點(diǎn)中丟失的數(shù)據(jù)副本在其它節(jié)點(diǎn)中進(jìn)行重構(gòu)恢復(fù),如果該故障節(jié)點(diǎn)恢復(fù)正常運(yùn)行狀態(tài)或加入了新的替代節(jié)點(diǎn),再將新數(shù)據(jù)節(jié)點(diǎn)加入到均衡分布的存儲(chǔ)資源池范圍。
[0006]方式二、
[0007]在數(shù)據(jù)節(jié)點(diǎn)故障后超過(guò)預(yù)設(shè)時(shí)間之后再進(jìn)行多副本數(shù)據(jù)重構(gòu)恢復(fù):每個(gè)文件數(shù)據(jù)以N個(gè)副本的方式存放于M臺(tái)數(shù)據(jù)節(jié)點(diǎn)中(M彡N), Master (主)節(jié)點(diǎn)檢測(cè)出M臺(tái)數(shù)據(jù)節(jié)點(diǎn)中個(gè)別數(shù)據(jù)節(jié)點(diǎn)故障,為保證存儲(chǔ)系統(tǒng)對(duì)外服務(wù)性能最大化或考慮到短時(shí)間內(nèi)故障節(jié)點(diǎn)可能恢復(fù)或新的替代數(shù)據(jù)節(jié)點(diǎn)可能會(huì)加入,因此,不立即執(zhí)行數(shù)據(jù)副本重構(gòu)恢復(fù),而是按照每日定時(shí)任務(wù)或設(shè)定超時(shí)閾值的方式等待一定時(shí)間后再執(zhí)行數(shù)據(jù)副本重構(gòu)恢復(fù)操作。
[0008]上述第一種方式中,其能夠保證數(shù)據(jù)副本數(shù)量及時(shí)恢復(fù)到預(yù)設(shè)值,但是,若數(shù)據(jù)節(jié)點(diǎn)故障時(shí),存儲(chǔ)系統(tǒng)的系統(tǒng)性能負(fù)載較高,數(shù)據(jù)副本恢復(fù)操作將會(huì)影響存儲(chǔ)系統(tǒng)的讀寫(xiě)性倉(cāng)泛。
[0009]上述第二種方式中,其能夠保證在存儲(chǔ)系統(tǒng)中(N-1)臺(tái)以?xún)?nèi)數(shù)量的數(shù)據(jù)節(jié)點(diǎn)故障后,不執(zhí)行數(shù)據(jù)副本重構(gòu)恢復(fù)任務(wù)可保證在預(yù)設(shè)時(shí)間段內(nèi)不影響系統(tǒng)讀寫(xiě)性能,且避免了因?yàn)閿?shù)據(jù)節(jié)點(diǎn)短停機(jī)維護(hù)或新數(shù)據(jù)節(jié)點(diǎn)可短時(shí)間替代故障節(jié)點(diǎn)造成的無(wú)效工作,但這種方式?jīng)]有考慮存儲(chǔ)系統(tǒng)中數(shù)據(jù)可靠性的容忍上限為最多允許(N-1)臺(tái)以?xún)?nèi)數(shù)量的數(shù)據(jù)節(jié)點(diǎn)故障,如果在存儲(chǔ)系統(tǒng)沒(méi)有執(zhí)行數(shù)據(jù)副本重構(gòu)恢復(fù)任務(wù)的情況下,預(yù)設(shè)時(shí)間內(nèi)發(fā)生了 N臺(tái)及以上數(shù)據(jù)節(jié)點(diǎn)故障時(shí),部分?jǐn)?shù)據(jù)所有的副本會(huì)丟失,影響了存儲(chǔ)系統(tǒng)的可靠性。
[0010]因此,如何能夠在保證分布式存儲(chǔ)系統(tǒng)可靠性的同時(shí),又不影響存儲(chǔ)系統(tǒng)的讀寫(xiě)性能成為現(xiàn)有技術(shù)亟待解決的技術(shù)問(wèn)題之一。
【發(fā)明內(nèi)容】
[0011]本發(fā)明實(shí)施例提供一種存儲(chǔ)系統(tǒng)中數(shù)據(jù)副本恢復(fù)方法及裝置,用以在不影響分布式存儲(chǔ)系統(tǒng)的讀寫(xiě)性能的同時(shí),保證分布式存儲(chǔ)系統(tǒng)的可靠性。
[0012]本發(fā)明實(shí)施例提供一種分布式存儲(chǔ)系統(tǒng)中數(shù)據(jù)副本恢復(fù)方法,包括:
[0013]在檢測(cè)到數(shù)據(jù)節(jié)點(diǎn)故障時(shí),統(tǒng)計(jì)故障數(shù)據(jù)節(jié)點(diǎn)的數(shù)量;
[0014]根據(jù)故障數(shù)據(jù)節(jié)點(diǎn)的數(shù)量,執(zhí)行數(shù)據(jù)副本恢復(fù)操作。
[0015]本發(fā)明實(shí)施例提供一種分布式存儲(chǔ)系統(tǒng)數(shù)據(jù)副本恢復(fù)裝置,包括:
[0016]故障檢測(cè)模塊,用于檢測(cè)故障數(shù)據(jù)節(jié)點(diǎn);
[0017]故障記錄模塊,用于在所述故障檢測(cè)模塊檢測(cè)出數(shù)據(jù)節(jié)點(diǎn)故障時(shí),統(tǒng)計(jì)故障數(shù)據(jù)節(jié)點(diǎn)的數(shù)量;
[0018]數(shù)據(jù)副本重構(gòu)恢復(fù)模塊,用于根據(jù)故障數(shù)據(jù)節(jié)點(diǎn)的數(shù)量,執(zhí)行數(shù)據(jù)副本恢復(fù)操作。
[0019]本發(fā)明實(shí)施例提供的分布式存儲(chǔ)系統(tǒng)中數(shù)據(jù)副本恢復(fù)方法及裝置,在檢測(cè)到數(shù)據(jù)節(jié)點(diǎn)故障時(shí),統(tǒng)計(jì)故障數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)量,并根據(jù)故障數(shù)據(jù)節(jié)點(diǎn)的數(shù)量執(zhí)行數(shù)據(jù)副本恢復(fù)操作。由于本發(fā)明實(shí)施例中,根據(jù)故障數(shù)據(jù)節(jié)點(diǎn)的數(shù)量來(lái)執(zhí)行數(shù)據(jù)副本恢復(fù)操作,既不是一出現(xiàn)故障節(jié)點(diǎn)便立即恢復(fù),也不是周期性的對(duì)故障節(jié)點(diǎn)恢復(fù),這樣,能夠同時(shí)兼顧分布式存儲(chǔ)系統(tǒng)的可靠性和讀寫(xiě)性能,在不影響讀寫(xiě)性能的同時(shí),保證分布式存儲(chǔ)系統(tǒng)的可靠性。
[0020]本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說(shuō)明書(shū)中闡述,并且,部分地從說(shuō)明書(shū)中變得顯而易見(jiàn),或者通過(guò)實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過(guò)在所寫(xiě)的說(shuō)明書(shū)、權(quán)利要求書(shū)、以及附圖中所特別指出的結(jié)構(gòu)來(lái)實(shí)現(xiàn)和獲得。
【附圖說(shuō)明】
[0021]此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本發(fā)明的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
[0022]圖1為本發(fā)明實(shí)施例中,分布式存儲(chǔ)系統(tǒng)中數(shù)據(jù)副本恢復(fù)方法的實(shí)施流程示意圖;
[0023]圖2為本發(fā)明實(shí)施例中,分布式存儲(chǔ)系統(tǒng)中數(shù)據(jù)副本恢復(fù)裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0024]為了在不影響分布式存儲(chǔ)系統(tǒng)讀寫(xiě)性能的同時(shí),保證分布式存儲(chǔ)系統(tǒng)的可靠性。
[0025]以下結(jié)合說(shuō)明書(shū)附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說(shuō)明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例僅用于說(shuō)明和解釋本發(fā)明,并不用于限定本發(fā)明,并且在不沖突的情況下,本發(fā)明中的實(shí)施例及實(shí)施例中的特征可以相互組合。
[0026]如圖1所示,為本發(fā)明實(shí)施例提供的分布式存儲(chǔ)系統(tǒng)中數(shù)據(jù)副本恢復(fù)方法的實(shí)施流程示意圖,可以包括以下步驟:
[0027]S101、在檢測(cè)到數(shù)據(jù)節(jié)點(diǎn)故障時(shí),統(tǒng)計(jì)故障數(shù)據(jù)節(jié)點(diǎn)的數(shù)量;
[0028]具體實(shí)施時(shí),由于分布式存儲(chǔ)系統(tǒng)對(duì)上層應(yīng)用提供數(shù)據(jù)讀寫(xiě)服務(wù),并確保數(shù)據(jù)以多副本方式存儲(chǔ)在不同的數(shù)據(jù)節(jié)點(diǎn)中,來(lái)確保個(gè)別數(shù)據(jù)節(jié)點(diǎn)故障時(shí)數(shù)據(jù)的可靠性。由于上層應(yīng)用可以讀取分布式存儲(chǔ)系統(tǒng)指定的任一數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù)本,因此,個(gè)別數(shù)據(jù)節(jié)點(diǎn)故障或數(shù)據(jù)副本恢復(fù)操作都會(huì)改變數(shù)據(jù)文件可以讀寫(xiě)的節(jié)點(diǎn)范圍,這個(gè)讀寫(xiě)范圍需要實(shí)時(shí)更新并通知分布式存儲(chǔ)系統(tǒng)的Master節(jié)點(diǎn)。因此,分布式存儲(chǔ)系統(tǒng)檢測(cè)出有故障數(shù)據(jù)節(jié)點(diǎn)時(shí),不僅需要統(tǒng)計(jì)故障數(shù)據(jù)節(jié)點(diǎn)的數(shù)量,同時(shí),為了避免系統(tǒng)從故障數(shù)據(jù)節(jié)點(diǎn)上讀寫(xiě)數(shù)據(jù),需要即時(shí)更新可用數(shù)據(jù)節(jié)點(diǎn)范圍。具體實(shí)施時(shí),更新可用數(shù)據(jù)節(jié)點(diǎn)范圍的操作可與統(tǒng)計(jì)故障數(shù)據(jù)節(jié)點(diǎn)數(shù)量的操作同時(shí)執(zhí)行,也可以先于統(tǒng)計(jì)故障節(jié)點(diǎn)數(shù)量的操作執(zhí)行,當(dāng)然也可以在統(tǒng)計(jì)故障數(shù)據(jù)節(jié)點(diǎn)數(shù)量操作執(zhí)行,本發(fā)明實(shí)施例對(duì)此不做限定。
[0029]S102、根據(jù)故障數(shù)據(jù)節(jié)點(diǎn)的數(shù)量,執(zhí)行數(shù)據(jù)副本恢復(fù)操作。
[0030]為了實(shí)現(xiàn)在不影響分布式存儲(chǔ)系統(tǒng)讀寫(xiě)性能的同時(shí),保證分布式存儲(chǔ)系統(tǒng)的可靠性的目的,本發(fā)明實(shí)施例中,可根據(jù)存儲(chǔ)數(shù)據(jù)的重要性預(yù)設(shè)故障數(shù)據(jù)節(jié)點(diǎn)數(shù)量閾值R,當(dāng)存儲(chǔ)數(shù)據(jù)副本數(shù)量設(shè)定為N時(shí)(N > 2時(shí)數(shù)據(jù)副本才具有冗余性,一般設(shè)定為3或者更高),其中,I彡R彡(N-1),當(dāng)R=I時(shí)即為有一個(gè)數(shù)據(jù)節(jié)點(diǎn)故障即開(kāi)始執(zhí)行數(shù)據(jù)副本恢復(fù)操作,而當(dāng)RXN-1)時(shí)可能出現(xiàn)數(shù)據(jù)副本丟失的風(fēng)險(xiǎn)。
[0031]具體實(shí)施時(shí),故障數(shù)據(jù)節(jié)點(diǎn)數(shù)量越多,表明數(shù)據(jù)丟失的風(fēng)險(xiǎn)就越大,當(dāng)故障數(shù)據(jù)節(jié)點(diǎn)為R時(shí)表明分布式存儲(chǔ)系統(tǒng)存儲(chǔ)的數(shù)據(jù)副本達(dá)到預(yù)設(shè)的最高風(fēng)險(xiǎn)等級(jí),當(dāng)故障數(shù)據(jù)節(jié)點(diǎn)數(shù)量為(N-1)時(shí)表明分布式存儲(chǔ)系統(tǒng)數(shù)據(jù)達(dá)到了事實(shí)上的最高風(fēng)險(xiǎn)等級(jí),在這兩種情況下應(yīng)立即進(jìn)行數(shù)據(jù)副本恢復(fù)操作,降低了潛在的數(shù)據(jù)副本丟失風(fēng)險(xiǎn)。本發(fā)明實(shí)施例中,當(dāng)故障節(jié)點(diǎn)數(shù)量達(dá)到預(yù)設(shè)故障節(jié)點(diǎn)數(shù)量閾值R時(shí),可以按照數(shù)據(jù)副本在故障數(shù)據(jù)節(jié)點(diǎn)中的重復(fù)度執(zhí)行數(shù)據(jù)副本恢復(fù)操作,即根據(jù)數(shù)據(jù)副本在所有故障數(shù)據(jù)節(jié)點(diǎn)的存儲(chǔ)數(shù)量執(zhí)行數(shù)據(jù)副本恢復(fù)操作。較佳的,本發(fā)明實(shí)施例中,針對(duì)分布式存儲(chǔ)系統(tǒng)時(shí)存儲(chǔ)的每一數(shù)據(jù)副本,在該數(shù)據(jù)副本寫(xiě)入分布式存儲(chǔ)系統(tǒng)時(shí)記錄該數(shù)據(jù)副本的數(shù)量信息;若該數(shù)據(jù)副本所在數(shù)據(jù)節(jié)點(diǎn)故障,或者在執(zhí)行數(shù)據(jù)副本恢復(fù)之后更新記錄的數(shù)量信息;這樣,分布式存儲(chǔ)系統(tǒng)在執(zhí)行數(shù)據(jù)副本恢復(fù)操作時(shí),可以針對(duì)各故障節(jié)點(diǎn)所存儲(chǔ)的每一數(shù)據(jù)副本,根據(jù)記錄的該數(shù)據(jù)副本的數(shù)量信息,按照數(shù)量由多至少的順序,依次對(duì)每一數(shù)據(jù)副本進(jìn)行恢復(fù)。
[0032]例如,假設(shè)預(yù)先設(shè)定的故障數(shù)據(jù)節(jié)點(diǎn)數(shù)量閾值為5,即當(dāng)分布式存儲(chǔ)系統(tǒng)中存在5臺(tái)故障數(shù)據(jù)節(jié)點(diǎn)時(shí),需要執(zhí)行數(shù)據(jù)副本恢復(fù)操作。若數(shù)據(jù)I存儲(chǔ)在5臺(tái)故障節(jié)點(diǎn)中的4臺(tái)故障數(shù)據(jù)節(jié)點(diǎn)上,數(shù)據(jù)2存儲(chǔ)于5臺(tái)故障節(jié)點(diǎn)中的3臺(tái)故障數(shù)據(jù)節(jié)點(diǎn)上,數(shù)據(jù)3存儲(chǔ)在5臺(tái)故障節(jié)點(diǎn)中的2臺(tái)故障數(shù)據(jù)節(jié)點(diǎn)上,則分布式存儲(chǔ)系統(tǒng)首先對(duì)數(shù)據(jù)I執(zhí)行數(shù)據(jù)副本恢復(fù)操作,再對(duì)數(shù)據(jù)2執(zhí)行數(shù)據(jù)副本恢復(fù)操作,最后執(zhí)行數(shù)據(jù)3執(zhí)行數(shù)據(jù)副本恢復(fù)操作。即本發(fā)明實(shí)施例中,分布式存儲(chǔ)系統(tǒng)優(yōu)先恢復(fù)多臺(tái)故障數(shù)據(jù)節(jié)點(diǎn)中共同存儲(chǔ)的數(shù)據(jù)副本。
[0033]若故障數(shù)據(jù)節(jié)點(diǎn)未達(dá)到預(yù)設(shè)的故障節(jié)點(diǎn)閾值時(shí),表明分布式存儲(chǔ)系統(tǒng)數(shù)據(jù)副本沒(méi)有達(dá)到預(yù)設(shè)最高風(fēng)險(xiǎn)閾值,其能夠容忍一定數(shù)量的數(shù)據(jù)節(jié)點(diǎn)故障而不會(huì)丟失數(shù)據(jù),這種情況下,本發(fā)明實(shí)施例中可以根據(jù)分布式存儲(chǔ)系統(tǒng)的性能指標(biāo)參數(shù)執(zhí)行數(shù)據(jù)副本恢復(fù)操作。其中,性能指標(biāo)參數(shù)包括分布式存儲(chǔ)系統(tǒng)的數(shù)據(jù)存儲(chǔ)1帶寬和/或分布式存儲(chǔ)系統(tǒng)的數(shù)據(jù)讀寫(xiě)時(shí)延,若分布式存儲(chǔ)系統(tǒng)的數(shù)據(jù)存儲(chǔ)1帶寬不超過(guò)預(yù)設(shè)帶寬閾值和/或分布式存儲(chǔ)系統(tǒng)的數(shù)據(jù)讀寫(xiě)時(shí)延不超過(guò)預(yù)設(shè)時(shí)延閾值時(shí),可以執(zhí)行數(shù)據(jù)副本恢復(fù)操作。
[0034]本發(fā)明實(shí)施例中,當(dāng)數(shù)據(jù)副本可靠性處于低風(fēng)險(xiǎn)狀態(tài)(即故障數(shù)據(jù)節(jié)點(diǎn)數(shù)量未達(dá)到預(yù)設(shè)故障節(jié)點(diǎn)數(shù)量閾值)時(shí),檢測(cè)分布式存儲(chǔ)系統(tǒng)的性能指標(biāo)參數(shù),可以包括分布式存儲(chǔ)系統(tǒng)的數(shù)據(jù)存儲(chǔ)10(輸入/輸出)帶寬和/或分布式存儲(chǔ)系統(tǒng)的數(shù)據(jù)讀寫(xiě)時(shí)延,若分布式存儲(chǔ)系統(tǒng)的數(shù)據(jù)存儲(chǔ)1帶寬不超過(guò)預(yù)設(shè)帶寬閾值和/或分布式存儲(chǔ)系統(tǒng)的數(shù)據(jù)讀寫(xiě)時(shí)延不超過(guò)預(yù)設(shè)時(shí)延閾值時(shí),可以執(zhí)行數(shù)據(jù)副本恢復(fù)操作;若分布式存儲(chǔ)系統(tǒng)的數(shù)據(jù)存儲(chǔ)1帶寬超過(guò)預(yù)設(shè)帶寬閾值和/或分布式存儲(chǔ)系統(tǒng)的數(shù)據(jù)讀寫(xiě)時(shí)延超過(guò)預(yù)設(shè)時(shí)延閾值時(shí),則不執(zhí)行數(shù)據(jù)副本恢復(fù)操作,確保分布式存儲(chǔ)系統(tǒng)的讀寫(xiě)性能,同時(shí),可以繼續(xù)執(zhí)行數(shù)據(jù)存儲(chǔ)1帶寬以及數(shù)據(jù)讀寫(xiě)時(shí)延,當(dāng)其滿(mǎn)足條件時(shí),再執(zhí)行數(shù)據(jù)副本恢復(fù)操作,從而能夠保證分布式存儲(chǔ)系統(tǒng)