分布式块存储
块存储的业务需求
本地盘,把宿主机的物理硬盘分配给虚拟机
-
创建新虚拟机,需完整复制一份系统盘镜像数据到本地盘,导致创建时间长
-
-
将位于网络远端的快存储作为虚拟机的系统盘
-
-
正常挂载:识别块存储设备,并将文件系统落盘的读/写命令字从网卡发送到块存储设备
-
集中式块存储
FC-SAN:
问题在于性能和终端数量的扩展性
分布式块存储
使用大容量磁盘的工业标准服务器组成集群,通过多副本或EC方式实现存储的数据冗余备份
-
-
各家自研块存储:Raft算法,节点/磁盘/磁盘偏移量三元数组
分布式对象存储
-
用来高效存储检索非结构化数据(文档、图片、视频、声音)
-
-
定义存储桶(Bucket),桶内每个文件都有全局唯一标识符
-
Ceph
-
统一了三种接口的统一存储平台,上层应用支持Object、Block、File
-
数据强一致性算法,数据的所有副本都写入并返回才算写事务的完成,写的效率会差一些,所以更适合写少读多的场景。
Swift
-
-
只保障数据的最终一致性,写完2个副本后即可Commit,这就导致读操作需要进行副本的对比校验,读的效率相对较低。
-
采用一致性哈希算法完成数据分布计算,通过首次计算对象针对逻辑对象(Zone)的映射实现数据副本的故障隔离分布,然后通过哈希一致性算法完成对象在Bucket当中的分布计算,采用Ring环结构组织Bucket节点组织,数据分布不如Ceph均匀。
-
需借助Proxy节点完成对数据的访问,不同于通过客户端直接访问数据节点,相对数据的访问效率来讲,比Ceph要差一些。
商业化对象存储
-
-
-
-
通过云负载均衡服务示例对云外提供VIP,并通过VPCGW对VPC内的虚拟机提供服务发现和服务路由,实现无限横向扩展
MinIO
-
-
提供了与k8s、etcd、docker等主流容器化技术深度集成方案
-
不同MinIO集群可以组成联邦,并形成一个全局的命名空间,并且支持跨越多个数据中心。
-
-
使用纠删码和Checksum机制来防止硬件错误和静默数据污染。在最高冗余度配置下,即使丢失1/2的磁盘也能恢复数据。
分布式文件存储
JuiceFS
-
-
支持多种访问接口,包括兼容 POSIX 文件系统的接口、Hadoop Java SDK、FUSE 和 Kubernetes 等。
-
提供了本地多级缓存机制,以提高数据访问速度和吞吐量。
-
JuiceFS 具有良好的兼容性,支持 POSIX、HDFS 和 S3 API 等多种文件系统接口。