天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。
分类: 数据库开发技术
2022-11-08 15:50:44
近年来数字化转型成为各行各业的热词。行业数字化转型基于计算、存储、传输、数字传感、行业软件等一系列IT技术打通业务全流程,重新定义业务场景、业务关系和业务参与人,从而提高资源利用率,加强突发反应能力,提升整体业务效率。
对于国产芯片而言,除了制造这一大“硬挑战”外,由于国产芯片特性存在差异,在软件生态上,也存在着行业软件适配国产芯片的“软挑战”。
然而,各类企业适配软件生态的能力参差不齐,通过向企业提供IT技术与服务,以天翼云为代表的云服务商正不断完善国产芯片的软件生态。下面一起来看看天翼云bcache(块缓存)是如何适配国产芯片,助力应对“软挑战”的。
bcache是什么?
存储,是数字化转型的IT数据仓库。全球行业数字化转型催生出巨大的存储需求,据国际数据公司IDC预测,到2025年全球数据总量将达175ZB,因此,企业需要高性能的存储解决方案来应对强劲的存储需求。但在存储领域,高性能则意味着单位容量价格高,从而导致使用成本增加;单位容量价格低则意味着性能无法满足需求。
如何在高性能和高成本之间折中?存储业界认为:大部分业务系统的IO模型都满足局部性原理,因此使用小容量的高速存储设备作为大容量低速存储设备的缓存是一种解决方案,在某些业务场景下可以同时满足高性能和低单位容量价格的需求。
bcache (block cache) 就是一种块缓存存储加速解决方案,包含Linux内核中的通用块层的驱动模块和用户态工具。它允许一个高速的块设备作为一个或多个慢速块设备的缓存,是一种可以提升慢速块设备性能的存储加速解决方案。下图是使用SSD作为HDD缓存的块设备加速解决方案架构图:
bcache运行在国产芯片上的痛点
bcache在Linux内核的3.10版本已进入Linux内核主线,不过在2021年11月之前,在不支持4K分页的国产CPU服务器上使用bcache,虽然attach设备命令成功,但是显示cache设备和主设备没有联系,重启后bcache盘丢失。如下演示了64K PAGE_SIZE下使用bcache遇到的问题现象:
1.getconf PAGE_SIZE获取系统的PAGE_SIZE为64K
2.格式化主存储设备
3. 格式化cache设备
4. bcache映射关系显示异常
5. lsblk命令显示正常
6. 重启后bcache设备消失
天翼云bcache如何解决痛点
我们以某国产CPU上运行Linux 4.19内核版本为基础,描述天翼云bcache如何解决上述痛点,从而为完善国产芯片的软件生态添砖加瓦。
01分析原因
天翼云分析了bcache、buffer_head、pagecache后,发现了社区版本的问题所在:社区版本在64K page使用内核pagecache中的page时,出现偏移错误,导致一旦出现超级块的更新(如attach)操作,pagecache中的数据将和磁盘中的数据不一致,从而出现“丢失bcache设备特征——magic信息”的情况,导致重启后bcache设备丢失。
02天翼云解决方案
2021年11月,天翼云研发团队在分析清楚了bcache、buffer_head和pagecache三者之间的关系后,解决了不支持4K分页的国产CPU服务器重启后bcache设备丢失的问题,方案如下:
03同步社区后形成解决方案
2022年10月5日,Linux内核从long term版本5.10.147开始,解决了不支持4K分页的国产CPU服务器重启后bcache设备丢失的问题,可以backport Linux内核社区的解决方案,如下:
天翼云bcache目前已适配多款国产CPU,如龙芯CPU、兆芯CPU、海光CPU、飞腾CPU、Kunpeng CPU等,实现IO性能和x86架构的CPU性能持平,为使用国产CPU承载IT系统的客户提供了性价比更高的存储产品选择。
同时,天翼云bcache优化了社区bcache性能归零和长时间运行碎片等多方面的短板,性能提升超过20%。经过天翼云存储团队的分析和调整,基于Linux 4.19内核,3节点ceph,128并发,8KB,100%写,随机IO,IOPS提升超过20%,平均时延从4.9ms降至3.5ms,客户体验明显提升。
bcache性能对比图
未来,天翼云将继续坚持科技创新,加大关键核心技术自主攻关,推进国产软硬件产品升级,以安全可信、自主可控的新一代云计算基础设施底座,助推中国数字经济高质量发展。