开放通道SSD 是近年来提出的一种固态硬盘架构,该架构将SSD FTL上移到主机端,SSD上的数据布局和垃圾回收由存储系统软件控制,可以提供更加稳定的读写性能。
本项目在Ceph BlueStore 的基础上,针对开放通道 SSD 的特点,开发实现了面向开放通道SSD的OC-BlueStore,简化了对象数据读写流程,添加了新的设备访问层代码,并能在实际开放通道SSD上运行。OC-BlueStore针对Ceph的RBD应用场景,可以实现在垃圾回收时不产生数据迁移,从而提高Ceph RBD 设备的性能稳定性,并可以基于通道隔离机制,缓解多租户共享SSD时的读写干扰。
主要技术OC-BlueStore架构

OC-BlueStore 基于原始BlueStore ,保留了RocksDB作为元数据存储,同时简化了写入流程,以append-only方式写入数据,实现了基于顺序分配的逻辑块分配器。针对开放通道SSD 开发了新的 Device Access Layer,负责维持Segment Page的状态,完成请求LBA到SSD PPA的静态映射,以及设备的打开/关闭等功能。
LBA stripe机制

将SSD通道静态划分成不同分区供不同存储实例(OSD)使用,通过LBA stripe机制实现。写请求以4nK粒度按照RAID0方式在SSD的不同LUN上条带化,地址映射的输入是一个LBA,一个起始channel号和一个结束channel号,输出是开放通道SSD 的 PPA。写请求LBA 到不同通道PPA 的映射如图所示。该方式可以增加SSD通道使用的并发性,提升存储系统性能。此外,还可以按照通道粒度划分成不同分区供不同存储实例使用,从而减少不同存储实例间的读写干扰,保证性能隔离。
软件定义垃圾回收
OC-BlueStore实现软件定义垃圾回收,由单独的一个 GC 线程实现垃圾回收。OC-BlueStore运行时,当由写事务产生的待释放空间大小超过一定阈值时,唤醒GC线程,根据相应的垃圾回收策略,选中满足擦除条件的段,进行整段擦除操作,有效避免垃圾回收的不可控,并减少垃圾回收的读写干扰。
项目特点面向多租户的性能隔离
采用两个fio模拟两个租户,一个在RBD上进行4KB随机读取,一个在RBD上进行 128KB顺序写入,测量4KB读请求的IOPS和延迟,结果按纯读请求时的IOPS和延迟数据进行归一化。
采用基于通道的租户隔离机制后,OC-BlueStore的归一化 4K读请求IOPS与纯读时的IOPS基本保持一致,而传统Ceph BlueStore的IOPS 仅为纯读时的50%左右。
OC-BlueStore的归一化 4K 读延迟与纯读时的延迟基本相同,其中中位数延迟和99分位延迟归一化结果都在1.0左右,99.9%尾延迟的归一化结果是1.2左右,略高于纯读时的结果。传统Ceph BlueStore的延迟因为有其他租户写请求的干扰,延迟增加了1~1.5倍。
降低Ceph系统性能抖动
在连续高负载顺序写入时,基于OC-BlueStore的写入曲线非常平滑。但是基于传统Ceph的写入,由于内部垃圾回收与SSD数据迁移会导致明显的带宽跌落,其谷值带宽仅为正常写入带宽的30%左右。
木兰开源社区(https://mulanos.cn/)是2018年国家重点研发计划“云计算和大数据开源社区生态系统”项目重点成果,由中国电子技术标准化研究院牵头,联合北京大学、国防科大、联想、腾讯云,以及开源中国、北航、中科院软件所、西南大学、华为、阿里云、浪潮、新华三、中电标协、中科院东莞育成中心、湖南酷得共16家单位共同承担。木兰开源社区立足中国,面向国际,联合汇聚国内开源生态圈相关方,共同打造国内开源生态,推动本土开源项目孵化,在推动培育开源贡献文化的同时,与国内外各开源社区融合发展。