本發(fā)明涉及數(shù)據(jù)存儲(chǔ),特別涉及一種數(shù)據(jù)處理方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、隨著云計(jì)算、大數(shù)據(jù)等技術(shù)的飛速發(fā)展,數(shù)據(jù)量呈爆炸性增長(zhǎng),對(duì)存儲(chǔ)系統(tǒng)的容量、性能及靈活性提出了更高要求。分布式塊存儲(chǔ)系統(tǒng)因其可擴(kuò)展性、高可用性和數(shù)據(jù)一致性等優(yōu)勢(shì),成為企業(yè)級(jí)數(shù)據(jù)存儲(chǔ)的重要選擇。然而,在實(shí)際應(yīng)用中,隨著業(yè)務(wù)調(diào)整、數(shù)據(jù)遷移或刪除等操作,大量數(shù)據(jù)卷被標(biāo)記為“已刪除”或“不再使用”,這些資源若不能得到及時(shí)有效的回收與再利用,將嚴(yán)重浪費(fèi)存儲(chǔ)空間,增加維護(hù)成本。
2、現(xiàn)有技術(shù)中,對(duì)于刪除數(shù)據(jù)卷的處理方式多限于將數(shù)據(jù)卷直接刪除進(jìn)行空間立即釋放,或者將數(shù)據(jù)卷刪除進(jìn)入回收站后延時(shí)刪除進(jìn)行空間緩慢釋放。需要說(shuō)明的是,在進(jìn)行數(shù)據(jù)卷刪除時(shí),一次性需要將整個(gè)數(shù)據(jù)卷的內(nèi)容均進(jìn)行刪除,才可以完成對(duì)數(shù)據(jù)卷的空間釋放??梢钥闯鲞M(jìn)行數(shù)據(jù)卷刪除需要一定的時(shí)間,而等待刪除完畢后,才可以對(duì)釋放后的空間進(jìn)行數(shù)據(jù)卷的設(shè)置和數(shù)據(jù)寫(xiě)入。
3、由此,當(dāng)存在已使用數(shù)據(jù)卷容量和寫(xiě)入數(shù)據(jù)量較大的情況時(shí),需要先將“已刪除”或“不再使用”的數(shù)據(jù)卷進(jìn)行完全釋放,而后進(jìn)行數(shù)據(jù)寫(xiě)入,但是這個(gè)過(guò)程需要耗費(fèi)大量的時(shí)間,也未能充分利用“已刪除”或“停止使用”的數(shù)據(jù)卷的潛在價(jià)值。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明實(shí)施例的目的在于提供一種數(shù)據(jù)處理方法、裝置、設(shè)備及存儲(chǔ)介質(zhì),解決當(dāng)前對(duì)“已刪除”或“不再使用”的數(shù)據(jù)卷釋放時(shí)需要耗費(fèi)大量的時(shí)間,也未能充分利用其潛在價(jià)值的問(wèn)題,具體技術(shù)方案如下:
2、在本發(fā)明實(shí)施的第一方面,首先提供了一種數(shù)據(jù)處理方法,所述方法包括:
3、響應(yīng)于用戶對(duì)停止使用的至少一個(gè)第一數(shù)據(jù)卷的回收操作,將至少一個(gè)第一數(shù)據(jù)卷合并為新的第二數(shù)據(jù)卷;
4、獲取所述第二數(shù)據(jù)卷的若干第一數(shù)據(jù)對(duì)象和每一第一數(shù)據(jù)對(duì)象的目標(biāo)狀態(tài),并根據(jù)所述目標(biāo)狀態(tài)在所述第二數(shù)據(jù)卷生成目標(biāo)數(shù)據(jù)回收位表,其中,所述目標(biāo)數(shù)據(jù)回收位表中每一目標(biāo)狀態(tài)位記錄一個(gè)第一數(shù)據(jù)對(duì)象的目標(biāo)狀態(tài),所述目標(biāo)狀態(tài)是未被回收狀態(tài)則目標(biāo)狀態(tài)位標(biāo)記為0,所述目標(biāo)狀態(tài)是已被回收狀態(tài)則目標(biāo)狀態(tài)位標(biāo)記為1;
5、根據(jù)預(yù)設(shè)的定時(shí)回收任務(wù),依次將目標(biāo)狀態(tài)位標(biāo)記為0的第一數(shù)據(jù)對(duì)象進(jìn)行刪除,并將刪除后的所述第一數(shù)據(jù)對(duì)象對(duì)應(yīng)的目標(biāo)狀態(tài)位標(biāo)記為1;
6、在確定對(duì)所述第二數(shù)據(jù)卷存在讀寫(xiě)操作的情況下,根據(jù)所述目標(biāo)數(shù)據(jù)回收位表中不同的目標(biāo)狀態(tài)位,確定針對(duì)每一第一數(shù)據(jù)對(duì)象不同的讀寫(xiě)策略。
7、可選的,所述響應(yīng)于用戶對(duì)停止使用的至少一個(gè)第一數(shù)據(jù)卷的回收操作,將至少一個(gè)第一數(shù)據(jù)卷合并為新的第二數(shù)據(jù)卷,包括:
8、響應(yīng)于用戶對(duì)停止使用的至少一個(gè)第一數(shù)據(jù)卷的回收操作,獲取每一第一數(shù)據(jù)卷的第二數(shù)據(jù)對(duì)象和第一容量;
9、根據(jù)至少一個(gè)所述第一容量的總和確定待建立的第二數(shù)據(jù)卷的第二容量;
10、從分布式塊存儲(chǔ)系統(tǒng)中劃分出與所述第二容量對(duì)應(yīng)的空閑空間;
11、在所述空閑空間內(nèi)創(chuàng)建所述第二數(shù)據(jù)卷,并將所述至少一個(gè)所述第一數(shù)據(jù)卷的第二數(shù)據(jù)對(duì)象遷移至所述第二數(shù)據(jù)卷,得到所述第二數(shù)據(jù)卷的第一數(shù)據(jù)對(duì)象。
12、可選的,所述獲取所述第二數(shù)據(jù)卷的若干第一數(shù)據(jù)對(duì)象和每一第一數(shù)據(jù)對(duì)象的目標(biāo)狀態(tài),并根據(jù)所述目標(biāo)狀態(tài)在所述第二數(shù)據(jù)卷生成目標(biāo)數(shù)據(jù)回收位表,包括:
13、獲取所述第二數(shù)據(jù)卷的若干第一數(shù)據(jù)對(duì)象;
14、獲取所述第二數(shù)據(jù)卷每一所述第一數(shù)據(jù)對(duì)象的目標(biāo)容量大小和所述第二數(shù)據(jù)卷的第二容量;
15、通過(guò)所述目標(biāo)容量大小和所述第二容量,確定所述第二數(shù)據(jù)卷中第一數(shù)據(jù)對(duì)象的目標(biāo)個(gè)數(shù),所述第一數(shù)據(jù)對(duì)象中包括攜帶數(shù)據(jù)的第三數(shù)據(jù)對(duì)象和數(shù)據(jù)為空的第四數(shù)據(jù)對(duì)象,每一所述第一數(shù)據(jù)對(duì)象的目標(biāo)容量大小相同;
16、根據(jù)所述目標(biāo)個(gè)數(shù),為所述第二數(shù)據(jù)卷生成包括目標(biāo)位數(shù)第一狀態(tài)位的初始數(shù)據(jù)回收位表;
17、為所述第一數(shù)據(jù)對(duì)象與所述第一狀態(tài)位建立一一對(duì)應(yīng)的關(guān)聯(lián)關(guān)系;
18、獲取所述第二數(shù)據(jù)卷中每一第一數(shù)據(jù)對(duì)象的目標(biāo)狀態(tài);
19、根據(jù)所述目標(biāo)狀態(tài)和所述關(guān)聯(lián)關(guān)系,對(duì)所述初始數(shù)據(jù)回收位表的第一狀態(tài)位標(biāo)記數(shù)值,得到包括記錄第一數(shù)據(jù)對(duì)象目標(biāo)狀態(tài)的目標(biāo)狀態(tài)位的目標(biāo)數(shù)據(jù)回收位表。
20、可選的,在所述根據(jù)預(yù)設(shè)的定時(shí)回收任務(wù),依次將目標(biāo)狀態(tài)位標(biāo)記為0的第一數(shù)據(jù)對(duì)象進(jìn)行刪除,并將刪除后的所述第一數(shù)據(jù)對(duì)象對(duì)應(yīng)的目標(biāo)狀態(tài)位標(biāo)記為1,包括:
21、在確定分布式塊存儲(chǔ)系統(tǒng)中數(shù)據(jù)業(yè)務(wù)處于空閑的情況下,啟動(dòng)定時(shí)回收任務(wù);
22、根據(jù)預(yù)設(shè)的定時(shí)回收任務(wù),遍歷所述第二數(shù)據(jù)卷中的目標(biāo)數(shù)據(jù)回收位表;
23、在確定所述目標(biāo)數(shù)據(jù)回收位表中的目標(biāo)狀態(tài)位標(biāo)記為1的情況下,則跳過(guò)目標(biāo)狀態(tài)位標(biāo)記為1的第一數(shù)據(jù)對(duì)象,繼續(xù)確定下一目標(biāo)狀態(tài)位的標(biāo)記數(shù)值;
24、在確定所述目標(biāo)數(shù)據(jù)回收位表中的目標(biāo)狀態(tài)位標(biāo)記為0的情況下,將目標(biāo)狀態(tài)位標(biāo)記為0的第一數(shù)據(jù)對(duì)象進(jìn)行刪除,并將刪除后的所述第一數(shù)據(jù)對(duì)象對(duì)應(yīng)的目標(biāo)狀態(tài)位標(biāo)記為1。
25、可選的,在所述在確定所述目標(biāo)數(shù)據(jù)回收位表中的目標(biāo)狀態(tài)位標(biāo)記為0的情況下,將目標(biāo)狀態(tài)位標(biāo)記為0的第一數(shù)據(jù)對(duì)象進(jìn)行刪除,并將刪除后的所述第一數(shù)據(jù)對(duì)象對(duì)應(yīng)的目標(biāo)狀態(tài)位標(biāo)記為1之后,還包括:
26、在確定所述定時(shí)回收任務(wù)被打斷的情況下,記錄被打斷時(shí)在目標(biāo)數(shù)據(jù)回收位表的遍歷位置;
27、在確定定時(shí)回收任務(wù)重新啟動(dòng)的情況下,從所述遍歷位置繼續(xù)向后遍歷。
28、可選的,所述在確定對(duì)所述第二數(shù)據(jù)卷存在讀寫(xiě)操作的情況下,根據(jù)所述目標(biāo)數(shù)據(jù)回收位表中不同的目標(biāo)狀態(tài)位,確定針對(duì)每一第一數(shù)據(jù)對(duì)象不同的讀寫(xiě)策略,包括:
29、在確定對(duì)所述第二數(shù)據(jù)卷存在讀操作的情況下,確定所述目標(biāo)數(shù)據(jù)回收位表中標(biāo)記為0的第二狀態(tài)位和標(biāo)記為1的第三狀態(tài)位,所述第二狀態(tài)位和所述第三狀態(tài)位均屬于目標(biāo)狀態(tài)位;
30、將所述第二數(shù)據(jù)卷內(nèi)的第一數(shù)據(jù)對(duì)象分為與第二狀態(tài)位對(duì)應(yīng)的第五數(shù)據(jù)對(duì)象和與第三狀態(tài)位對(duì)應(yīng)的第六數(shù)據(jù)對(duì)象;
31、若讀取的是所述第五數(shù)據(jù)對(duì)象,則返回0;
32、若讀取的是所述第六數(shù)據(jù)對(duì)象,則返回所述第六數(shù)據(jù)對(duì)象內(nèi)的目標(biāo)數(shù)據(jù)。
33、可選的,所述在確定對(duì)所述第二數(shù)據(jù)卷存在讀寫(xiě)操作的情況下,根據(jù)所述目標(biāo)數(shù)據(jù)回收位表中不同的目標(biāo)狀態(tài)位,確定針對(duì)每一第一數(shù)據(jù)對(duì)象不同的讀寫(xiě)策略,還包括:
34、在確定對(duì)所述第二數(shù)據(jù)卷存在寫(xiě)操作的情況下,確定所述目標(biāo)數(shù)據(jù)回收位表中標(biāo)記為0的第四狀態(tài)位和標(biāo)記為1的第五狀態(tài)位,所述第四狀態(tài)位和所述第五狀態(tài)位均屬于目標(biāo)狀態(tài)位;
35、將所述第二數(shù)據(jù)卷內(nèi)的第一數(shù)據(jù)對(duì)象分為與第四狀態(tài)位對(duì)應(yīng)的第七數(shù)據(jù)對(duì)象和與第五狀態(tài)位對(duì)應(yīng)的第八數(shù)據(jù)對(duì)象;
36、若在所述第七數(shù)據(jù)對(duì)象對(duì)應(yīng)的第一空間進(jìn)行寫(xiě)操作,則將待寫(xiě)入數(shù)據(jù)與所述第一空間的數(shù)值合并后填入所述第一空間,并將所述第四狀態(tài)位修改為1;
37、若在所述第八數(shù)據(jù)對(duì)象對(duì)應(yīng)的第二空間進(jìn)行寫(xiě)操作,則將待寫(xiě)入數(shù)據(jù)直接填入所述第二空間。
38、在本發(fā)明實(shí)施的第二方面,還提供了一種數(shù)據(jù)處理裝置,包括:
39、合并模塊,用于響應(yīng)于用戶對(duì)停止使用的至少一個(gè)第一數(shù)據(jù)卷的回收操作,將至少一個(gè)第一數(shù)據(jù)卷合并為新的第二數(shù)據(jù)卷;
40、第一生成模塊,用于獲取所述第二數(shù)據(jù)卷的若干第一數(shù)據(jù)對(duì)象和每一第一數(shù)據(jù)對(duì)象的目標(biāo)狀態(tài),并根據(jù)所述目標(biāo)狀態(tài)在所述第二數(shù)據(jù)卷生成目標(biāo)數(shù)據(jù)回收位表,其中,所述目標(biāo)數(shù)據(jù)回收位表中的每一目標(biāo)狀態(tài)位記錄一個(gè)第一數(shù)據(jù)對(duì)象的目標(biāo)狀態(tài),所述目標(biāo)狀態(tài)是未被回收狀態(tài)則目標(biāo)狀態(tài)位標(biāo)記為0,所述目標(biāo)狀態(tài)是已被回收狀態(tài)則目標(biāo)狀態(tài)位標(biāo)記為1;
41、刪除模塊,用于根據(jù)預(yù)設(shè)的定時(shí)回收任務(wù),依次將目標(biāo)狀態(tài)位標(biāo)記為0的第一數(shù)據(jù)對(duì)象進(jìn)行刪除,并將刪除后的所述第一數(shù)據(jù)對(duì)象對(duì)應(yīng)的目標(biāo)狀態(tài)位標(biāo)記為1;
42、第一確定模塊,用于在確定對(duì)所述第二數(shù)據(jù)卷存在讀寫(xiě)操作的情況下,根據(jù)所述目標(biāo)數(shù)據(jù)回收位表中不同的目標(biāo)狀態(tài)位,確定針對(duì)每一第一數(shù)據(jù)對(duì)象不同的讀寫(xiě)策略。
43、在本發(fā)明實(shí)施的第三方面,還提供了一種通信設(shè)備,包括:收發(fā)機(jī)、存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的程序;
44、所述處理器,用于讀取存儲(chǔ)器中的程序?qū)崿F(xiàn)執(zhí)行上述任一所述的數(shù)據(jù)處理方法。
45、在本發(fā)明實(shí)施的第四方面,還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)有指令,當(dāng)其在計(jì)算機(jī)上運(yùn)行時(shí),使得計(jì)算機(jī)執(zhí)行上述任一所述的數(shù)據(jù)處理方法。
46、本發(fā)明實(shí)施例提供的數(shù)據(jù)處理方法,響應(yīng)于用戶對(duì)停止使用的至少一個(gè)第一數(shù)據(jù)卷的回收操作,將至少一個(gè)第一數(shù)據(jù)卷合并為新的第二數(shù)據(jù)卷,實(shí)現(xiàn)將停止使用的數(shù)據(jù)卷回收再利用,有效提升存儲(chǔ)資源的利用率,降低存儲(chǔ)碎片,獲取第二數(shù)據(jù)卷的若干第一數(shù)據(jù)對(duì)象和每一第一數(shù)據(jù)對(duì)象的目標(biāo)狀態(tài),并根據(jù)目標(biāo)狀態(tài)在第二數(shù)據(jù)卷生成目標(biāo)數(shù)據(jù)回收位表,其中,目標(biāo)數(shù)據(jù)回收位表中的每一目標(biāo)狀態(tài)位記錄一個(gè)第一數(shù)據(jù)對(duì)象的目標(biāo)狀態(tài),目標(biāo)狀態(tài)是未被回收狀態(tài)則目標(biāo)狀態(tài)位標(biāo)記為0,目標(biāo)狀態(tài)是已被回收狀態(tài)則目標(biāo)狀態(tài)位標(biāo)記為1;根據(jù)預(yù)設(shè)的定時(shí)回收任務(wù),依次將目標(biāo)狀態(tài)位標(biāo)記為0的第一數(shù)據(jù)對(duì)象進(jìn)行刪除,并將刪除后的第一數(shù)據(jù)對(duì)象對(duì)應(yīng)的目標(biāo)狀態(tài)位標(biāo)記為1;在確定對(duì)第二數(shù)據(jù)卷存在讀寫(xiě)操作的情況下,根據(jù)目標(biāo)數(shù)據(jù)回收位表中不同的目標(biāo)狀態(tài)位,確定針對(duì)每一第一數(shù)據(jù)對(duì)象不同的讀寫(xiě)策略,通過(guò)設(shè)置目標(biāo)數(shù)據(jù)回收位表,可以實(shí)現(xiàn)將停止使用的數(shù)據(jù)卷按照數(shù)據(jù)對(duì)象回收利用,無(wú)需整體釋放數(shù)據(jù)卷,而且在進(jìn)行讀寫(xiě)操作時(shí),可以直接使用目標(biāo)數(shù)據(jù)回收位表中已被回收的數(shù)據(jù)對(duì)象空間,大大節(jié)約了讀寫(xiě)時(shí)間,本發(fā)明實(shí)施例中通過(guò)合并停止使用的數(shù)據(jù)卷,并引入目標(biāo)數(shù)據(jù)回收位表來(lái)優(yōu)化數(shù)據(jù)的讀寫(xiě)過(guò)程,不僅有效提高了存儲(chǔ)資源的利用率,減少了存儲(chǔ)空間的浪費(fèi),還降低了時(shí)間成本和復(fù)雜度。