亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種只讀快照的快照數據生成方法及裝置制造方法

文檔序號:6518123閱讀:287來源:國知局
一種只讀快照的快照數據生成方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種只讀快照的快照數據生成方法及裝置,方法為,當接收數據修改指示后,判定需要生成只讀快照的快照數據時,獲取各個節(jié)點的當前版本數據;當擁有最新版本數據的節(jié)點數目滿足冗余比時,分別根據上述各個節(jié)點的當前版本數據,生成只讀快照的快照數據。采用本發(fā)明技術方案,通過將當前時刻擁有最新版本數據的節(jié)點數目與冗余比進行比較,從而基于滿足冗余比的各個節(jié)點的當前版本數據生成只讀快照的快照數據,保證了只讀快照的快照數據的準確性,避免了由于只讀快照的快照數據錯誤而造成的錯誤疊加最終影響分布式存儲文件系統(tǒng)可靠性的問題。
【專利說明】一種只讀快照的快照數據生成方法及裝置
【技術領域】
[0001]本發(fā)明涉及計算機應用領域,尤其涉及一種只讀快照的快照數據生成方法及裝置。
【背景技術】
[0002]目前,在NAS (Network Attached Storage ;網絡連接存儲)應用中,出于文件數據保護的需要,可以應用COW (Copy On Write ;只讀快照的快照數據)技術在不同的時刻對文件系統(tǒng)創(chuàng)建只讀快照,通過生成的該只讀快照的快照數據保存不同時刻的文件系統(tǒng)映像;其中,在某個時刻創(chuàng)建只讀快照表示在該某個時刻創(chuàng)建一個只讀快照的標記,而在創(chuàng)建上述只讀快照之后生成該只讀快照的快照數據表示基于上述標記的某個時刻的文件系統(tǒng)的數據生成一個文件系統(tǒng)的映像,該只讀快照的快照數據中包含上述某個時刻的文件系統(tǒng)的數據。當文件系統(tǒng)出現故障或者基于業(yè)務本身需要,需要將某個時刻的只讀快照作為目標只讀快照,并將文件系統(tǒng)中的數據恢復至目標只讀快照的快照數據時,只需要對只讀快照進行回滾操作即可將文件系統(tǒng)中的數據恢復至目標只讀快照的快照數據。
[0003]參閱圖1所示,在分布式存儲文件系統(tǒng)中,通常采用冗余切片的裝置將整個文件切分為多個定長分片,并將該每一個定長分片以文件的形式分別存儲至不同的存儲節(jié)點中。并且,為了能夠更加快捷地獲取各個定長分片,將各個定長分片的分布位置信息存儲至分布式文件系統(tǒng)的元數據中。
[0004]參閱圖2所示,在上述分布式存儲文件系統(tǒng)中,同一個定長分片的所有數據均屬于同一數據分條形成一個版本數據,當存在新版本數據的數據分條時,新版本數據的數據分條覆蓋舊版本數據的數據分條。為了保證對一個定長分片對應的任意一節(jié)點中的數據進行修改時,屬于該定長分片對應的其他節(jié)點數據的一致性,對定長分片中數據的修改均以該數據分條為基本單位進行修改操作,該數據分條中包含定長分片中的數據以及相應的校驗碼。具體為:當接收到數據修改指示,需要對任意一節(jié)點上的數據進行修改時,在現有分布式存儲文件系統(tǒng)中,需要將該任意一節(jié)點所屬定長分片對應的整個數據分條中所有節(jié)點的數據進行修改更新,其中,對于該數據分條中的校驗碼需要重新計算。例如,參閱圖2所示,數據分條I為定長分片(ChunkO)對應的數據分條,且該數據分條I包含兩個數據(D,分別存儲在節(jié)點一和節(jié)點二中)和一個校驗碼(P,也稱為冗余,存儲在節(jié)點三中),當需要對數據分條I中的任意一個數據進行修改時,需要重新計算上述校驗碼,并且保證該數據分條I中的三個數據被同時刷新。
[0005]基于上述分布式存儲文件系統(tǒng),在對任意一節(jié)點的數據修改過程中,可能出現修改失敗的情況。例如,參閱圖3所示,在對數據分條I的數據版本三(Ver=3)的修改過程節(jié)點二并未被同步修改,從而造成在數據版本四中節(jié)點二存在數據缺失的問題。此時,當對文件系統(tǒng)創(chuàng)建上述只讀快照一之后,在該數據缺失被修復之前,若對該只讀快照保護的數據進行修改時,該只讀快照一中的原來保護的數據(即對數據修改之前的各個節(jié)點的當前版本數據)將作為舊數據,需要根據該舊數據生成只讀快照一快照數據,該只讀快照一快照數據中節(jié)點二中的缺失數據將被記錄為某一個歷史版本數據(如版本三的數據)的數據,參閱圖4所示,從而造成只讀快照一中的舊數據存在數據版本號錯誤的問題。參閱圖5所示,當對文件系統(tǒng)創(chuàng)建只讀快照之后,若在該數據缺失被修復之前對該只讀快照保護的數據進行修改時又出現另一節(jié)點的數據修改失敗,將導致錯誤的疊加,造成快照數據不可用,從而降低了分布式存儲文件系統(tǒng)中數據的準確性。
[0006]綜上所述,目前由于只讀快照的快照數據中數據錯誤造成的分布式存儲文件系統(tǒng)準確性低的問題。

【發(fā)明內容】

