專利名稱:面向海量存儲系統(tǒng)的數(shù)據(jù)異步復(fù)制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)復(fù)制方法,尤其是涉及一種面向海量存儲系統(tǒng)的數(shù)據(jù)異步復(fù)制方法。
背景技術(shù):
海量存儲系統(tǒng)是一種能夠?qū)Υ笕萘繑?shù)據(jù)進行存儲的網(wǎng)絡(luò)存儲系統(tǒng)。目前海量存儲系統(tǒng)為了獲得更大的容量和更高的性能,往往采用分布式系統(tǒng)架構(gòu)。其中一種典型架構(gòu)是一個管理服務(wù)器,多個數(shù)據(jù)服務(wù)器,多個客戶機。文件被分割成相同大小的數(shù)據(jù)塊,數(shù)據(jù)塊保存在數(shù)據(jù)服務(wù)器上。管理服務(wù)器上存儲著系統(tǒng)的名字空間,文件的元數(shù)據(jù),文件與數(shù)據(jù)塊的映射關(guān)系等信息??蛻魴C與管理服務(wù)器進行元數(shù)據(jù)交互,與數(shù)據(jù)服務(wù)器進行數(shù)據(jù)交互。海量存儲系統(tǒng)里擁有大量的存儲設(shè)備,因此可以認為存儲設(shè)備出現(xiàn)故障是經(jīng)常發(fā)生的情況。為了系統(tǒng)的高可用性,對于一個數(shù)據(jù)塊要保存多份副本,并且盡量存放在不同的數(shù)據(jù)服務(wù)器上。在進行寫操作時,由于要將數(shù)據(jù)寫入多份副本,寫操作的效率成為一個問題。經(jīng)過對現(xiàn)有文獻檢索發(fā)現(xiàn),《The Google File System(Google文件系統(tǒng))》里提出了一種數(shù)據(jù)同步復(fù)制的方法。Google文件系統(tǒng)(GFS)采用的是上文提到的海量存儲系統(tǒng)的典型架構(gòu),它將文件分成64MB的數(shù)據(jù)塊(Chunk)進行存儲??蛻魴C對一個Chunk進行寫操作,必須要等到該Chunk的所有副本都完成了寫操作之后,才向客戶機返回寫操作成功的信息。這種方法雖然概念上簡單易行,但是該方法每次寫操作都要立即對所有副本進行寫入,降低了寫操作的效率,特別是當(dāng)副本數(shù)目比較多的時候,會嚴重影響寫操作執(zhí)行速度。
發(fā)明內(nèi)容
本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種復(fù)制效率高的面向海量存儲系統(tǒng)的數(shù)據(jù)異步復(fù)制方法。本發(fā)明的目的可以通過以下技術(shù)方案來實現(xiàn)—種面向海量存儲系統(tǒng)的數(shù)據(jù)異步復(fù)制方法,其特征在于,包括以下步驟第一步,客戶機向管理服務(wù)器查詢擁有數(shù)據(jù)塊寫租約的數(shù)據(jù)服務(wù)器信息;第二步,管理服務(wù)器接收到查詢請求后,執(zhí)行寫租約的查詢與分配操作;第三步,客戶機接收到擁有寫租約的數(shù)據(jù)服務(wù)器信息后,向其發(fā)送寫請求,數(shù)據(jù)服務(wù)器接收到寫請求后,將數(shù)據(jù)寫入到對應(yīng)的副本,并將副本的版本號加一,向客戶機返回寫操作成功信息,向管理服務(wù)器的異步復(fù)制隊列添加新任務(wù);第四步,管理服務(wù)器周期性地從異步復(fù)制隊列里取任務(wù),將任務(wù)分配給低版本號的副本所在的數(shù)據(jù)服務(wù)器,數(shù)據(jù)服務(wù)器進行副本的復(fù)制操作;第五步,數(shù)據(jù)服務(wù)器通知管理服務(wù)器已經(jīng)完成了副本復(fù)制任務(wù),管理服務(wù)器將該任務(wù)從異步復(fù)制隊列里刪除,然后執(zhí)行異步復(fù)制隊列里的下一個任務(wù)。所述的步驟二的寫租約的查詢與分配操作具體為
21)管理服務(wù)器查找是否有數(shù)據(jù)服務(wù)器擁有數(shù)據(jù)塊的寫租約,如果發(fā)現(xiàn)有數(shù)據(jù)服務(wù)器擁有數(shù)據(jù)塊的寫租約,將擁有寫租約的數(shù)據(jù)服務(wù)器信息返回給客戶機,結(jié)束寫租約的查詢與分配操作,否則執(zhí)行22);22)管理服務(wù)器查找是否有數(shù)據(jù)服務(wù)器擁有數(shù)據(jù)塊的讀租約,如果發(fā)現(xiàn)有數(shù)據(jù)服務(wù)器擁有數(shù)據(jù)塊的讀租約,根據(jù)讀寫租約的互斥性,通知客戶機無法取得數(shù)據(jù)塊的寫租約,結(jié)束寫租約的查詢與分配操作,否則執(zhí)行23);23)管理服務(wù)器查看數(shù)據(jù)塊的副本信息表,查找版本號最高的副本,如果版本號最高的副本有多個,就選擇其中任意一個;24)管理服務(wù)器查看版本號最高的副本所在的數(shù)據(jù)服務(wù)器,將數(shù)據(jù)塊的寫租約分配給該數(shù)據(jù)服務(wù)器,并將擁有寫租約的數(shù)據(jù)服務(wù)器信息返回給客戶機。所述的步驟四中的副本的復(fù)制操作具體如下41)數(shù)據(jù)服務(wù)器查看自己是否擁有數(shù)據(jù)塊的讀租約,如果是的話則執(zhí)行43),否則執(zhí)行42);42)數(shù)據(jù)服務(wù)器向管理服務(wù)器申請數(shù)據(jù)塊的讀租約,管理服務(wù)器接收到請求后,查看數(shù)據(jù)塊的寫租約是否被持有,如果是的話則將復(fù)制任務(wù)加入到異步復(fù)制隊列尾部,回復(fù)數(shù)據(jù)服務(wù)器申請讀租約失敗,結(jié)束該副本的復(fù)制操作;否則管理服務(wù)器將讀租約分配給數(shù)據(jù)服務(wù)器,并執(zhí)行步驟43);43)數(shù)據(jù)服務(wù)器向高版本號副本所在的數(shù)據(jù)服務(wù)器發(fā)送讀請求,高版本號副本所在的數(shù)據(jù)服務(wù)器接收到請求后,將數(shù)據(jù)和版本號傳遞給發(fā)送請求的數(shù)據(jù)服務(wù)器;44)數(shù)據(jù)服務(wù)器將接收到的數(shù)據(jù)寫入本機的數(shù)據(jù)塊副本里,數(shù)據(jù)寫入完畢后將版本號升級到與高版本號副本相同。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點在對擁有多份副本的數(shù)據(jù)塊進行寫操作時,只需要對其中一個副本寫入成功就立即返回寫成功,其他副本的寫入采用數(shù)據(jù)異步復(fù)制方法,從而提高了寫操作的效率。
圖I是本發(fā)明第二步中的寫租約查詢與分配操作的流程圖;圖2是本發(fā)明第四步中的副本復(fù)制操作的流程圖。
具體實施例方式下面結(jié)合附圖和具體實施例對本發(fā)明進行詳細說明。實施例I一種面向海量存儲系統(tǒng)的數(shù)據(jù)異步復(fù)制方法,其特征在于,包括以下步驟第一步,客戶機向管理服務(wù)器查詢擁有數(shù)據(jù)塊寫租約的數(shù)據(jù)服務(wù)器信息;第二步,管理服務(wù)器接收到查詢請求后,執(zhí)行寫租約的查詢與分配操作;第三步,客戶機接收到擁有寫租約的數(shù)據(jù)服務(wù)器信息后,向其發(fā)送寫請求,數(shù)據(jù)服務(wù)器接收到寫請求后,將數(shù)據(jù)寫入到對應(yīng)的副本,并將副本的版本號加一,向客戶機返回寫 操作成功信息,向管理服務(wù)器的異步復(fù)制隊列添加新任務(wù);第四步,管理服務(wù)器周期性地從異步復(fù)制隊列里取任務(wù),將任務(wù)分配給低版本號的副本所在的數(shù)據(jù)服務(wù)器,數(shù)據(jù)服務(wù)器進行副本的復(fù)制操作;第五步,數(shù)據(jù)服務(wù)器通知管理服務(wù)器已經(jīng)完成了副本復(fù)制任務(wù),管理服務(wù)器將該任務(wù)從異步復(fù)制隊列里刪除,然后執(zhí)行異步復(fù)制隊列里的下一個任務(wù)。如圖I所示,所述的步驟二的寫租約的查詢與分配操作具體為21)管理服務(wù)器查找是否有數(shù)據(jù)服務(wù)器擁有數(shù)據(jù)塊的寫租約,如果發(fā)現(xiàn)有數(shù)據(jù)服務(wù)器擁有數(shù)據(jù)塊的寫租約,將擁有寫租約的數(shù)據(jù)服務(wù)器信息返回給客戶機,結(jié)束寫租約的查詢與分配操作,否則執(zhí)行22);
22)管理服務(wù)器查找是否有數(shù)據(jù)服務(wù)器擁有數(shù)據(jù)塊的讀租約,如果發(fā)現(xiàn)有數(shù)據(jù)服務(wù)器擁有數(shù)據(jù)塊的讀租約,根據(jù)讀寫租約的互斥性,通知客戶機無法取得數(shù)據(jù)塊的寫租約,結(jié)束寫租約的查詢與分配操作,否則執(zhí)行23);23)管理服務(wù)器查看數(shù)據(jù)塊的副本信息表,查找版本號最高的副本,如果版本號最高的副本有多個,就選擇其中任意一個;24)管理服務(wù)器查看版本號最高的副本所在的數(shù)據(jù)服務(wù)器,將數(shù)據(jù)塊的寫租約分配給該數(shù)據(jù)服務(wù)器,并將擁有寫租約的數(shù)據(jù)服務(wù)器信息返回給客戶機。如圖2所示,所述的步驟四中的副本的復(fù)制操作具體如下41)數(shù)據(jù)服務(wù)器查看自己是否擁有數(shù)據(jù)塊的讀租約,如果是的話則執(zhí)行43),否則執(zhí)行42);42)數(shù)據(jù)服務(wù)器向管理服務(wù)器申請數(shù)據(jù)塊的讀租約,管理服務(wù)器接收到請求后,查看數(shù)據(jù)塊的寫租約是否被持有,如果是的話則將復(fù)制任務(wù)加入到異步復(fù)制隊列尾部,回復(fù)數(shù)據(jù)服務(wù)器申請讀租約失敗,結(jié)束該副本的復(fù)制操作;否則管理服務(wù)器將讀租約分配給數(shù)據(jù)服務(wù)器,并執(zhí)行步驟43);43)數(shù)據(jù)服務(wù)器向高版本號副本所在的數(shù)據(jù)服務(wù)器發(fā)送讀請求,高版本號副本所在的數(shù)據(jù)服務(wù)器接收到請求后,將數(shù)據(jù)和版本號傳遞給發(fā)送請求的數(shù)據(jù)服務(wù)器;44)數(shù)據(jù)服務(wù)器將接收到的數(shù)據(jù)寫入本機的數(shù)據(jù)塊副本里,數(shù)據(jù)寫入完畢后將版本號升級到與高版本號副本相同。實施例2本實施例包括1個存儲元數(shù)據(jù)的管理服務(wù)器,若干個存儲數(shù)據(jù)的數(shù)據(jù)服務(wù)器,若干個客戶機,包括以下步驟第一步,客戶機在對數(shù)據(jù)塊CHUNK-A進行寫操作之前,向管理服務(wù)器查詢擁有CHUNK-A寫租約的數(shù)據(jù)服務(wù)器信息。第二步,管理服務(wù)器接收到CHUNK-A寫租約的查詢請求后,執(zhí)行寫租約的查詢與分配操作。所述的寫租約的查詢與分配操作,具體步驟為I)管理服務(wù)器查找是否有數(shù)據(jù)服務(wù)器擁有CHUNK-A的寫租約,如果發(fā)現(xiàn)有數(shù)據(jù)服務(wù)器擁有CHUNK-A的寫租約,在本實施例中該數(shù)據(jù)服務(wù)器為DS-AJlMf DS-A的信息返回給客戶機,結(jié)束寫租約的查詢與分配操作,否則執(zhí)行2);2)管理服務(wù)器查找是否有數(shù)據(jù)服務(wù)器擁有CHUNK-A的讀租約,如果發(fā)現(xiàn)有數(shù)據(jù)服務(wù)器擁有CHUNK-A的讀租約,在本實施例中該數(shù)據(jù)服務(wù)器為DS-B,則通知客戶機無法取得CHUNK-A的寫租約,結(jié)束寫租約的查詢與分配操作,否則執(zhí)行3);
3)管理服務(wù)器查看副本信息表,查找CHUNK-A版本號最高的副本,在本實施例中CHUNK-A有3份副本,分別是CHUNK-Al,CHUNK-A2, CHUNK-A3,它們的版本號分別為10,10,9,它們分別存儲在數(shù)據(jù)服務(wù)器DS-C,DS-D和DS-E上,因此版本號最高的副本為CHUNK-Al ;4)管理服務(wù)器查看CHUNK-Al所在的數(shù)據(jù)服務(wù)器,在本實施例中該數(shù)據(jù)服務(wù)器是DS-CJf CHUNK-A的寫租約分配給DS-C,并將DS-C的信息返回給客戶機。第三步,客戶機接收到DS-C的信息后,向其發(fā)送對CHUNK-Al的寫請求,DS-C將數(shù)據(jù)寫入CHUNK-AlJf CHUNK-Al的版本號增加到11,向客戶機返回寫操作成功信息,向管理服務(wù)器的異步復(fù)制隊列添加新任務(wù)。第四步,管理服務(wù)器從異步復(fù)制隊列里取出任務(wù),進行副本的復(fù)制操作,本實施例中該任務(wù)是復(fù)制DS-C上CHUNK-Al的數(shù)據(jù)到DS-D上的CHUNK-A2。所述的副本的復(fù)制操作,具體步驟如下 DDS-D查看自己是否擁有CHUNK-A的讀租約,如果是的話則執(zhí)行3),否則執(zhí)行2);2) DS-D向管理服務(wù)器申請CHUNK-A的讀租約,管理服務(wù)器接收到請求后,先查看CHUNK-A的寫租約是否被持有,如果是的話則將復(fù)制任務(wù)加入到異步復(fù)制隊列尾部,回復(fù)DS-D申請讀租約失敗,結(jié)束副本的復(fù)制操作,否則管理服務(wù)器將讀租約分配給DS-D ;3) DS-D向DS-C發(fā)送讀請求,DS-C接收到請求后,將CHUNK-Al的數(shù)據(jù)和版本號傳遞給DS-D ;4) DS-D將接收到的數(shù)據(jù)寫入CHUNK-A2里,數(shù)據(jù)寫入完畢后將CHUNK-A2的版本號升級到與CHUNK-Al相同,在本實施例中是11。第五步,DS-D通知管理服務(wù)器已經(jīng)完成了數(shù)據(jù)復(fù)制操作,管理服務(wù)器將該任務(wù)從異步復(fù)制隊列里刪除,然后執(zhí)行異步復(fù)制隊列里的下一個任務(wù)。
權(quán)利要求
1.一種面向海量存儲系統(tǒng)的數(shù)據(jù)異步復(fù)制方法,其特征在于,包括以下步驟 第一歩,客戶機向管理服務(wù)器查詢擁有數(shù)據(jù)塊寫租約的數(shù)據(jù)服務(wù)器信息; 第二步,管理服務(wù)器接收到查詢請求后,執(zhí)行寫租約的查詢與分配操作; 第三步,客戶機接收到擁有寫租約的數(shù)據(jù)服務(wù)器信息后,向其發(fā)送寫請求,數(shù)據(jù)服務(wù)器接收到寫請求后,將數(shù)據(jù)寫入到對應(yīng)的副本,并將副本的版本號加一,向客戶機返回寫操作成功信息,向管理服務(wù)器的異步復(fù)制隊列添加新任務(wù); 第四步,管理服務(wù)器周期性地從異步復(fù)制隊列里取任務(wù),將任務(wù)分配給低版本號的副本所在的數(shù)據(jù)服務(wù)器,數(shù)據(jù)服務(wù)器進行副本的復(fù)制操作; 第五步,數(shù)據(jù)服務(wù)器通知管理服務(wù)器已經(jīng)完成了副本復(fù)制任務(wù),管理服務(wù)器將該任務(wù)從異步復(fù)制隊列里刪除,然后執(zhí)行異步復(fù)制隊列里的下ー個任務(wù)。
2.根據(jù)權(quán)利要求I所述的ー種面向海量存儲系統(tǒng)的數(shù)據(jù)異步復(fù)制方法,其特征在干,所述的步驟ニ的寫租約的查詢與分配操作具體為 21)管理服務(wù)器查找是否有數(shù)據(jù)服務(wù)器擁有數(shù)據(jù)塊的寫租約,如果發(fā)現(xiàn)有數(shù)據(jù)服務(wù)器擁有數(shù)據(jù)塊的寫租約,將擁有寫租約的數(shù)據(jù)服務(wù)器信息返回給客戶機,結(jié)束寫租約的查詢與分配操作,否則執(zhí)行22); 22)管理服務(wù)器查找是否有數(shù)據(jù)服務(wù)器擁有數(shù)據(jù)塊的讀租約,如果發(fā)現(xiàn)有數(shù)據(jù)服務(wù)器擁有數(shù)據(jù)塊的讀租約,根據(jù)讀寫租約的互斥性,通知客戶機無法取得數(shù)據(jù)塊的寫租約,結(jié)束寫租約的查詢與分配操作,否則執(zhí)行23); 23)管理服務(wù)器查看數(shù)據(jù)塊的副本信息表,查找版本號最高的副本,如果版本號最高的副本有多個,就選擇其中任意ー個; 24)管理服務(wù)器查看版本號最高的副本所在的數(shù)據(jù)服務(wù)器,將數(shù)據(jù)塊的寫租約分配給該數(shù)據(jù)服務(wù)器,并將擁有寫租約的數(shù)據(jù)服務(wù)器信息返回給客戶機。
3.根據(jù)權(quán)利要求I所述的ー種面向海量存儲系統(tǒng)的數(shù)據(jù)異步復(fù)制方法,其特征在干,所述的步驟四中的副本的復(fù)制操作具體如下 41)數(shù)據(jù)服務(wù)器查看自己是否擁有數(shù)據(jù)塊的讀租約,如果是的話則執(zhí)行43),否則執(zhí)行42); 42)數(shù)據(jù)服務(wù)器向管理服務(wù)器申請數(shù)據(jù)塊的讀租約,管理服務(wù)器接收到請求后,查看數(shù)據(jù)塊的寫租約是否被持有,如果是的話則將復(fù)制任務(wù)加入到異步復(fù)制隊列尾部,回復(fù)數(shù)據(jù)服務(wù)器申請讀租約失敗,結(jié)束該副本的復(fù)制操作;否則管理服務(wù)器將讀租約分配給數(shù)據(jù)服務(wù)器,并執(zhí)行步驟43); 43)數(shù)據(jù)服務(wù)器向高版本號副本所在的數(shù)據(jù)服務(wù)器發(fā)送讀請求,高版本號副本所在的數(shù)據(jù)服務(wù)器接收到請求后,將數(shù)據(jù)和版本號傳遞給發(fā)送請求的數(shù)據(jù)服務(wù)器; 44)數(shù)據(jù)服務(wù)器將接收到的數(shù)據(jù)寫入本機的數(shù)據(jù)塊副本里,數(shù)據(jù)寫入完畢后將版本號升級到與高版本號副本相同。
全文摘要
本發(fā)明涉及一種面向海量存儲系統(tǒng)的數(shù)據(jù)異步復(fù)制方法,包括以下步驟第一步,客戶機向管理服務(wù)器查詢擁有數(shù)據(jù)塊寫租約的數(shù)據(jù)服務(wù)器信息;第二步,管理服務(wù)器執(zhí)行寫租約的查詢與分配操作;第三步,客戶機接收到擁有寫租約的數(shù)據(jù)服務(wù)器信息后,向其發(fā)送寫請求,數(shù)據(jù)服務(wù)器接收到寫請求后,將數(shù)據(jù)寫入到對應(yīng)的副本,并將副本的版本號加一;第四步,管理服務(wù)器周期性地從異步復(fù)制隊列里取任務(wù),數(shù)據(jù)服務(wù)器進行副本的復(fù)制操作;第五步,數(shù)據(jù)服務(wù)器通知管理服務(wù)器已經(jīng)完成了副本復(fù)制任務(wù),管理服務(wù)器將該任務(wù)從異步復(fù)制隊列里刪除,然后執(zhí)行異步復(fù)制隊列里的下一個任務(wù)。與現(xiàn)有技術(shù)相比,本發(fā)明具有復(fù)制效率高等優(yōu)點。
文檔編號G06F11/14GK102622284SQ201210039678
公開日2012年8月1日 申請日期2012年2月21日 優(yōu)先權(quán)日2012年2月21日
發(fā)明者戰(zhàn)科宇, 李小勇, 王皓, 田怡萌, 胡鵬, 閆鶴 申請人:上海交通大學(xué)