MinIO与Ceph调研
MinIO
1. 基本介绍
使用Go语言开发
2. 特点
可以作为存储也可以作为云存储的网关使用,兼容AS3,部分版本支持滚动升级(仍然建议使用 mc admin update 命令升级)
3.基本数据结构
Bucket:桶,文件存储的逻辑空间,与AS3的bucket定义相同
Object:文件数据,part.1源文件,文件元数据(meta)
内部结构
Drive:数据盘
Set:数据盘集合,minIO自动将Drive按照数量进行划分
文件存储结构
DataDrives:数据盘,存储Object原始数据
ParityDrives:纠删盘,存储Object的纠错数据
空间占比1:1,即Object在MinIO中的实际空间占用是硬盘文件系统的2倍
Block:纠删码(erasure code)计算单元,>10MB则每个Block大小为10MB,<10MB则每个Block大小为Object本身的大小。文件上传流读取时串行读取到一个Block大小的Buffer中。
DataShards和ParityShards:文件上传流每读取完一个Block,就会计算出对应的纠删码,生成DataShards和ParityShards(每一个Shards都是一个Block,按照业务功能称为DataShards或ParityShards),然后将DataShard存在DataDrive中,ParityShard存在ParityDrive中
4.数据完整性
纠删,
防Bitrot(数据衰减)技术,数据写入前计算hash,读取时再计算hash,通过比对hash来判定文件完整性
Ceph
1. 基本介绍
创始人已加入红帽
2. 特点
集块存储和文件存储为一身,支持大规模扩容,可管理超过10亿甚至更多的对象,Openshift的基础,内置安全和数据保护
3.基本数据结构
4.数据完整性
说老实话,我看完ceph架构,我都不想再看下去了,小项目造不起
MinIO与Ceph优缺点比较
MinIO | Ceph | |
存储方式 |
对象存储 | 块/文件/对象存储 |
一致性 |
强一致性 | 强一致性 |
数据保护 |
纠删码(最多16块盘) | 副本/纠删码 |
学习成本 |
低 | 高 |
运维成本 |
低 | 高 |
中心节点 |
无 | 有 |
扩容方式 |
zone 只是单纯的增加存储空间 |
集群节点 扩容后性能增加 扩容需要重新平均数据分布,扩容期间性能有影响 |