BlueStore的意义
1. 解决了本地文件系统的依赖
FileStore为了解决本地文件系统本身不支持数据或元数据的事务操作接口,实现了FileJournal功能,所有的事务都需要先写到FileJournal中,之后才会写入对应的文件中,以此来保证事务的原子性,但是这导致了数据“双写”的问题,造成至少一半磁盘带宽的浪费,导致了IO写放大问题;
ceph的数据被划分为object存放,object以32位的hash值进行标识,ceph在进行scrubbing、backfill或者recovery时都需要根据hash值遍历这些object;POSIX文件系统不提供有序的文件遍历接口,为此FileStore根据文件的数量和hash的前缀将object划分到不同的子目录;(当目录下的文件个数>100个时,拆分子目录,当所有子目录下的文件个数<50个时,将合并到上级目录)。
2. 同一个OSD下所有对象都共享一个扁平的寻址空间,解决了扩容时PG分裂导致的OSD中的对象在新老文件夹之间的迁移
3. 解决了本地文件系统无法使用spdk技术读写NVMe盘问题
4. 数据和元数据无法在FileStore中彻底分离问题
5.由于FileStore自身无法控制本地文件系统的刷盘行为,导致的流控机制不完整导致IOPS和带宽抖动
6.FileStore频繁syncfs系统调用导致CPU利用率居高不下