1. 块存储
块存储本质上是更特殊的对象存储,块存储将卷空间按照固定大小映射到一个对象数组中,分布式的于对象存储集群中。
2. 集中元数据vs对称式设计
2.1. 优点
对称式的分布式存储系统需要更多的研发资源,系统复杂度高。
而集中元数据的方案,复杂度低,与KODO架构类似,测试和运维皆可受益;
数据可以根据计算节点来迁移,可以更好的实现超融合架构;
方便从元数据的访问实现QOS控制。
2.2. 缺点
超大行的元数据会导致扩展性问题,导致单集群管理的机器有限,不超过300台的规模,但这问题并非不可解决,如mongodb的shard/TiKV等皆可实现元数据的平滑扩展。因此我们最终选择集中元数据的方案,元数据系统是实现的关键,我们准备调研rocksdb/mongodb/TiKV的方案。
按照集中元数据的方案,单个元数据节点可以存储20亿条元数据,可以推算出块存储的集群容量限制,每个块对象16M来计算,可以得到32PB的容量,按照三副本策略,可以得到10PB的可用容量,如果使用EC纠删码,256台机器,每台机器10*4TB盘,按照16+4方案,可以支持8PB,对于共有云和私有云都已经足够,更多容量扩展,通过集群级别的扩展即可。
3. PFD
PFD是实现整个块存储高可靠和高性能的核心部件,也是实现精简分配和快照克隆的关键。PFD使用jounal来保证高可靠,写入数据需要先使用libaio按照4k对齐sync写入journal。为了journal写入的高效,PFD会对删除和写入操作进行合并后写入。为此,PFD中有分别设有查询请求队列和更新请求队列,监听线程会根据请求类型进行分拣装入队列
4. 快照
快照和克隆是软件定义的块存储的优势,基于COW(Copy-On-Write)技术,可以实现毫秒级别的快照和克隆,同时这种增量备份的方式,极大的减少了空间的浪费,所付出的成本是多次查询元数据,延迟稍高。