專利名稱:在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法
技術(shù)領(lǐng)域:
本發(fā)明基本上涉及服務(wù)器領(lǐng)域,更具體地來(lái)說(shuō),涉及一種在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法。
背景技術(shù):
隨著信息化的發(fā)展,信息資源爆炸式地增長(zhǎng),存儲(chǔ)技術(shù)在各個(gè)方面即遇到了前所未有的挑戰(zhàn),也產(chǎn)生了巨大的發(fā)展。隨著存儲(chǔ)容量的不斷增長(zhǎng),存儲(chǔ)性能成為了恒量計(jì)算機(jī)性能的重要因素。副本指的是分布式系統(tǒng)中為數(shù)據(jù)或服務(wù)提供的冗余。對(duì)于數(shù)據(jù)副本指在不同的節(jié)點(diǎn)上持久化同一份數(shù)據(jù),當(dāng)出現(xiàn)某一個(gè)節(jié)點(diǎn)的存儲(chǔ)的數(shù)據(jù)丟失時(shí),可以從副本上督導(dǎo)數(shù)據(jù)。數(shù)據(jù)副本是分布式系統(tǒng)解決數(shù)據(jù)丟失異常的唯一手段。 分布式系統(tǒng)通過(guò)副本控制協(xié)議,使得系統(tǒng)外部讀取系統(tǒng)內(nèi)部各個(gè)副本的數(shù)據(jù)在一定的約束條件下相同,稱之為副本一致性。副本異質(zhì)性是針對(duì)分布式系統(tǒng)而言的,而不是針對(duì)某一副本而言的。在基于對(duì)象的分布式存儲(chǔ)系統(tǒng)中,維護(hù)多個(gè)副本之間的一致性,是一項(xiàng)必須的工作。維護(hù)時(shí)要兼顧性能。嚴(yán)格的一致性校驗(yàn),同步的回寫(xiě)磁盤(pán),降低了磁盤(pán)1/0,影響到了系統(tǒng)的可用性。
發(fā)明內(nèi)容
為了克服上述缺陷,本發(fā)明提出了一種在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法,解決了如何在分布式系統(tǒng)中更好地維護(hù)副本一致性的技術(shù)問(wèn)題。本發(fā)明提供了一種在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法,包括步驟SI :客戶端在內(nèi)存中修改第一副本;步驟S2 :所述第一副本在內(nèi)存中對(duì)第二副本進(jìn)行相同的修改;步驟S3 :當(dāng)在內(nèi)存中對(duì)所述第二副本修改完成之后,所述第一副本進(jìn)行磁盤(pán)同步;以及步驟S4 :所述第二副本進(jìn)行磁盤(pán)同步。優(yōu)選地,所述步驟S2包括所述第一副本在內(nèi)存中對(duì)第二副本進(jìn)行相同的修改,并且將所述第二副本的日志標(biāo)識(shí)為已經(jīng)完成內(nèi)存修改;并且所述步驟S3包括當(dāng)感測(cè)到所述第二副本的日志中標(biāo)識(shí)了已經(jīng)完成內(nèi)存修改之后,所述第一副本進(jìn)行磁盤(pán)同步。優(yōu)選地,所述第一副本進(jìn)行磁盤(pán)同步包括先對(duì)所述第一副本的數(shù)據(jù)執(zhí)行多次寫(xiě)回,再對(duì)所述第一副本的數(shù)據(jù)執(zhí)行磁盤(pán)同步,并且所述第二副本進(jìn)行磁盤(pán)同步包括先對(duì)所述第二副本的數(shù)據(jù)執(zhí)行多次寫(xiě)回,再對(duì)所述第二副本的數(shù)據(jù)執(zhí)行磁盤(pán)同步。優(yōu)選地,所述多次寫(xiě)回包括預(yù)定次數(shù)的寫(xiě)回。優(yōu)選地,所述多次寫(xiě)回包括預(yù)定時(shí)間的寫(xiě)回。優(yōu)選地,所述步驟S3還包括將所述第一副本的日志標(biāo)識(shí)為已經(jīng)完成磁盤(pán)同步,所述步驟S4還包括將所述第二副本的日志標(biāo)識(shí)為已經(jīng)完成磁盤(pán)同步,并且所述方法還包括如果所述第一副本的日志和所述第二副本的日志均標(biāo)識(shí)為已經(jīng)完成了磁盤(pán)同步,則完成了一致性校驗(yàn)。優(yōu)選地,所述方法還包括當(dāng)完成了一致性校驗(yàn)之后,所述第一副本通知所述客戶端一致性校驗(yàn)已經(jīng)完成。優(yōu)選地,所述步驟SI包括客戶端在內(nèi)存中多次修改第一副本,并且在所述步驟S2中,所述第一副本對(duì)第二副本在內(nèi)存中進(jìn)行的修改與所述第一副本的多次修改中的最后一次修改相同。優(yōu)選地,所述方法還包括如果在預(yù)定時(shí)間內(nèi)未查找到所述第二副本的日志或者所述第二副本的日志中標(biāo)識(shí)為操作失敗,則重建第二副本。優(yōu)選地,如果所述第二副本在預(yù)定時(shí)間內(nèi)未收到任何來(lái)自所述第一副本的指示,則所述第二副本與所述客戶端相通信。根據(jù)本發(fā)明所描述的在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法,能夠更準(zhǔn)確地維護(hù)副 本一致性,更好地保證了系統(tǒng)的穩(wěn)定運(yùn)行。
附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說(shuō)明書(shū)的一部分,與本發(fā)明的實(shí)施例一起用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中圖I是根據(jù)本發(fā)明的在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法的總體流程圖;圖2是根據(jù)本發(fā)明的在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法的一個(gè)實(shí)施例的總體流程圖;圖3是根據(jù)本發(fā)明的在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法的另一個(gè)實(shí)施例的總體流程圖。
具體實(shí)施例方式以下結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說(shuō)明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例僅用于說(shuō)明和解釋本發(fā)明,并不用于限定本發(fā)明。圖I是根據(jù)本發(fā)明的在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法的總體流程圖。在圖I中步驟SlOO :客戶端在內(nèi)存部分中修改第一副本。其中,該第一副本為主副本,該第一副本與客戶端進(jìn)行通信,因此,該客戶端可以直接在內(nèi)存部分修改第一副本。步驟S102 :第一副本在內(nèi)存部分中對(duì)第二副本進(jìn)行相同的修改。該第二副本為從副本,該第二副本與第一副本相通信,而不與客戶端直接相通信。由于客戶端不與第二副本直接相通信,因此,第一副本在內(nèi)存部分對(duì)第二副本進(jìn)行修改。第一副本和第二副本所進(jìn)行的修改相同。步驟S104 :當(dāng)在內(nèi)存部分中對(duì)第二副本修改完成之后,將第一副本進(jìn)行磁盤(pán)同步。優(yōu)選地,可以在內(nèi)存部分對(duì)第二副本進(jìn)行修改之后,由第二副本向第一副本進(jìn)行應(yīng)答,第一副本作為響應(yīng)進(jìn)行應(yīng)答。步驟S106 :將第二副本進(jìn)行磁盤(pán)同步。也就是說(shuō),主副本必須等到從副本應(yīng)答之后,才可以進(jìn)行磁盤(pán)的同步操作,從副本則可以主動(dòng)進(jìn)行。因?yàn)橹鞲北咀鰹椴僮鞯目刂贫?,是唯一記錄從副本狀態(tài)的節(jié)點(diǎn)。在狀態(tài)未記錄完成時(shí)修改磁盤(pán),則不能保證從副本是否也收到了修改操作。一旦宕機(jī),修改了磁盤(pán)的主副本與未收到的操作的從副本會(huì)出現(xiàn)副本數(shù)據(jù)的不一致。通過(guò)本發(fā)明所描述的在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法,能夠更準(zhǔn)確地維護(hù)副本一致性,更好地保證了系統(tǒng)的穩(wěn)定運(yùn)行。此外,在一個(gè)優(yōu)選實(shí)施例中,在步驟SlOO中,客戶端可以在內(nèi)存中多次修改第一副本,而在步驟S102中,第一副本對(duì)第二副本在內(nèi)存中進(jìn)行的修改與第一副本的多次修改中的最后一次修改相同。也就是說(shuō),第二副本只以第一副本的最后一次修改為標(biāo)準(zhǔn)進(jìn)行修改。在本優(yōu)選實(shí)施例中,還提高了系統(tǒng)運(yùn)行效率。在另一個(gè)優(yōu)選實(shí)施例中,如果在預(yù)定時(shí)間內(nèi)未查找到第二副本的日志或者第二副本的日志中標(biāo)識(shí)為操作失敗,則重建第二副本。也就是說(shuō),主副本未發(fā)現(xiàn)從副本的日志,或者從副本日志中記錄了操作失敗,就認(rèn)為從副本發(fā)了故障,主從副本已經(jīng)不一致了。這時(shí)主 副本就可以重建從副本。在本優(yōu)選實(shí)施例中,還保證了系統(tǒng)的穩(wěn)定運(yùn)行。在又一個(gè)優(yōu)選實(shí)施例中,如果第二副本在預(yù)定時(shí)間內(nèi)未收到任何來(lái)自第一副本的指示,則第二副本與客戶端相通信。也就是說(shuō),如果從副本持有日志,且長(zhǎng)時(shí)間未收到來(lái)自主副本的任何信息,則認(rèn)為主副本發(fā)生了故障(比如宕機(jī)),此時(shí)從副本可以將自身變?yōu)橹鞲北荆c客戶端直接通信。在本優(yōu)選實(shí)施例中,還保證了系統(tǒng)的穩(wěn)定運(yùn)行。圖2是根據(jù)本發(fā)明的在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法的一個(gè)實(shí)施例的總體流程圖。在圖2中步驟S200 :客戶端在內(nèi)存中修改第一副本。步驟S202 :第一副本在內(nèi)存中對(duì)第二副本進(jìn)行相同的修改,并且將第二副本的日志標(biāo)識(shí)為已經(jīng)完成內(nèi)存修改。步驟S204 :當(dāng)感測(cè)到第二副本的日志中標(biāo)識(shí)了已經(jīng)完成內(nèi)存修改之后,先對(duì)第一副本的數(shù)據(jù)執(zhí)行多次寫(xiě)回,再對(duì)第一副本的數(shù)據(jù)執(zhí)行磁盤(pán)同步。步驟S206 :先對(duì)第二副本的數(shù)據(jù)執(zhí)行多次寫(xiě)回,再對(duì)第二副本的數(shù)據(jù)執(zhí)行磁盤(pán)同
止/J/ o在本實(shí)施例中,在進(jìn)行磁盤(pán)的寫(xiě)回時(shí),并不馬上進(jìn)行磁盤(pán)的同步。因?yàn)槊恳淮瓮蕉紩?huì)帶來(lái)額外的性能損耗。根據(jù)文件系統(tǒng)的特性,“寫(xiě)回”操作,是將數(shù)據(jù)寫(xiě)入到文件系統(tǒng)的緩存中,并不寫(xiě)入磁盤(pán);“同步”操作,是將數(shù)據(jù)寫(xiě)入磁盤(pán)的數(shù)據(jù)塊中。因?yàn)椤皩?xiě)回”所消耗的時(shí)間是大大短于“同步”所消耗的時(shí)間,因此,減少“寫(xiě)回操作”,一定能夠顯著的提高性能。其中,多次寫(xiě)回包括預(yù)定次數(shù)的寫(xiě)回或者預(yù)定時(shí)間的寫(xiě)回。也就是說(shuō),可以在經(jīng)過(guò)預(yù)定次數(shù)的寫(xiě)回之后進(jìn)行同步,或者在經(jīng)過(guò)預(yù)定時(shí)間的寫(xiě)回之后進(jìn)行同步。通過(guò)本實(shí)施例所描述的在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法,不僅能夠更準(zhǔn)確地維護(hù)副本一致性,更好地保證了系統(tǒng)的穩(wěn)定運(yùn)行,還能夠提高系統(tǒng)性能,節(jié)省系統(tǒng)資源。圖3是根據(jù)本發(fā)明的在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法的另一個(gè)實(shí)施例的總體流程圖。在圖3中步驟S300 :客戶端在內(nèi)存中修改第一副本。
步驟S302 :第一副本在內(nèi)存中對(duì)第二副本進(jìn)行相同的修改。步驟S304 :當(dāng)在內(nèi)存中對(duì)第二副本修改完成之后,第一副本進(jìn)行磁盤(pán)同步,將第一副本的日志標(biāo)識(shí)為已經(jīng)完成磁盤(pán)同步。步驟S306 :第二副本進(jìn)行磁盤(pán)同步將第二副本的日志標(biāo)識(shí)為已經(jīng)完成磁盤(pán)同步。步驟S308 :如果第一副本的日志和第二副本的日志均標(biāo)識(shí)為已經(jīng)完成了磁盤(pán)同步,則完成了一致性校驗(yàn)。通過(guò)本實(shí)施例所描述的在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法,不僅能夠更準(zhǔn)確地維護(hù)副本一致性,更好地保證了系統(tǒng)的穩(wěn)定運(yùn)行,還能夠通過(guò)標(biāo)識(shí)來(lái)示出一致性校驗(yàn)的完成。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修 改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法,其特征在于,所述方法包括 步驟SI :客戶端在內(nèi)存中修改第一副本; 步驟S2 :所述第一副本在內(nèi)存中對(duì)第二副本進(jìn)行相同的修改; 步驟S3 :當(dāng)在內(nèi)存中對(duì)所述第二副本修改完成之后,所述第一副本進(jìn)行磁盤(pán)同步;以及 步驟S4 :所述第二副本進(jìn)行磁盤(pán)同步。
2.根據(jù)權(quán)利要求I所述的在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法,其特征在于, 所述步驟S2包括所述第一副本在內(nèi)存中對(duì)第二副本進(jìn)行相同的修改,并且將所述第二副本的日志標(biāo)識(shí)為已經(jīng)完成內(nèi)存修改;并且 所述步驟S3包括當(dāng)感測(cè)到所述第二副本的日志中標(biāo)識(shí)了已經(jīng)完成內(nèi)存修改之后,所述第一副本進(jìn)行磁盤(pán)同步。
3.根據(jù)權(quán)利要求2所述的在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法,其特征在于, 所述第一副本進(jìn)行磁盤(pán)同步包括先對(duì)所述第一副本的數(shù)據(jù)執(zhí)行多次寫(xiě)回,再對(duì)所述第一副本的數(shù)據(jù)執(zhí)行磁盤(pán)同步,并且 所述第二副本進(jìn)行磁盤(pán)同步包括先對(duì)所述第二副本的數(shù)據(jù)執(zhí)行多次寫(xiě)回,再對(duì)所述第二副本的數(shù)據(jù)執(zhí)行磁盤(pán)同步。
4.根據(jù)權(quán)利要求3所述的在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法,其特征在于,所述多次寫(xiě)回包括預(yù)定次數(shù)的寫(xiě)回。
5.根據(jù)權(quán)利要求3所述的在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法,其特征在于,所述多次寫(xiě)回包括預(yù)定時(shí)間的寫(xiě)回。
6.根據(jù)權(quán)利要求I所述的在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法,其特征在于, 所述步驟S3還包括將所述第一副本的日志標(biāo)識(shí)為已經(jīng)完成磁盤(pán)同步, 所述步驟S4還包括將所述第二副本的日志標(biāo)識(shí)為已經(jīng)完成磁盤(pán)同步,并且所述方法還包括如果所述第一副本的日志和所述第二副本的日志均標(biāo)識(shí)為已經(jīng)完成了磁盤(pán)同步,則完成了一致性校驗(yàn)。
7.根據(jù)權(quán)利要求6所述的在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法,其特征在于,所述方法還包括當(dāng)完成了一致性校驗(yàn)之后,所述第一副本通知所述客戶端一致性校驗(yàn)已經(jīng)完成。
8.根據(jù)權(quán)利要求I所述的在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法,其特征在于, 所述步驟SI包括客戶端在內(nèi)存中多次修改第一副本,并且 在所述步驟S2中,所述第一副本對(duì)第二副本在內(nèi)存中進(jìn)行的修改與所述第一副本的多次修改中的最后一次修改相同。
9.根據(jù)權(quán)利要求I所述的在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法,其特征在于,所述方法還包括如果在預(yù)定時(shí)間內(nèi)未查找到所述第二副本的日志或者所述第二副本的日志中標(biāo)識(shí)為操作失敗,則重建第二副本。
10.根據(jù)權(quán)利要求I所述的在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法,其特征在于,如果所述第二副本在預(yù)定時(shí)間內(nèi)未收到任何來(lái)自所述第一副本的指示,則所述第二副本與所述客戶端相通信。
全文摘要
本發(fā)明提供了一種在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法,包括客戶端在內(nèi)存中修改第一副本;第一副本在內(nèi)存中對(duì)第二副本進(jìn)行相同的修改;當(dāng)在內(nèi)存中對(duì)第二副本修改完成之后,第一副本進(jìn)行磁盤(pán)同步;以及第二副本進(jìn)行磁盤(pán)同步。根據(jù)本發(fā)明所描述的在存儲(chǔ)系統(tǒng)中維護(hù)副本一致性的方法,能夠更準(zhǔn)確地維護(hù)副本一致性,更好地保證了系統(tǒng)的穩(wěn)定運(yùn)行。
文檔編號(hào)H04L29/08GK102970350SQ20121043664
公開(kāi)日2013年3月13日 申請(qǐng)日期2012年11月5日 優(yōu)先權(quán)日2012年11月5日
發(fā)明者姜國(guó)梁, 付根希, 彭成, 楊浩, 苗艷超 申請(qǐng)人:曙光信息產(chǎn)業(yè)(北京)有限公司