2.10. Ceph BlueStore
BlueStore
是 Ceph 的下一代存储实施。作为存储设备的市场,存储设备的市场现在包括固态驱动器或 SSD,以及 PCI Express 或 NVMe 的不易失性内存,它们在 Ceph 中体现了 FileStore
存储实施的一些限制。虽然 FileStore
对 SSD 和 NVMe 存储有很多改进,但其他限制仍存在。在这两个服务器组中,增加放置组仍保持计算成本,而双写权仍保持计算。虽然 FileStore
与块设备中的文件系统交互,BlueStore
则消除了间接层并直接使用对象存储的原始块设备。BlueStore
在小分区中使用非常轻量级的 BlueFS
文件系统,用于其 k/v 数据库。BlueStore
消除了代表放置组的目录范式,即代表对象和代表元数据的文件。BlueStore
还消除了 FileStore
的双写负面效果,因此在大多数工作负载下,BlueStore
写入操作的速度大约会快两倍。
BlueStore
存储数据,如下所示:
-
对象数据: 在
BlueStore
中,Ceph 将对象存储在原始块设备上作为块。存储对象数据的原始块设备的一部分不包含文件系统。文件系统的遗漏消除了间接的层,从而提高了性能。但是,其中大部分的BlueStore
性能改进来自 block 数据库和 write-ahead 日志。 -
Block Database: 在
BlueStore
中,块数据库处理对象语义,以保证 一致性。对象的唯一标识符是 block 数据库中的一个键。block 数据库中的值由一系列块地址组成,它们引用所存储的对象数据、对象的 PG 和对象元数据。块数据库可能驻留在存储对象数据的同一原始块设备的BlueFS
分区上,或者它可能驻留在单独的块设备上,通常当主块设备是硬盘,并且 SSD 或 NVMe 将提高性能。块数据库对FileStore
提供了很多改进;即,BlueStore
的键/值语义不会影响文件系统 XATTR 的限制。BlueStore
可以在块数据库中快速将对象分配到其他放置组,而无需将文件从一个目录移动到另一个目录(如FileStore
中)的开销。BlueStore
还引入了新功能。块数据库可以存储所存储对象数据的校验和及其元数据,允许每个读取的完整数据校验和操作比定期清理更加高效,从而检测位漫长。BlueStore
可以压缩对象,而块数据库可以存储用于压缩对象理解的算法,读取操作可选择用于解压缩的相应算法。 -
Write-ahead Log: 在
BlueStore
中,write-ahead 日志确保 Atomicity,类似于FileStore
的日志记录功能。与FileStore
一样,BlueStore
会记录每个事务的所有方面。但是,BlueStore
write-ahead 日志或 WAL 可以同时执行此功能,从而消除了FileStore
的双写负面影响。因此,对于大多数工作负载的写操作,BlueStore
的速度大约是FileStore
的两倍。BlueStore 可以在同一设备上部署 WAL 来存储对象数据,或者可以在另一个设备上部署 WAL,通常是主块设备是硬盘,而 SSD 或 NVMe 将提高性能。
注意
如果不同的设备比主存储设备快于主存储设备,则只有在单独的块设备中保存块数据库或 write-ahead 日志会很有用。例如,SSD 和 NVMe 设备通常比 HDD 快。由于工作负载中的差异,将块数据库和 WAL 放置到单独的设备中也可能具有性能优势。