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