System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術屬于存儲空間分配,尤其涉及一種分布式存儲的空間分配方法。
技術介紹
1、分布式存儲是一種計算機數據存儲架構,它將數據存儲在多臺服務器上,以實現數據的高可靠性、可擴展性和性能。同時,分布式存儲將分散的存儲資源構成虛擬的存儲設備。在分布式存儲中,每臺服務器都可以稱為一個存儲節點,它們通過網絡連接相互通信和協作,以實現數據的分布式存儲和管理。
2、存儲系統為寫入數據分配存儲空間有最小分配單元min_alloc_size。用戶寫入數據,存儲系統分配的大小為n*min_alloc_size,n為正整數。當寫入數據長度的范圍變化較小時,配置合適的min_alloc_size,不會出現大量空間浪費、空間碎片和元數據過多的問題。
3、但是,隨著存儲技術的發展,存儲系統的數據越來越復雜,寫入的數據長度范圍變化非常大。若min_alloc_size配置過大,寫入數據較小時,分配的存儲空間遠大于寫入的數據,從而導致空間浪費。若min_alloc_size配置過小,寫入數據較大時,分配的存儲空間需要多個最小分配單元,數據可能被存儲在多個不連續的存儲空間,讀取該數據的性能變差,同時,用于描述該數據存儲位置信息的元數據也會增加。寫入數據長度小于最小分配單元或者不是最小分配單元的整數倍,導致存儲空間浪費。寫入的數據長度遠大于最小分配單元,數據被存儲在多個不連續的存儲空間,讀取該數據的性能變差,同時,用于描述該數據存儲位置信息的元數據也會增加。
4、因此,如何對現有的分布式存儲空間分配過程進行改進,以避免寫入數據長
技術實現思路
1、本專利技術的目的在于提供一種分布式存儲的空間分配方法,用以對現有的分布式存儲空間分配過程進行改進,以避免寫入數據長度小于最小分配單元或者不是最小分配單元的整數倍,導致存儲空間浪費或者寫入的數據長度遠大于最小分配單元,數據被存儲在多個不連續的存儲空間,讀取該數據的性能變差的情況發生。
2、為解決上述技術問題,本專利技術采用的技術方案如下:
3、一種分布式存儲的空間分配方法,包括以下步驟:
4、s1:創建緩存硬盤池和數據硬盤池;
5、s2:為緩存硬盤池和數據硬盤池配置不同的最小分配單元;
6、s3:根據數據長度和數據硬盤池的冗余策略,選擇寫入的硬盤池;
7、s4:緩存硬盤池的數據進行合并,合并后寫入數據硬盤池。
8、優選的,步驟s1中創建緩存硬盤池和數據硬盤池的具體過程如下:
9、s11:創建緩存硬盤池并設置緩存硬盤池冗余策略,所述緩存硬盤池為固態硬盤ssd,用于臨時存儲數據長度較小的數據;
10、s12:創建數據硬盤池并設置數據硬盤池冗余策略,所述數據硬盤池為機械硬盤hhd,用于存儲數據長度較大或者多個數據合并后的數據。
11、優選的,所述緩存硬盤池在進行數據存儲時,所述緩存硬盤池的數據存儲冗余策略為:
12、在存儲時設置n副本,n副本指的是將待存儲的數據復制n份,存儲到不同的存儲節點,每個存儲節點的ssd數量d1根據業務性能確定;
13、當業務要求k的每秒進行讀寫操作的次數iops,存儲節點數量為n,每個ssd能提供m的每秒進行讀寫操作的次數iops,則每個存儲節點選擇d1個ssd,d1=(k*n)/m,若d1不為整數,則向上取整。
14、優選的,所述數據硬盤池在進行數據存儲時,預設有冗余策略,所述數據硬盤池的數據存儲冗余策略為:n副本或者糾刪碼;
15、糾刪碼是將數據分為k個數據塊,并進行編碼,生成m個校驗塊,有任意k個數據塊或者校驗塊以重建完整數據;每個存儲節點的hdd數量d2根據存儲數據量確定;
16、當預計存儲的數據量預計為total,存儲節點的數量為n,每個硬盤的容量s,冗余策略的數據利用率為util,則每個存儲節點選擇d2個硬盤,d2=total/(s*n*util));若d2不為整數,則向上取整。
17、優選的,步驟s2中為緩存硬盤池配置不同的最小分配單元的過程為:基于緩存硬盤池存儲的臨時數據的數據長度較小,為緩存硬盤池配置較小的最小分配單元,所述為緩存硬盤池配置較小的最小分配單元為allocate_1,allocate_1的大小為4kb或8kb或16kb或32kb;
18、數據硬盤池最小分配單元配置為allocate_2,allocate_2的大小為64kb或128kb或256kb或512kb。
19、優選的,步驟s3中根據數據長度和數據硬盤池的冗余策略選擇寫入的硬盤池的具體過程如下:
20、s31:當寫入數據長度為l時,計算數據寫入數據硬盤池的空間浪費率w;
21、s32:將計算的空間浪費率w與預設的空間浪費率閾值wt進行對比;
22、s33:當w≤wt,數據寫入數據硬盤池;當w>wt,數據寫入緩存硬盤池。
23、優選的,在步驟s31中,當若冗余策略為n副本時,計算數據寫入數據硬盤池的空間浪費率w的具體過程如下:
24、s311:計算實際占用空間r1,具體計算公式如下:
25、r1=[(l+allocate_2-1)/allocate_2]*allocate_2*n;
26、s312:計算實際空間利用率util_r1,具體計算公式如下:
27、util_r1=(r1-l)/r1*100%;
28、s313:計算理論空間利用率util_m1,具體計算公式如下:
29、util_m1=1/n*100%;
30、s314:計算空間浪費率w,具體計算公式如下:
31、w=(util_m1-util_r1)/util_m1*100%;
32、其中,[x]表示取整操作,即取x的整數部分。
33、優選的,在步驟s31中,當冗余策略為ec?k+m時,計算數據寫入數據硬盤池的空間浪費率w的具體過程如下:
34、計算實際占用空間r2,
35、r2=[(l+k*allocate_2-1)/(k*allocate_2)]*(k+m)*allocate_2;
36、計算實際空間利用率util_r2,具體計算公式如下:
37、util_r2=(r2-l)/r2*100%;
38、計算理論空間利用率util_m2,具體計算公式為:
39、util_m2=k/(k+m)*100%
40、計算空間浪費率w,具體計算公式為:
41、w=(util_m2-util_r2)/util_m2*100%。
42、優選的,步驟本文檔來自技高網...
【技術保護點】
1.一種分布式存儲的空間分配方法,其特征在于,包括以下步驟:
2.根據權利要求1所述的一種分布式存儲的空間分配方法,其特征在于,步驟S1中創建緩存硬盤池和數據硬盤池的具體過程如下:
3.根據權利要求2所述的一種分布式存儲的空間分配方法,其特征在于,所述緩存硬盤池在進行數據存儲時,所述緩存硬盤池的數據存儲冗余策略為:
4.根據權利要求2所述的一種分布式存儲的空間分配方法,其特征在于,所述數據硬盤池在進行數據存儲時,預設有冗余策略,所述數據硬盤池的數據存儲冗余策略為:n副本或者糾刪碼;
5.根據權利要求1所述的一種分布式存儲的空間分配方法,其特征在于,步驟S2中為緩存硬盤池配置不同的最小分配單元的過程為:基于緩存硬盤池存儲的臨時數據的數據長度較小,為緩存硬盤池配置較小的最小分配單元,所述為緩存硬盤池配置較小的最小分配單元為allocate_1,allocate_1的大小為4KB或8KB或16KB或32KB;
6.根據權利要求5所述的一種分布式存儲的空間分配方法,其特征在于,步驟S3中根據數據長度和數據硬盤池的冗余策略選擇寫入
7.根據權利要求6所述的一種分布式存儲的空間分配方法,其特征在于,在步驟S31中,當若冗余策略為n副本時,計算數據寫入數據硬盤池的空間浪費率W的具體過程如下:
8.根據權利要求6所述的一種分布式存儲的空間分配方法,其特征在于,在步驟S31中,當冗余策略為EC?K+M時,計算數據寫入數據硬盤池的空間浪費率W的具體過程如下:
9.根據權利要求6所述的一種分布式存儲的空間分配方法,其特征在于,步驟S4中緩存硬盤池的數據進行合并,合并后寫入數據硬盤池的具體過程如下:
...【技術特征摘要】
1.一種分布式存儲的空間分配方法,其特征在于,包括以下步驟:
2.根據權利要求1所述的一種分布式存儲的空間分配方法,其特征在于,步驟s1中創建緩存硬盤池和數據硬盤池的具體過程如下:
3.根據權利要求2所述的一種分布式存儲的空間分配方法,其特征在于,所述緩存硬盤池在進行數據存儲時,所述緩存硬盤池的數據存儲冗余策略為:
4.根據權利要求2所述的一種分布式存儲的空間分配方法,其特征在于,所述數據硬盤池在進行數據存儲時,預設有冗余策略,所述數據硬盤池的數據存儲冗余策略為:n副本或者糾刪碼;
5.根據權利要求1所述的一種分布式存儲的空間分配方法,其特征在于,步驟s2中為緩存硬盤池配置不同的最小分配單元的過程為:基于緩存硬盤池存儲的臨時數據的數據長度較小,為緩存硬盤池配置較小的最小分配單元,所述為緩存硬盤池配置較小...
【專利技術屬性】
技術研發人員:董博,田庸,符青云,
申請(專利權)人:四川省華存智谷科技有限責任公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。