Minio的容量算法及实际存储空间计算公式
集群磁盤可用容量計(jì)算
1. 數(shù)據(jù)的上傳,下載流程
1.1上傳流程:
1.先根據(jù)對(duì)象名去做一個(gè)Hash,計(jì)算出對(duì)應(yīng)的Set,然后來創(chuàng)建臨時(shí)目錄。創(chuàng)建臨時(shí)目錄的目的是為了確保數(shù)據(jù)強(qiáng)一致性,所以中間數(shù)據(jù)都會(huì)被寫入到這個(gè)臨時(shí)目錄里(直到所有數(shù)據(jù)寫完后,再統(tǒng)一把目錄寫入到最終的路徑上)
2.接下來讀數(shù)據(jù)編碼,每次最多讀10M的數(shù)據(jù)處理,然后做編碼,再被寫入到磁盤上,循環(huán)的過程就是把數(shù)據(jù)保存下來。
3.數(shù)據(jù)保存完后,再寫meta信息。
4.然后挪到最終的位置上,刪除臨時(shí)目錄。
?
1.2讀取流程:
1.先根據(jù)對(duì)象名做Hash,找到對(duì)象對(duì)應(yīng)的Set
2.然后去讀取meta信息,通過meta信息來獲得編碼的方式,然后去解碼。它是以10M數(shù)據(jù)做EC編碼,讀的時(shí)候也是逐個(gè)part解析,每個(gè)part給他做解碼,然后寫入到一個(gè)io write里面。
備注:做EC碼時(shí),只要一半的編碼塊就能還原整個(gè)對(duì)象,所以讀meta時(shí)讀了N份,但是讀數(shù)據(jù)時(shí)只要讀N/2就可以了。
Ps:最簡(jiǎn)單的理解就是 一個(gè)對(duì)象存儲(chǔ)在一個(gè)Set上面,這個(gè)Set包含16個(gè)Drive,其中一半是數(shù)據(jù)塊,一半是校驗(yàn)塊,這種方式最多能忍受一半的編碼丟失或損壞。所有編碼塊的大小是原對(duì)象的2倍,跟傳統(tǒng)多副本存儲(chǔ)方案相比,他只冗余存了一份,但可靠性更高。
?
2.MinIo 糾刪碼奇偶校驗(yàn) ( EC:N)
1.MinIO 使用 Reed-Solomon 算法根據(jù)部署中的擦除集大小將對(duì)象拆分為數(shù)據(jù)塊和奇偶校驗(yàn)塊。對(duì)于給定大小的擦除集M,MinIO 將對(duì)象拆分為N奇偶校驗(yàn)塊和M數(shù)據(jù)塊。
2.MinIO 使用該EC:N符號(hào)來表示N部署中的奇偶校驗(yàn)塊 ( )的數(shù)量。MinIO 默認(rèn)為EC:4每個(gè)對(duì)象 4 個(gè)奇偶校驗(yàn)塊。MinIO對(duì)部署中的EC:N所有擦除集和服務(wù)器池使用相同的值 。
3.MinIO 可以容忍N(yùn)每個(gè)擦除集丟失多達(dá)驅(qū)動(dòng)器并繼續(xù)執(zhí)行讀寫操作(“仲裁”)。如果N恰好等于擦除集中驅(qū)動(dòng)器的 1/2,則 MinIO 寫入仲裁要求 N+1驅(qū)動(dòng)器避免數(shù)據(jù)不一致(“裂腦”)
引入官方文檔:https://docs.min.io/minio/baremetal/concepts/erasure-coding.html#minio-ec-parity
?
3.計(jì)算方式
xxxxxxxxxx
MinIO使用Reed-Solomon來將對(duì)象分片到若干數(shù)據(jù)塊(Data block)和校驗(yàn)塊(Partity block)中。對(duì)于12磁盤組成的存儲(chǔ),一個(gè)對(duì)象可以分片到最多6個(gè)校驗(yàn)塊+6個(gè)數(shù)據(jù)塊中,最少2個(gè)校驗(yàn)塊+10個(gè)數(shù)據(jù)塊中。
數(shù)據(jù)盤變量配置:
MINIO_STORAGE_CLASS_STANDARD:設(shè)置默認(rèn)標(biāo)準(zhǔn)存儲(chǔ)類型的奇偶校驗(yàn)計(jì)數(shù),例如"EC:4"
冗余盤變量配置:
MINIO_STORAGE_CLASS_RRS:設(shè)置默認(rèn)低冗余存儲(chǔ)類型的奇偶校驗(yàn)計(jì)數(shù),例如"EC:2"
MinIO 可創(chuàng)建每組4到16個(gè)磁盤組成的糾刪碼集合。所以你提供的磁盤總數(shù)必須是其中一個(gè)數(shù)字的倍數(shù)。
MinIO會(huì)根據(jù)給定的磁盤總數(shù)或者節(jié)點(diǎn)總數(shù)選擇最大的糾刪碼集合大小,確保統(tǒng)一分布,即每個(gè)節(jié)點(diǎn)參與每個(gè)集合的磁盤數(shù)量相等。
每個(gè)對(duì)象被寫入一個(gè)EC集合中,因此該對(duì)象分布在不超過16個(gè)磁盤上。
由官方計(jì)算器和實(shí)際操作得出結(jié)論
官方可用容量計(jì)算器:https://min.io/product/erasure-code-calculator
實(shí)際測(cè)試環(huán)境操作
?
4. 最后得出存儲(chǔ)效率公式
存儲(chǔ)效率=M/(K+M)
M=校驗(yàn)塊
K=實(shí)際數(shù)據(jù)存儲(chǔ)塊
一組糾刪碼存儲(chǔ)合集不會(huì)大于16,最小是4,這也跟官方文檔中使用最少糾刪碼模式4個(gè)磁盤對(duì)應(yīng)成立.
列如:
校驗(yàn)塊為4 數(shù)據(jù)塊為12 就能算出有效存儲(chǔ)為75%, 允許故障盤數(shù)是 4塊盤
參考鏈接:
https://cooting.cn/archives/146.html
https://docs.min.io/minio/baremetal/
http://www.minio.org.cn/
https://www.jianshu.com/p/3e81b87d5b0b
minio原理和使用:https://www.jianshu.com/p/c2b43ff67df0
總結(jié)
以上是生活随笔為你收集整理的Minio的容量算法及实际存储空间计算公式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux nginx搭建文件服务器
- 下一篇: 解决关闭hdfs yarn spark