[0007]本發(fā)明實施例提供一種只讀快照的快照數據生成方法及裝置,用以解決目前由于只讀快照的快照數據中數據錯誤造成的分布式存儲文件系統(tǒng)準確性低的問題。
[0008]本發(fā)明實施例提供的具體技術方案如下:
[0009]第一方面,提供一種只讀快照的快照數據生成方法,包括:
[0010]接收數據修改指示后,當判定需要生成只讀快照的快照數據時,獲取各個節(jié)點的當前版本數據以及當前數據版本號;其中,所述各個節(jié)點的當前版本數據為未根據所述數據修改指示對各個節(jié)點的數據進行修改之前的各個節(jié)點的數據,所述當前數據版本號為未根據所述數據修改指示對各個節(jié)點的數據進行修改之前的各個節(jié)點的數據版本號;
[0011]當擁有最新版本數據的節(jié)點數目滿足冗余比時,根據所述擁有最新版本數據的各個節(jié)點的當前版本數據和當前數據版本號,生成只讀快照的快照數據。
[0012]結合第一方面,在第一種可能的實現方式,判定需要生成只讀快照的快照數據方法,包括:獲取當前時刻之前最后一次創(chuàng)建的只讀快照,并檢測在所述最后一次創(chuàng)建的只讀快照之后,是否存在所述最后一次創(chuàng)建的只讀快照的快照數據;若當前時刻存在所述最后一次創(chuàng)建的只讀快照的快照數據,則判定不需要生成所述最后一次創(chuàng)建的只讀快照的快照數據;若當前時刻不存在所述最后一次創(chuàng)建的只讀快照的快照數據,則判定需要生成所述最后一次創(chuàng)建的只讀快照的快照數據。
[0013]結合第一方面的第一種可能的實現方式,在第二種可能的實現方式中,若存在任意一節(jié)點的當前版本數據不是最新版本數據,則根據與所述任意一節(jié)點處于同一數據分條的擁有最新版本數據的其他節(jié)點的當前版本數據以及當前版本數據號,對所述任意一節(jié)點的當前版本數據以及當前數據版本號進行修復;或者,根據本地保存的記錄日志,對所述任意一節(jié)點的當前版本數據以及當前數據版本號進行修復。
[0014]結合第一方面的第二種可能的實現方式,在第三種可能的實現方式中,生成所述只讀快照的快照數據之后,接收各個節(jié)點發(fā)送的數據修改成功響應消息,當數據修改成功的節(jié)點數目滿足冗余比時,基于所述數據修改指示中攜帶的修改數據生成新版本數據;其中,所述新版本數據包含各個節(jié)點的所述修改數據以及數據版本號;將所述只讀快照的快照數據,以及所述新版本數據進行事務提交。
[0015]結合第一方面的第三種可能的實現方式,在第四種可能的實現方式中,從接收到的各個節(jié)點發(fā)送的數據修改失敗響應消息中,獲取數據修改失敗的節(jié)點的節(jié)點標識;以及根據所述數據修改指示中攜帶的修改數據和接收到的各個節(jié)點發(fā)送的數據修改成功響應消息,獲取數據修改成功的各個節(jié)點的修改后的數據;分別根據所述數據修改失敗的每一個節(jié)點的節(jié)點標識對應的校驗碼以及與所述每一個節(jié)點處于同一數據分條的其他節(jié)點的修改后的數據,采用冗余校驗算法對所述數據修改失敗的每一個節(jié)點的數據進行修復;分別根據所述數據修改成功的所有節(jié)點的數據以及修復后的數據,生成新版本數據。
[0016]第二方面,提供一種只讀快照的快照數據生成裝置,包括:
[0017]判斷單元,用于接收數據修改指示后,判斷是否需要生成只讀快照的快照數據,并將判斷結果發(fā)送至獲取單元;
[0018]獲取單元,用于接收判斷單元發(fā)送的判斷結果,且當判斷結果為需要生成只讀快照的快照數據時,獲取各個節(jié)點的當前版本數據以及當前數據版本號,并將各個節(jié)點的當前版本數據以及當前數據版本號發(fā)送至生成單元;其中,所述各個節(jié)點的當前版本數據為未根據所述數據修改指示對各個節(jié)點的數據進行修改之前的各個節(jié)點的數據,所述當前數據版本號為未根據所述數據修改指示對各個節(jié)點的數據進行修改之前的各個節(jié)點的數據版本號;
[0019]生成單元,用于接收獲取單元發(fā)送的各個節(jié)點的當前版本數據以及當前數據版本號,當擁有最新版本數據的節(jié)點數目滿足冗余比時,根據所述擁有最新版本數據的各個節(jié)點的當前版本數據和當前數據版本號,生成只讀快照的快照數據。
[0020]結合第二方面,在第一種可能的實現方式,所述判斷單元,具體用于:獲取當前時刻之前最后一次創(chuàng)建的只讀快照,并檢測在所述最后一次創(chuàng)建的只讀快照之后,是否存在所述最后一次創(chuàng)建的只讀快照的快照數據;若當前時刻存在所述最后一次創(chuàng)建的只讀快照的快照數據,則判定不需要生成所述最后一次創(chuàng)建的只讀快照的快照數據;若當前時刻不存在所述最后一次創(chuàng)建的只讀快照的快照數據,則判定需要生成所述最后一次創(chuàng)建的只讀快照的快照數據。
[0021]結合第二方面的第一種可能的實現方式,在第二種可能的實現方式中,還包括修復單元,用于:若存在任意一節(jié)點的當前版本數據不是最新版本數據,則根據與所述任意一節(jié)點處于同一數據分條的擁有最新版本數據的其他節(jié)點的當前版本數據以及當前版本數據號,對所述任意一節(jié)點的當前版本數據以及當前數據版本號進行修復;或者,根據本地保存的記錄日志,對所述任意一節(jié)點的當前版本數據以及當前數據版本號進行修復。
[0022]結合第二方面的第二種可能的實現方式,在第三種可能的實現方式中,還包括提交單元,用于:生成所述只讀快照的快照數據之后,接收各個節(jié)點發(fā)送的數據修改成功響應消息,當數據修改成功的節(jié)點數目滿足冗余比時,基于所述數據修改指示中攜帶的修改數據生成新版本數據;其中,所述新版本數據包含各個節(jié)點的所述修改數據以及數據版本號;將所述只讀快照的快照數據,以及所述新版本數據進行事務提交。
[0023]結合第二方面的第三種可能的實現方式,在第四種可能的實現方式中,所述提交單元,具體用于:從接收到的各個節(jié)點發(fā)送的數據修改失敗響應消息中,獲取數據修改失敗的節(jié)點的節(jié)點標識;以及根據所述數據修改指示中攜帶的修改數據和接收到的各個節(jié)點發(fā)送的數據修改成功響應消息,獲取數據修改成功的各個節(jié)點的修改后的數據;分別根據所述數據修改失敗的每一個節(jié)點的節(jié)點標識對應的校驗碼以及與所述每一個節(jié)點處于同一數據分條的其他節(jié)點的修改后的數據,采用冗余校驗算法對所述數據修改失敗的每一個節(jié)點的數據進行修復;分別根據所述數據修改成功的所有節(jié)點的數據以及修復后的數據,生成新版本數據。[0024]本發(fā)明實施例中,當接收數據修改指示后,判定需要生成只讀快照的快照數據時,獲取各個節(jié)點的當前版本數據;當擁有最新版本數據的節(jié)點數目滿足冗余比時,分別根據上述各個節(jié)點的當前版本數據,生成只讀快照的快照數據。采用本發(fā)明技術方案,通過將當前時刻擁有最新版本數據的節(jié)點數目與冗余比進行比較,從而基于滿足冗余比的各個節(jié)點的當前版本數據生成只讀快照的快照數據,保證了只讀快照的快照數據的準確性,避免了由于只讀快照的快照數據錯誤而造成的錯誤疊加最終影響分布式存儲文件系統(tǒng)可靠性的問題。
【專利附圖】

