有云存储团队公布 Ceph 中最严重数据不一致 BUG!

简介:

触发场景

目前,块存储服务是Ceph存储中被使用的最普遍的服务之一,通过块存储服务,可以向客户端以使用块设备一样访问Ceph集群。然而,目前在使用块存储服务时,尤其是OpenStack与Ceph对接时,如果没有严格的控制Ceph端的对象大小(使用 >= 8MB对象时),将有可能导致严重的数据不一致情况,该异常由于XFS文件系统本身对Fiemap的支持特性导致的。

XFS使用fiemap时,当extents数量大于1364时,通过ioctl的FS_IOC_FIEMAP接口,获取的extents数量上限为1364,导致超出部分extents数据获取不到。这将导致,在开启fiemap时,Ceph集群进行recovery与backfill之后,产生大量数据不一致的情况,也是迄今为止Ceph中影响最大的,最严重的数据不一致BUG。

由于fiemap BUG,碎片化对象在recovery与backfill之后(fiemap 获取不正确的数据),从而使的恢复的对象数据与原对象数据不一致。而恢复后的副本若成为主副本,则可能发生静默读错误,并且如果使用Ceph策略自动修复对象(repair object之后),可能将错误数据覆盖至正确数据,数据将永远损毁。在某些情况下,还会触发对象永远处于inconsistent状态。

复现方式

初始化大量extents碎片文件test,使其成为一个拥有3999个extents的碎片文件。

通过fiemap系统调用,获取这些extents
image

编译g++ do_fiemap.cc -o do_fiemap

通过该程序可以打印出可以获取的到fiemap extents, do_fiemap test,通过xfs_bmap test 打印出真正的extents数量后,进行比较。

image

可以看到,我们最先写了2000个extents,并通过xfs_bmap获取到了 2000个有内容的extents,但是通过fiemap系统调用,只获取到了1364个有数据的extents,所以在ceph中使用fiemap系统调用在某些情况下导致数据一致性BUG。

修复方案
1)目前,在使用块存储使用场景时,通常情况下,默认使用4MB对象。在无特殊情况下,不用使用大于4MB 对象的RBD 镜像。

2)在I版以后,通过新的系统调用,seek_data, seek_hole,可以避免触发该BUG,防止extents过多时使用fiemap调用产生的问题

image

这组系统调用,可以让使用者通过while循环,反复的发现文件中的data 与 hole,从而组织出一个文件中真正存在的数据,能够避免产生与fiemap系统调用类似的BUG,又保证了recovery或者clone时候只复制有用数据,而反复的系统调,应该会带来一定性能上的影响,请读者们自行测试。

目前,在I版本以后的ceph中,提供参数filestore_seek_data_hole,来启用该功能。当filestore_seek_data_hole 与 filestore_fiemap同时设置时,只用文件系统支持seek_data_hole,那么就会先通过seek_data_hole方式来获取文件的extents,所以在I版本以后的ceph中,应启用filestore_seek_data_hole功能来替代filestore_fiemap 功能。

3)对于已经使用8MB,16MB 甚至更大对象大小的RBD镜像,请暂时设置禁用Fiemap功能,并等待后续版本修复。

文章转载自 开源中国社区 [http://www.oschina.net]

相关实践学习
块存储快速入门
块存储是阿里云为云服务器ECS提供的块设备产品。通过体验挂载数据盘、分区格式化数据盘(Linux)、创建云盘快照、重新初始化数据盘、使用快照回滚云盘和卸载数据盘等功能,带您快速入门块存储。
目录
相关文章
|
监控 Devops jenkins
2022 开源代码状态调查报告:最受欢迎 5 大自动化和编排技术, Puppet 第一,Kubespray 热度增幅最高
2022 开源代码状态调查报告:最受欢迎 5 大自动化和编排技术, Puppet 第一,Kubespray 热度增幅最高
191 0
2022 开源代码状态调查报告:最受欢迎 5 大自动化和编排技术, Puppet 第一,Kubespray 热度增幅最高
|
容器 Kubernetes Cloud Native
云原生生态周报 Vol. 14 | K8s CVE 修复指南
业界要闻 1.Mesosphere 公司正式更名为 D2IQ, 关注云原生。 Mesosophere 公司日前发布官方声明正式更名为:D2iQ(Day-Two-I-Q),称关注点转向 Kubernetes 与云原生领域, 并会继续将“Mesosphere”作为产品技术和品牌的一部分。
|
安全 大数据
盘古安全团队推出Janus移动安全威胁数据平台
本文讲的是盘古安全团队推出Janus移动安全威胁数据平台,4月25日下午,国内知名移动安全研究团队盘古在上海举行发布会,推出了酝酿许久的新产品——国内首个移动安全威胁数据平台Janus。
1994 0
|
存储 块存储
分布式存储--块存储 (盘古团队持续招聘中)
盘古团队火热招聘中,欢迎自荐、推荐、转岗跳槽,快到碗里来!
6900 0
|
人工智能 运维 安全
两份报告 一次企业开源的思考
“开源软件竞争力”,正成为企业的核心关注焦点。但不妨放大了看,不仅仅是因为开源软件吞噬了世界,开源的理念,也正在深入每一家企业、每一个组织,让其具有强大的开放力、创造力和成长动力。
|
容器 Kubernetes 安全
云原生生态周报 Vol. 15 | K8s 安全审计报告发布
业界要闻 1.CNCF 公布 Kubernetes 的安全审计报告 报告收集了社区对 Kubernetes、CoreDNS、Envoy、Prometheus 等项目的安全问题反馈,包含从一般弱点到关键漏洞。
|
存储 网络安全 Shell