本申請實施例涉及數據處理,尤其涉及一種數據存儲的方法、裝置、計算機設備及計算機可讀存儲介質。
背景技術:
1、目前的糾刪碼在存儲系統應用時,一般都是采用離線存儲的方式。比如,文件或對象先寫入一個副本集群,然后為了存入糾刪碼集群,需要遍歷文件或者對象,將數據用離線的方式遷移到糾刪碼存儲系統。但是離線存儲的方式,需要設計兩套存儲系統,即副本系統和糾刪碼系統;當副本數據遷移到糾刪碼系統的時候,會產生額外的io,給系統帶來額外的負載;而且會浪費一部分存儲空間,用來部署副本存儲系統。
2、此外,糾刪碼存儲系統也有在線即online的存儲方式。online方式的糾刪碼存儲會把文件或對象按照條帶大小進行切分,切分為若干個條帶后,分別進行編碼,然后存儲到分配好的存儲節點。但是,online的糾刪碼存儲系統,對于每個文件或對象,都會產生由于末尾補齊導致的存儲資源浪費問題。在小文件場景下,存儲資源的浪費非常嚴重。而如果為了降低存儲浪費,通常會降低單個條帶數據存儲量,減少單個分片的大小,這導致了一個對象或者文件需要更多的元數據量,給存儲系統的元數據設計帶來更大的難度和復雜度。
技術實現思路
1、本申請實施例的目的是提供一種數據存儲的方法、裝置、計算機設備及計算機可讀存儲介質,用于解決以下問題:如何降低糾刪碼存儲帶來的存儲資源的浪費,以及減少額外的系統負載的問題。
2、本申請實施例的一個方面提供了一種應用于存儲網關,所述存儲網關包含基于同一套存儲體系部署的多個存儲節點和糾刪碼存儲系統,所述方法包括:
3、響應于接收到的數據存儲請求,按照預設格式將所述數據存儲的請求中攜帶的數據存儲到所述多個存儲節點中;
4、根據所述糾刪碼存儲系統的編碼參數從所述多個存儲節點中確定第一數量的數據對象;
5、針對所述第一數量的數據對象生成第二數量的校驗數據;
6、將所述第一數量的數據對象和第二數量的校驗數據存儲到所述糾刪碼存儲系統分配的數據塊中。
7、可選地,所述按照預設格式將所述數據存儲的請求中攜帶的數據存儲到所述多個存儲節點中,包括:
8、從所述多個存儲節點中確定第一節點,以及一個或多個第二節點;
9、按照預設格式將所述數據存儲的請求中攜帶的數據存儲到所述第一節點中;
10、將所述第一節點中存儲的數據同步到所述一個或多個第二節點中。
11、可選地,所述按照預設格式將所述數據存儲的請求中攜帶的數據存儲到所述第一節點中,包括:
12、在所述第一節點中創建預設數量的文件目錄;
13、按照預設格式對所述數據存儲的請求中攜帶的數據進行編碼,并將編碼后的數據通過hash的方式存儲到所述預設數量的文件目錄中。
14、可選地,在所述將所述第一節點中存儲的數據同步到所述一個或多個第二節點中的步驟之后,所述方法還包括:
15、生成所述第一節點和所述一個或多個第二節點中存儲的數據對應的元數據信息。
16、可選地,所述根據所述糾刪碼存儲系統的編碼參數從所述多個存儲節點中確定第一數量的數據對象,包括:
17、根據所述糾刪碼存儲系統的編碼參數,從所述多個存儲節點中隨機選擇得到第一數量的目標節點;
18、分別從所述第一數量的目標節點所存儲的數據中確定第一數量的數據對象。
19、可選地,所述方法還包括:
20、從所述多個存儲節點所存儲的數據中,分別確定每一個所述數據對象對應的一個或多個副本文件,并刪除所述一個或多個副本文件。
21、可選地,所述方法還包括:
22、更新每一個所述數據對象對應的元數據信息。
23、可選地,所述糾刪碼存儲系統的編碼參數為(n,k),其中,所述n用于表示編碼數據的長度,所述k用于表示數位的長度;所述第一數量為k個,所述第二數量為n-k個。
24、可選地,所述將所述第一數量的數據對象和第二數量的校驗數據存儲到所述糾刪碼存儲系統分配的數據塊中,包括:
25、根據所述數據對象的大小從糾刪碼存儲系統對應的磁盤中確定n個數據塊;
26、將k個所述數據對象拷貝到所述n個數據塊中排序在前的k個數據塊中;
27、將n-k個所述校驗數據存儲到所述n個數據塊中排序在后的n-k個數據塊中。
28、本申請實施例的一個方面又提供了一種數據存儲的裝置,應用于存儲網關,所述存儲網關包含基于同一套存儲體系部署的多個存儲節點和糾刪碼存儲系統,所述裝置包括:
29、副本存儲模塊,用于響應于接收到的數據存儲請求,按照預設格式將所述數據存儲的請求中攜帶的數據存儲到所述多個存儲節點中;
30、數據對象確定模塊,用于根據所述糾刪碼存儲系統的編碼參數從所述多個存儲節點中確定第一數量的數據對象;
31、校驗數據生成模塊,用于針對所述第一數量的數據對象生成第二數量的校驗數據;
32、糾刪碼存儲模塊,用于將所述第一數量的數據對象和第二數量的校驗數據存儲到所述糾刪碼存儲系統分配的數據塊中。
33、本申請實施例的一個方面又提供了一種計算機設備,所述計算機設備包括存儲器、處理器以及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執行所述計算機程序時實現如上述的數據存儲的方法的步驟。
34、本申請實施例的一個方面又提供了一種計算機可讀存儲介質,所述計算機可讀存儲介質內存儲有計算機程序,所述計算機程序可被至少一個處理器所執行,以使所述至少一個處理器執行所述計算機程序時實現如上述的數據存儲的方法的步驟。
35、本申請實施例提供的數據存儲的方法、裝置、設備及計算機可讀存儲介質,通過基于同一套存儲體系部署多個存儲節點和糾刪碼存儲系統,實現利用簡易的多副本的cache機制存儲用戶通過s3上傳的數據文件或者對象,使得用戶上傳的數據不再需要大量的cpu進行編解碼的計算,數據寫入和控制的過程分離,降低網關機器因為寫入副本導致的多倍流量。而且,在將存儲節點中的副本存儲數據轉化為糾刪碼存儲時,不需要重新遷移數據文件或對象,直接基于block塊為粒度進行糾刪碼存儲,只需要編碼后,新寫入校驗塊,即可完成副本存儲轉糾刪碼存儲的操作,從而降低糾刪碼存儲帶來的存儲資源的浪費的問題。
1.一種數據存儲的方法,其特征在于,應用于存儲網關,所述存儲網關包含基于同一套存儲體系部署的多個存儲節點和糾刪碼存儲系統,所述方法包括:
2.根據權利要求1所述的數據存儲的方法,其特征在于,所述按照預設格式將所述數據存儲的請求中攜帶的數據存儲到所述多個存儲節點中,包括:
3.根據權利要求2所述的數據存儲的方法,其特征在于,所述按照預設格式將所述數據存儲的請求中攜帶的數據存儲到所述第一節點中,包括:
4.根據權利要求2所述的數據存儲的方法,其特征在于,在所述將所述第一節點中存儲的數據同步到所述一個或多個第二節點中的步驟之后,所述方法還包括:
5.根據權利要求1所述的數據存儲的方法,其特征在于,所述根據所述糾刪碼存儲系統的編碼參數從所述多個存儲節點中確定第一數量的數據對象,包括:
6.根據權利要求1所述的數據存儲的方法,其特征在于,所述方法還包括:
7.根據權利要求6所述的數據存儲的方法,其特征在于,所述方法還包括:
8.根據權利要求1所述的數據存儲的方法,其特征在于,所述糾刪碼存儲系統的編碼參數為(n,k),其中,所述n用于表示編碼數據的長度,所述k用于表示數位的長度;所述第一數量為k個,所述第二數量為n-k個。
9.根據權利要求8所述的數據存儲的方法,其特征在于,所述將所述第一數量的數據對象和第二數量的校驗數據存儲到所述糾刪碼存儲系統分配的數據塊中,包括:
10.一種數據存儲的裝置,其特征在于,應用于存儲網關,所述存儲網關包含基于同一套存儲體系部署的多個存儲節點和糾刪碼存儲系統,所述裝置包括:
11.一種計算機設備,所述計算機設備包括存儲器、處理器以及存儲在存儲器上并可在處理器上運行的計算機程序,其特征在于,所述處理器執行所述計算機程序時用于實現權利要求1至9中任意一項所述的數據存儲的方法的步驟。
12.一種計算機可讀存儲介質,其特征在于,所述計算機可讀存儲介質內存儲有計算機程序,所述計算機程序可被至少一個處理器所執行,以使所述至少一個處理器執行權利要求1至9中任意一項所述的數據存儲的方法的步驟。