分布式存储系统之Ceph基础( 三 )


File Store  和 Blue Store

分布式存储系统之Ceph基础

文章插图
什么是file store呢?file store是传统ceph存储对象的方法 , 它依赖于xfs文件系统(ext4有bug和缺陷 , 会导致数据丢失 , 所以ceph只支持xfs上使用file store);通过上述的描述 , 我们知道ceph不管是什么客户端提交的对象数据 , 最终都会存储到osd所在主机的硬盘上;那么问题来了 , osd所在主机的磁盘是怎么被osd管理的呢?传统ceph是将对应磁盘格式化分区挂载在osd所在主机的文件系统 , 被osd所在主机以一个目录的形式表示;即用户存储的对象数据 , 最后会被存放为一个文件的形式存放在osd所在主机的磁盘上;这也意味着我们需要存放文件本身的元数据和数据;除此之外对象本身也有数据和元数据 , 那么对象本身的数据和元数据是怎么存放的呢?file store是是将对象的元数据存放在leveldb(早期ceph版本)中 , 数据存放在文件系统的数据区;简单讲file store就是将对象的元数据存放在leveldb中 , 数据存放在osd所在主机的文件系统的数据区中 , 中间有文件系统做转换的过程;而blue store将osd所在主机的磁盘不格式化分区 , 而是直接用裸设备硬盘被osd识别和管理;在osd所在主机对应osd进程会将自己管理的磁盘中一小部分格式化为bluefs文件系统 , 用于安装使用rocksdb;即客户端提交的对象数据 , 对象本身的元数据会被存放在rocksdb中 , 数据会被直接存放在磁盘上(由osd进程直接管理数据格式等 , 不会存放为文件);rocksdb为了管理它自己本身的数据持久化 , 它也会维护一个日志文件 , 类似redis的aof;这样一来blue store的方式存储对象数据 , 在磁盘上就会存在三种数据 , 第一种是对象本身的数据 , 第二种是对象的元数据 , 第三种就是rocksdb的日志文件;ceph为了使存储的数据更高效 , 它支持将blue store方式的三种数据分别存放不同的磁盘 , 如下图
分布式存储系统之Ceph基础

文章插图
提示:如果是单块硬盘 , 那没得说三种数据直接存入到一块磁盘上;如果是两块磁盘 , 我们可以将blue store的日志数据和对象元数据存放在一个高性能的磁盘上 , 如nvme , ssd上 , 将对象数据存放在一个大的机械硬盘上;当然也可以将blue store的日志文件存放在高性能磁盘上 , 对象的元数据和数据存放在机械硬盘上;如果有三块硬盘 , 我们可以将blue store的日志数据存放在高性能磁盘上 , 比如512M的nvme的磁盘;使用1G或2G的ssd来存储对象的元数据;用机械硬盘来存储对象数据;
【分布式存储系统之Ceph基础】

经验总结扩展阅读