當前位置:法律諮詢服務網 - 企業資訊 - 分布式存儲極簡藝術Minio解析

分布式存儲極簡藝術Minio解析

?MinIO 對象存儲系統是為海量數據存儲、人工智能、大數據分析而設計,基於

Apache License v2.0 開源協議的對象存儲系統,它完全兼容 Amazon S3 接口,單個對象的最大可達 5TB,適合存儲海量圖片、視頻、日誌文件、備份數據和容器/虛擬機鏡像等。作為壹個開源服務,MinIO 在設計上汲取了Glusterfs的相關經驗不教訓,系統復雜度上作了大量簡化,目前大小只有40+M,部署只需要壹個命令即可完成!另外,minio舍棄了傳統分布式存儲擴容所需要的遷移流程,采用聯盟模式添加集群的方式,極大簡化了擴容流程;除此之外,minio還具有糾刪編碼、比特位保護、單寫多讀(worm)、下面來依次簡要解析壹下Mioio的特點及具體實現:

?元數據和數據壹起存放在磁盤上。元數據以明文形式存放在元數據文件裏(xl.json)。假定對象名字為key_name, 它所在桶的名字是bucket_name, disk路徑就是/disk,那麽存儲路徑就是:/disk/bucket_name/key_name,windows下C盤存放桶名為test,對象名為minio.exe示例如圖:

其中part.1是實際存儲數據(單機模式為原生數據,分布式為糾刪碼分塊),xl.json是如下所示的json字符串:

?在同壹集群內,MinIO 自己會自勱生成若幹糾刪組,用於分布存放桶數據。壹個糾刪組中的壹定數量的磁盤發生的故障(故障磁盤的數量小於等於校驗盤的數量),通過糾刪碼校驗算法可以恢復出正確的數據。MinIO 集成了 Reed-Solomon 糾刪碼庫,MinIO 存儲對象數據時,首先把它分成若幹等長的片段(對於大對象,默認按 5MB 切片),然後每壹個片段會糾刪算法分成若幹分片,包括數據分片不校驗分片,每個分片放置在壹個糾刪組的某個節點上。對象的每壹個數據分片、校驗分片都被“防比特位衰減”算法所保護。

?MinIO 會根據對象名(類似於文件系統的全路徑名),使用 crc32 哈希算法計算出壹個整數。然後使用這個整數除以糾刪組的個數,得到壹個余數。這個余數,可以作為糾刪組的序號,這樣就確定了這個對象所在的糾刪組。MinIO 采用 CRC32 哈希算法,不 glusterfs 的Davies Meyer哈希算法(性能、沖突概率不md4, md5相近)不壹樣的是,CRC32算法的哈希值分布較不均勻,但運算速度極快,高出 md4 數倍。相對於容量均衡,MinIO 更看重數據的寫入速度。

糾刪組如何配置?

官方文檔說明如下:

?也就是說糾刪組的總大小只能從這7中情況中根據妳提供的盤的個數(或者說路徑個數)來自動選取最大值的,我們 不能靈活地配置m+k糾刪存儲格式。但這樣說又不是很準確 ,因為雖然不能配置任意的m+k,但是在系統已經選取好擦除編碼集的的個數後(也就是m+k),可以使用storage class存儲類來自定義m和k的數量,默認是1:1的。

存儲類:

?MinIO支持配置兩種存儲類別,精簡冗余類別和標準類別,默認是標準類別(1:1),可以在啟動MinIO服務器之前使用設置的環境變量來定義這些類。使用環境變量定義每個存儲類別的數據和奇偶校驗磁盤後,您可以 在上傳對象時通過請求元數據字段設置對象的存儲類別x-amz-storage-class 。然後,MinIO服務器通過將對象保存在特定數量的數據和奇偶校驗磁盤中來兌現存儲類。具體配置和使用可以參考官方文檔 /minio/minio/tree/master/docs/erasure/storage-class

傳統的擴展方式的劣勢

?通過增加節點來擴展單集群,壹般需要進行數據均衡,否則群集內各存儲節點會因負載不均而出現新的瓶頸。除了數據均衡操作的時機這個問題以外,在均衡過程中壹般需要仍存儲使用率高的節點吐使用率低的節點遷移數據。當集群擴容後,大量已經寫入的文件落點會出現改變,文件需要遷移到真實的落點。當存儲系統容量比較大時,則會發生大量的文件/對象進行遷移,遷移過程可能由於占用大量資源而導致上層應用性能下降。而且當文件/對象遷移過程中,機器故障可能會導致壹些意想不到的情冴,尤其是有大量業務的時候。當然針對此類問題,Gluterfs之類的文件系統有壹些比較復雜的處理辦法。

不支持擴展優勢

  • 上一篇:反詐工作年度總結報告10篇
  • 下一篇:服裝設計與工程專業就業方向與就業前景怎麽樣
  • copyright 2024法律諮詢服務網