【附圖說明】
[0025]圖1為現有技術中分布式存儲文件系統(tǒng)文件存儲示意圖;
[0026]圖2為現有技術中分布式存儲文件系統(tǒng)中數據修改示意圖一;
[0027]圖3為現有技術中分布式存儲文件系統(tǒng)中數據修改示意圖二 ;
[0028]圖4為現有技術中分布式存儲文件系統(tǒng)中數據修改示意圖三;
[0029]圖5為現有技術中分布式存儲文件系統(tǒng)中數據修改示意圖四;
[0030]圖6為本發(fā)明實施例中系統(tǒng)架構示意圖;
[0031]圖7為本發(fā)明實施例中只讀快照的快照數據生成流程圖;
[0032]圖8為本發(fā)明實施例中具體應用場景下只讀快照的快照數據生成流程圖;
[0033]圖9為本發(fā)明實施例中只讀快照的快照數據生成裝置結構示意圖;
[0034]圖10為本發(fā)明實施例中只讀快照的快照數據生成設備結構示意圖。
【具體實施方式】
[0035]為了解決目前由于只讀快照數據中數據錯誤造成的分布式存儲文件系統(tǒng)準確性低的問題。本發(fā)明實施例中,當接收數據修改指示后,判定需要生成只讀快照的快照數據時,獲取各個節(jié)點的當前版本數據;當擁有最新版本數據的節(jié)點數目滿足冗余比時,分別根據上述各個節(jié)點的當前版本數據,生成只讀快照的快照數據。采用本發(fā)明技術方案,通過將當前時刻擁有最新版本數據的節(jié)點數目與冗余比進行比較,從而基于滿足冗余比的各個節(jié)點的當前版本數據生成只讀快照的快照數據,保證了只讀快照的快照數據的準確性,避免了由于只讀快照的快照數據錯誤而造成的錯誤疊加最終影響分布式存儲文件系統(tǒng)可靠性的問題。
[0036]參閱圖6所示為本發(fā)明實施例中系統(tǒng)架構示意圖,該系統(tǒng)包括客戶端,以及分布式存儲文件系統(tǒng)服務器。
[0037]基于上述文件系統(tǒng)架構,參閱圖7所示,本發(fā)明實施例中,生成只讀快照的快照數據詳細流程為:
[0038]步驟700:接收數據修改指示后,當判定需要生成只讀快照的快照數據時,獲取各個節(jié)點的當前版本數據以及當前數據版本號。
[0039]本發(fā)明實施例中,上述數據修改指示中包含修改數據,根據該修改數據對分布式存儲文件系統(tǒng)中的數據進行修改。
[0040]可選的,判斷需要生成只讀快照的快照數據的方法,具體為:獲取當前時刻之前最后一次創(chuàng)建的只讀快照(以下簡稱只讀快照),并檢測在該只讀快照之后,是否存在上述只讀快照的快照數據;若當前時刻存在上述只讀快照的快照數據,則判定不需要生成該只讀快照的快照數據;若當前時刻不存在上述只讀快照的快照數據,則判定需要生成該只讀快照的快照數據。例如,參閱圖4所示,在數據分條I的數據版本四之后創(chuàng)建只讀快照,若在創(chuàng)建只讀快照之后對數據分條I中的任意一節(jié)點的當前版本數據進行修改后生成數據分條I的數據版本五,由于在創(chuàng)建只讀快照之后不存在數據分條I的數據版本,則需要創(chuàng)建只讀快照的快照數據,用于保存上述各個節(jié)點的當前版本數據,即保護數據分條I的數據版本四對應的數據;若在創(chuàng)建只讀快照之后對數據分條I中的任意一節(jié)點的當前版本數據進行修改生成數據分條I的數據版本六,由于分布式存儲文件系統(tǒng)中已存在快照數據,因此,對于上述當前版本數據修改(即對數據版本五的修改)不生成只讀快照的快照數據。
[0041 ] 本發(fā)明實施例中,在某個時刻創(chuàng)建只讀快照表示在該某個時刻創(chuàng)建一個只讀快照的標記,而在創(chuàng)建上述只讀快照之后生成該只讀快照的快照數據表示基于上述某個時刻的文件系統(tǒng)的數據生成一個文件系統(tǒng)的映像,該只讀快照的快照數據中保護上述某個時刻的文件系統(tǒng)的當前版本數據和當前數據版本號。其中,當前數據版本號可以為數字,也可以為其他表示數據版本編號的其他標記。
[0042]此外,在分布式存儲文件系統(tǒng)中,接收到的數據修改指示中攜帶修改數據,根據該修改數據更新相應的數據分條的當前版本數據以及當前數據版本號。
[0043]在上述過程中,各個節(jié)點的當前版本數據為未根據所述數據修改指示對各個節(jié)點的數據進行修改之前的各個節(jié)點的數據,當前數據版本號為未根據數據修改指示對各個節(jié)點的數據進行修改之前的各個節(jié)點的數據版本號。例如,參閱圖4所示,創(chuàng)建只讀快照之前,節(jié)點一的當前版本數據為數據版本四對應的數據,節(jié)點二的當前版本數據為空,則以歷史版本數據進行補充,即節(jié)點二的當前版本數據為版本三對應的數據,節(jié)點三的當前版本數據為版本四對應的數據;節(jié)點一的當前數據版本號為數據版本四,節(jié)點二的當前數據版本號為版本三,節(jié)點三的當前數據版本號為版本四。
[0044]步驟710:當擁有最新版本數據的節(jié)點數目滿足冗余比時,分別根據該擁有最新版本數據的各個節(jié)點的當前版本數據和當前數據版本號,生成只讀快照的快照數據。
[0045]本發(fā)明實施例中,若分布式存儲文件系統(tǒng)為配置成N份數據和M份冗余的系統(tǒng),則滿足冗余比即為在任意一數據分條中,不存在數據缺失的節(jié)點數目大于等于N。
[0046]當任意一數據分條中擁有最新版本數據的節(jié)點數目滿足冗余比時,根據各個節(jié)點的當前版本數據和當前數據版本號,生成只讀快照的快照數據,具體為:當任意一數據分條,當擁有最新版本數據的節(jié)點數目大于等于N時,若存在任意一節(jié)點的當前版本數據不是最版本數據,則根據與該任意一節(jié)點處于同一數據分條的擁有最新版本數據的其他節(jié)點的當前版本數據和當前數據版本號,采用冗余校驗法對該任意一節(jié)點的當前版本數據和當前數據版本號進行修復,或者,根據本地保存的記錄日志,對上述任意一節(jié)點的當前版本數據和當前版本數據號進行修復;根據修復后的各個節(jié)點的當前版本數據和當前版本數據號,生成只讀快照的快照數據。其中,上述N表示該分布式存儲文件系統(tǒng)中任意一數據分條中數據的份數;記錄日志中存儲有對分布式系統(tǒng)中任意一節(jié)點的修改記錄。
[0047]在上述過程中,任意一節(jié)點擁有最新版本數據即表示該任意一節(jié)點的當前數據版本號為正確,而該任意一節(jié)點的當前數據版本號是否正確可以根據與該任意一節(jié)點處于同一數據分條的其他節(jié)點的當前數據版本號進行判斷。由于文件系統(tǒng)的特性為新的數據版本覆蓋舊的數據版本,每當對文件系統(tǒng)中的數據進行修改后,文件系統(tǒng)的當前數據版本號(即版本號)即為遞增狀態(tài)。因此,獲取與上述任意一節(jié)點處于同一數據分條的其他節(jié)點的當前數據版本號中最大的當前數據版本號,若該任意一節(jié)點的當前數據版本號等于上述最大的當前數據版本號,則該任意一節(jié)點的當前數據版本號為正確。例如,參閱圖4所示,在版本四對應的數據分條(包含節(jié)點一,節(jié)點二,節(jié)點三)中,節(jié)點一的當前數據版本號為版本四,節(jié)點二由于修改失敗,而保存歷史數據版本號,即節(jié)點二的當前數據版本號為版本三,節(jié)點三的當前數據版本號為版本四,由此可見,在該數據分條中,最大的當前數據版本號為版本四,則節(jié)點一的當前數據版本號和節(jié)點三的當前數據版本號均為正確,而節(jié)點二的當前數據版本號為錯誤。
[0048]對于上述存在任意一節(jié)點的當前數據版本號錯誤的情況,可以參見以下示例:參閱圖5所示,在創(chuàng)建只讀快照一之后對分布式存儲文件系統(tǒng)中數據分條I的數據進行修改后,生成快照數據,由于該快照數據保護的數據為數據分條I的數據版本四對應的數據,而數據分條I的節(jié)點二存在數據缺失問題,此時快照數據保護的節(jié)點二中的數據版本號為數據版本三,從而導致只讀快照一中所保護的節(jié)點二的當前數據版本號錯誤的問題?;谠摷夹g問題,本發(fā)明實施例中,根據與該節(jié)點二處于同一數據分條的節(jié)點一的當前版本數據和當前數據版本號,以及節(jié)點三的當前版本數據和當前數據版本號,采用冗余校驗法對該節(jié)點二的當前版本數據和當前數據版本號進行修復;或者,根據本地保存的記錄日志,對節(jié)點二的當前版本數據進行修復;根據修復后的各個節(jié)點的當前版本數據,生成只讀快照的快照數據。在圖5中,在生成只讀快照一的快照數據后,由于節(jié)點一再次修改失敗,導致節(jié)點一的快照數據生成失敗,但是由于節(jié)點二的數據已經及時修改,只讀快照一的快照數據仍滿足冗余比,為可用的數據版本,從而保證了生成的只讀快照的快照數據中數據的準確性,進而有效提高了系統(tǒng)的可靠性。
[0049]進一步的,在生成只讀快照的快照數據之后,根據接收到的各個節(jié)點發(fā)送的數據修改成功響應消息,當判定數據修改成功的節(jié)點數目滿足冗余比時,基于上述數據修改指示中攜帶的修改數據生成新版本數據;將只讀快照的快照數據以及新版本數據進行事務提交。
[0050]進一步的,上述過程僅為數據修改成功的節(jié)點數目滿足冗余比的情況,即對于任意一數據分條,數據修改成功的節(jié)點數目可以等于所有節(jié)點的數目,也可以小于所有節(jié)點的數目。當數據修改成功的節(jié)點數目等于所有節(jié)點的數目時,表示所有節(jié)點的數據均修改成功,此時直接根據修改指示中攜帶的修改數據生成新版本數據;當數據修改成功的節(jié)點數目小于所有節(jié)點的數目時,表示存在數據修改失敗的節(jié)點。
[0051]其中,對于該數據修改失敗的節(jié)點的處理流程為:當接收各個節(jié)點發(fā)送的數據修改失敗響應消息,獲取數據修改失敗的節(jié)點的節(jié)點標識;分別根據數據修改失敗的每一個節(jié)點的節(jié)點標識對應的校驗碼以及每一個節(jié)點對應的處于同一數據分條的其他節(jié)點的修改后的數據,采用冗余校驗算法對所述數據修改失敗的節(jié)點的數據進行修復;分別根據數據修改成功的所有節(jié)點的數據以及修復后的數據,生成新版本數據??蛇x的,在上述數據修復完畢之后,在日志記錄中記錄此次修改,以便之后創(chuàng)建的只讀快照的快照數據出現錯誤時,對該只讀快照的快照數據進行修復。特殊的,當存在任意一節(jié)點沒有返回任何響應消息時,該任意一節(jié)點也為數據修改失敗的節(jié)點。[0052]在上述過程中,當數據修改成功的節(jié)點數目滿足冗余比,且存在數據修改失敗的節(jié)點時,可以根據同一數據分條中的其他節(jié)點的修改后的數據,采用冗余校驗法修復數據修改失敗的節(jié)點的數據。例如,參閱圖4所示,對于數據分條I包含三個節(jié)點,且在數據分條I的數據版本四的節(jié)點二上存在數據缺失,而節(jié)點一和節(jié)點三上的數據均正確,此時,數據分條I中數據修改成功的節(jié)點數目滿足冗余比,則可以采用冗余校驗算法,通過節(jié)點一和節(jié)點三上的數據對節(jié)點二上的數據進行修復。
[0053]特殊的,當判定數據修改成功的節(jié)點數目不滿足冗余比時,向客戶端返回提醒消息,提示用戶當前數據版本存在錯誤,需要用戶重新輸入。
[0054]參閱圖8所示,下面結合具體的應用場景,詳細描述根據只讀快照的快照數據進行實物提交的過程:
[0055]步驟800:接收數據修改指示。
[0056]步驟810:判斷是否需要生成只讀快照的快照數據,若是,則執(zhí)行步驟820 ;否則,結束當前流程。
[0057]步驟820:獲取各個節(jié)點的當前版本數據以及當前數據版本號。
[0058]步驟830:判斷上述各個節(jié)點的當前數據版本號正確的節(jié)點數目是否滿足冗余t匕,若是,則執(zhí)行步驟840 ;否則,執(zhí)行步驟850。
[0059]步驟840:當不存在當前數據版本號錯誤的節(jié)點時,分別根據各個節(jié)點的當前版本數據,生成只讀快照的快照數據;當存在當前數據版本號錯誤的節(jié)點,根據本地保存的記錄日志,對各個節(jié)點的當前版本數據以及當前數據版本號進行修復,并根據修復后的只讀快照的數據,生成只讀快照的快照數據。
[0060]本發(fā)明實施例中,針對當前數據版本號錯誤的節(jié)點,還可以通過與該當前數據版本號錯誤的節(jié)點處于同一數據分條的其他節(jié)點的當前版本數據,對該當前數據版本號錯誤的節(jié)點的當前版本數據和當前數據版本號進行修復。
[0061]步驟850:返回提醒消息,提示用戶數據修改失敗。
[0062]步驟860:根據接收到的各個節(jié)點發(fā)送的數據修改成功響應消息,判斷數據修改成功的節(jié)點數目是否滿足冗余比,若是,則執(zhí)行步驟870 ;否則,執(zhí)行步驟880。
[0063]步驟870:基于上述數據修改指示中攜帶的修改數據生成新版本數據,并將上述只讀快照的快照數據以及新版本數據進行事務提交。
[0064]本發(fā)明實施例中,當數據修改成功的節(jié)點數目等于所有節(jié)點的數目時,表示所有節(jié)點的數據均修改成功,此時直接根據修改指示中攜帶的修改數據生成新版本數據;當數據修改成功的節(jié)點數目小于所有節(jié)點的數目時,采用冗余校驗算法對所述數據修改失敗的節(jié)點的數據進行修復;分別根據數據修改成功的所有節(jié)點的數據以及修復后的數據,生成新版本數據。
[0065]步驟880:返回提醒消息,提示用戶當前數據版本存在錯誤,需要用戶重新輸入。
[0066]本發(fā)明實施例中,對于數據修改成功的節(jié)點數目不滿足冗余比的情況僅給出了用戶主動修改的方式修復數據版本。
[0067]基于上述技術方案,參閱圖9所示,本發(fā)明提供一種只讀快照的快照數據生成裝置,包括判斷單元90,獲取單元91,以及生成單元92,其中:
[0068]判斷單元90,用于接收數據修改指示后,判斷是否需要生成只讀快照的快照數據,并將判斷結果發(fā)送至獲取單元91 ;
[0069]獲取單元91,用于接收判斷單元90發(fā)送的判斷結果,且當判斷結果為需要生成只讀快照的快照數據時,獲取各個節(jié)點的當前版本數據以及當前數據版本號,并將各個節(jié)點的當前版本數據以及當前數據版本號發(fā)送至生成單元92;其中,所述各個節(jié)點的當前版本數據為未根據所述數據修改指示對各個節(jié)點的數據進行修改之前的各個節(jié)點的數據,所述當前數據版本號為未根據所述數據修改指示對各個節(jié)點的數據進行修改之前的各個節(jié)點的數據版本號;
[0070]生成單元92,用于接收獲取單元91發(fā)送的各個節(jié)點的當前版本數據以及當前數據版本號,當擁有最新版本數據的節(jié)點數目滿足冗余比時,根據所述擁有最新版本數據的各個節(jié)點的當前版本數據和當前數據版本號,生成只讀快照的快照數據。
[0071]其中,判斷單元90具體用于:獲取當前時刻之前最后一次創(chuàng)建的只讀快照,并檢測在所述最后一次創(chuàng)建的只讀快照之后,是否存在所述最后一次創(chuàng)建的只讀快照的快照數據;若當前時刻存在所述最后一次創(chuàng)建的只讀快照的快照數據,則判定不需要生成所述最后一次創(chuàng)建的只讀快照的快照數據;若當前時刻不存在所述最后一次創(chuàng)建的只讀快照的快照數據,則判定需要生成所述最后一次創(chuàng)建的只讀快照的快照數據。
[0072]進一步的,上述裝置還包括修復單元93,用于:若存在任意一節(jié)點的當前版本數據不是最新版本數據,則根據與所述任意一節(jié)點處于同一數據分條的擁有最新版本數據的其他節(jié)點的當前版本數據以及當前版本數據號,對所述任意一節(jié)點的當前版本數據以及當前數據版本號進行修復;或者,根據本地保存的記錄日志,對所述任意一節(jié)點的當前版本數據以及當前數據版本號進行修復。
[0073]進一步的,上述裝置還包括提交單元94,用于:生成所述只讀快照的快照數據之后,接收各個節(jié)點發(fā)送的數據修改成功響應消息,當數據修改成功的節(jié)點數目滿足冗余比時,基于所述數據修改指示中攜帶的修改數據生成新版本數據;其中,所述新版本數據包含各個節(jié)點的所述修改數據以及數據版本號;將所述只讀快照的快照數據,以及所述新版本數據進行事務提交。
[0074]提交單元94具體用于:從接收到的各個節(jié)點發(fā)送的數據修改失敗響應消息中,獲取數據修改失敗的節(jié)點的節(jié)點標識;以及根據所述數據修改指示中攜帶的修改數據和接收到的各個節(jié)點發(fā)送的數據修改成功響應消息,獲取數據修改成功的各個節(jié)點的修改后的數據;分別根據所述數據修改失敗的每一個節(jié)點的節(jié)點標識對應的校驗碼以及與所述每一個節(jié)點處于同一數據分條的其他節(jié)點的修改后的數據,采用冗余校驗算法對所述數據修改失敗的每一個節(jié)點的數據進行修復;分別根據所述數據修改成功的所有節(jié)點的數據以及修復后的數據,生成新版本數據。
[0075]基于上述技術方案,參閱圖10所示,本發(fā)明還提供一種只讀快照的快照數據生成設備,包括收發(fā)器100,存儲器101,以及處理器102,其中:
[0076]收發(fā)器100,用于接收數據修改指示,以及將該數據修改指示發(fā)送至處理器102 ;
[0077]存儲器101,用于存儲應用程序;
[0078]處理器102,用于運行存儲器101中的應用程序,執(zhí)行如下操作:
[0079]接收收發(fā)器100發(fā)送的數據修改指示后,當判定需要生成只讀快照的快照數據時,獲取各個節(jié)點的當前版本數據以及當前數據版本號;當擁有最新版本數據的節(jié)點數目滿足冗余比時,根據所述擁有最新版本數據的各個節(jié)點的當前版本數據和當前數據版本號,生成只讀快照的快照數據;其中,所述各個節(jié)點的當前版本數據為未根據所述數據修改指示對各個節(jié)點的數據進行修改之前的各個節(jié)點的數據,所述當前數據版本號為未根據所述數據修改指示對各個節(jié)點的數據進行修改之前的各個節(jié)點的數據版本號。
[0080]其中,上述處理器102,具體用于:獲取當前時刻之前最后一次創(chuàng)建的只讀快照,并檢測在所述最后一次創(chuàng)建的只讀快照之后,是否存在所述最后一次創(chuàng)建的只讀快照的快照數據;若當前時刻存在所述最后一次創(chuàng)建的只讀快照的快照數據,則判定不需要生成所述最后一次創(chuàng)建的只讀快照的快照數據;若當前時刻不存在所述最后一次創(chuàng)建的只讀快照的快照數據,則判定需要生成所述最后一次創(chuàng)建的只讀快照的快照數據。
[0081]進一步的,上述處理器102,還用于:若存在任意一節(jié)點的當前版本數據不是最新版本數據,則根據與所述任意一節(jié)點處于同一數據分條的擁有最新版本數據的其他節(jié)點的當前版本數據以及當前版本數據號,對所述任意一節(jié)點的當前版本數據以及當前數據版本號進行修復;或者,根據本地保存的記錄日志,對所述任意一節(jié)點的當前版本數據以及當前數據版本號進行修復。
[0082]進一步的,上述處理器102,還用于:生成所述只讀快照的快照數據之后,接收各個節(jié)點發(fā)送的數據修改成功響應消息,當數據修改成功的節(jié)點數目滿足冗余比時,基于所述數據修改指示中攜帶的修改數據生成新版本數據;其中,所述新版本數據包含各個節(jié)點的所述修改數據以及數據版本號;將所述只讀快照的快照數據,以及所述新版本數據發(fā)送至收發(fā)器100,令收發(fā)器100將所述只讀快照的快照數據,以及所述新版本數據進行事務提交。
[0083]進一步的,收發(fā)器100,還用于:接收處理器102發(fā)送的只讀快照的快照數據,以及新版本數據后,將只讀快照的快照數據,以及新版本數據進行事務提交。
[0084]進一步的,處理器102,還用于:從接收到的各個節(jié)點發(fā)送的數據修改失敗響應消息中,獲取數據修改失敗的節(jié)點的節(jié)點標識;以及根據所述數據修改指示中攜帶的修改數據和接收到的各個節(jié)點發(fā)送的數據修改成功響應消息,獲取數據修改成功的各個節(jié)點的修改后的數據;分別根據所述數據修改失敗的每一個節(jié)點的節(jié)點標識對應的校驗碼以及與所述每一個節(jié)點處于同一數據分條的其他節(jié)點的修改后的數據,采用冗余校驗算法對所述數據修改失敗的每一個節(jié)點的數據進行修復;分別根據所述數據修改成功的所有節(jié)點的數據以及修復后的數據,生成新版本數據。
[0085]綜上所述,本發(fā)明實施例中,接收數據修改指示后,當判定需要生成只讀快照的快照數據時,獲取各個節(jié)點的當前版本數據以及當前數據版本號;當擁有最新版本數據的節(jié)點數目滿足冗余比時,分別根據該擁有最新版本數據的各個節(jié)點的當前版本數據和當前數據版本號,生成只讀快照的快照數據。采用本發(fā)明技術方案,通過將當前時刻擁有最新版本數據的節(jié)點數目與冗余比進行比較,從而基于滿足冗余比的各個節(jié)點的當前版本數據生成只讀快照的快照數據,保證了只讀快照的快照數據的準確性,避免了由于只讀快照的快照數據錯誤而造成的錯誤疊加最終影響分布式存儲文件系統(tǒng)可靠性的問題。
[0086]本領域內的技術人員應明白,本發(fā)明的實施例可提供為裝置、系統(tǒng)、或計算機程序產品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的形式。
[0087]本發(fā)明是參照根據本發(fā)明實施例的裝置、設備(系統(tǒng))、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執(zhí)行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0088]這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0089]這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0090]盡管已描述了本發(fā)明的優(yōu)選實施例,但本領域內的技術人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。
[0091]顯然,本領域的技術人員可以對本發(fā)明實施例進行各種改動和變型而不脫離本發(fā)明實施例的精神和范圍。這樣,倘若本發(fā)明實施例的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍之內,則本發(fā)明也意圖包含這些改動和變型在內。
【權利要求】
1.一種只讀快照的快照數據生成方法,其特征在于,包括: 接收數據修改指示后,當判定需要生成只讀快照的快照數據時,獲取各個節(jié)點的當前版本數據以及當前數據版本號;其中,所述各個節(jié)點的當前版本數據為未根據所述數據修改指示對各個節(jié)點的數據進行修改之前的各個節(jié)點的數據,所述當前數據版本號為未根據所述數據修改指示對各個節(jié)點的數據進行修改之前的各個節(jié)點的數據版本號; 當擁有最新版本數據的節(jié)點數目滿足冗余比時,根據所述擁有最新版本數據的各個節(jié)點的當前版本數據和當前數據版本號,生成只讀快照的快照數據。
2.如權利要求1所述的方法,其特征在于,判定需要生成只讀快照的快照數據,包括: 獲取當前時刻之前最后一次創(chuàng)建的只讀快照,并檢測在所述最后一次創(chuàng)建的只讀快照之后,是否存在所述最后一次創(chuàng)建的只讀快照的快照數據; 若當前時刻存在所述最后一次創(chuàng)建的只讀快照的快照數據,則判定不需要生成所述最后一次創(chuàng)建的只讀快照的快照數據; 若當前時刻不存在所述最后一次創(chuàng)建的只讀快照的快照數據,則判定需要生成所述最后一次創(chuàng)建的只讀快照的快照數據。
3.如權利要求1或2所述的方法,其特征在于,生成只讀快照的快照數據之前,進一步包括: 若存在任意一節(jié)點的當前版本數據不是最新版本數據,則根據與所述任意一節(jié)點處于同一數據分條的擁有最新版本數據的其他節(jié)點的當前版本數據以及當前版本數據號,對所述任意一節(jié)點的當前版本數據`以及當前數據版本號進行修復;或者,根據本地保存的記錄日志,對所述任意一節(jié)點的當前版本數據以及當前數據版本號進行修復。
4.如權利要求3所述的方法,其特征在于,生成所述只讀快照的快照數據之后,進一步包括: 接收各個節(jié)點發(fā)送的數據修改成功響應消息,當數據修改成功的節(jié)點數目滿足冗余比時,基于所述數據修改指示中攜帶的修改數據生成新版本數據;其中,所述新版本數據包含各個節(jié)點的所述修改數據以及數據版本號; 將所述只讀快照的快照數據,以及所述新版本數據進行事務提交。
5.如權利要求4所述的方法,其特征在于,基于所述數據修改指示中攜帶的修改數據生成新版本數據,具體包括: 從接收到的各個節(jié)點發(fā)送的數據修改失敗響應消息中,獲取數據修改失敗的節(jié)點的節(jié)點標識;以及 根據所述數據修改指示中攜帶的修改數據和接收到的各個節(jié)點發(fā)送的數據修改成功響應消息,獲取數據修改成功的各個節(jié)點的修改后的數據; 分別根據所述數據修改失敗的每一個節(jié)點的節(jié)點標識對應的校驗碼以及與所述每一個節(jié)點處于同一數據分條的其他節(jié)點的修改后的數據,采用冗余校驗算法對所述數據修改失敗的每一個節(jié)點的數據進行修復; 分別根據所述數據修改成功的所有節(jié)點的數據以及修復后的數據,生成新版本數據。
6.一種只讀快照的快照數據生成裝置,其特征在于,包括: 判斷單元,用于接收數據修改指示后,判斷是否需要生成只讀快照的快照數據,并將判斷結果發(fā)送至獲取單元;獲取單元,用于接收判斷單元發(fā)送的判斷結果,且當判斷結果為需要生成只讀快照的快照數據時,獲取各個節(jié)點的當前版本數據以及當前數據版本號,并將各個節(jié)點的當前版本數據以及當前數據版本號發(fā)送至生成單元;其中,所述各個節(jié)點的當前版本數據為未根據所述數據修改指示對各個節(jié)點的數據進行修改之前的各個節(jié)點的數據,所述當前數據版本號為未根據所述數據修改指示對各個節(jié)點的數據進行修改之前的各個節(jié)點的數據版本號; 生成單元,用于接收獲取單元發(fā)送的各個節(jié)點的當前版本數據以及當前數據版本號,當擁有最新版本數據的節(jié)點數目滿足冗余比時,根據所述擁有最新版本數據的各個節(jié)點的當前版本數據和當前數據版本號,生成只讀快照的快照數據。
7.如權利要求6所述的裝置,其特征在于,所述判斷單元,具體用于: 獲取當前時刻之前最后一次創(chuàng)建的只讀快照,并檢測在所述最后一次創(chuàng)建的只讀快照之后,是否存在所述最后一次創(chuàng)建的只讀快照的快照數據;若當前時刻存在所述最后一次創(chuàng)建的只讀快照的快照數據,則判定不需要生成所述最后一次創(chuàng)建的只讀快照的快照數據;若當前時刻不存在所述最后一次創(chuàng)建的只讀快照的快照數據,則判定需要生成所述最后一次創(chuàng)建的只讀快照的快照數據。
8.如權利要求6或7所述的裝置,其特征在于,還包括修復單元,用于: 若存在任意一節(jié)點的當前版本數據不是最新版本數據,則根據與所述任意一節(jié)點處于同一數據分條的擁有最新版本數據的其他節(jié)點的當前版本數據以及當前版本數據號,對所述任意一節(jié)點的當前版本數據以及當前數據版本號進行修復;或者,根據本地保存的記錄日志,對所述任意一節(jié)點的當前版本數據以及當前數據版本號進行修復。
9.如權利要求8所述的裝置,其特征在于,還包括提交單元,用于: 生成所述只讀快照的快照數據之后,接收各個節(jié)點發(fā)送的數據修改成功響應消息,當數據修改成功的節(jié)點數目滿足冗余比時,基于所述數據修改指示中攜帶的修改數據生成新版本數據;其中,所述新版本數據包含各個節(jié)點的所述修改數據以及數據版本號;將所述只讀快照的快照數據,以及所述新版本數據進行事務提交。
10.如權利要求9所述的裝置,其特征在于,所述提交單元,具體用于: 從接收到的各個節(jié)點發(fā)送的數據修改失敗響應消息中,獲取數據修改失敗的節(jié)點的節(jié)點標識;以及根據所述數據修改指示中攜帶的修改數據和接收到的各個節(jié)點發(fā)送的數據修改成功響應消息,獲取數據修改成功的各個節(jié)點的修改后的數據;分別根據所述數據修改失敗的每一個節(jié)點的節(jié)點標識對應的校驗碼以及與所述每一個節(jié)點處于同一數據分條的其他節(jié)點的修改后的數據,采用冗余校驗算法對所述數據修改失敗的每一個節(jié)點的數據進行修復;分別根據所述數據修改成功的所有節(jié)點的數據以及修復后的數據,生成新版本數據。
【文檔編號】G06F11/14GK103631676SQ201310548175
【公開日】2014年3月12日 申請日期:2013年11月6日 優(yōu)先權日:2013年11月6日
【發(fā)明者】王成利 申請人:華為技術有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1