技术创新的背后经历了什么
时间:2022-03-11 23:27:01 | 来源:行业动态
时间:2022-03-11 23:27:01 来源:行业动态
针对上面提到的问题,杉岩研发团队一开始评估过在最新的BlueStore中开发一个用户态的SSD Cache来解决,但是通过分析发现,这个工作量并不小,而且在已经比较复杂的BlueStore的IO路径上增加一个支持WriteBack模式的Cache功能,严重增加了BlueStore的复杂度,在代码可维护性及功能稳定性方面都是一个比较大的挑战,更重要的是,这样开发出来的带有Cache功能的ObjectStore与Ceph社区的方向是背道而驰的,社区之所以在设计BlueStore之初不考虑加入SSD Cache功能,其中一个原因就是混合存储毕竟只是一个过渡,全闪存会成为未来的主流。
那么怎样以经济高效的方式实现一个能够感知Ceph集群内部各种数据类型的SSD Cache呢?杉岩的AgileCache给出了完美的答案。SandStone AgileCache是一个Cache框架,兼容主流的内核态Cache,在Cache模块之上,引入了杉岩自研的内核态direct-io模块,负责将用户态的数据类型标记下传到内核Cache层,这种从用户态往内核态Cache传递IO标记的方法我们称之为cadvise。
有了cadvise标记,我们就打通了Cache的任督二脉,使得Cache可根据标记完全区分OSD的各种数据类型,比如BlueFS下来的数据,我们统一标记成BlueStore的METADATA,优先缓存;集群内部的恢复流量,我们可标记成DONTNEED,提示Cache模块不缓存直接写到后端HDD盘,预留出宝贵的SSD资源。