有云存储团队公布 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

编译g++ do_fiemap.cc -o do_fiemap

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

可以看到,我们最先写了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调用产生的问题

这组系统调用,可以让使用者通过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]

时间: 2024-07-30 16:56:38

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

2015年:公有云存储服务提供商集体发力

在微软发布Azure文件存储服务的同时,亚马逊也升级了其文件系统存储.此外,Google也发布了cold storage(即,针对非常用数据的存储)服务,以此和亚马逊的Glacier备份服务进行竞争. 为了响应市场日益增长的计算能力和数据管理需求,亚马逊.微软和Google三家公有云服务巨头在2015年纷纷加强自己的存储服务. 与之前几年的情况不同,公有云存储服务提供商不再仅仅凭价格优势来吸引客户,技术上的差异化日益成为了服务的卖点. 微软方面,同样对其存储云服务进行了升级,其中包括对StorS

基于混沌序列的公有云存储隐私保护机制

基于混沌序列的公有云存储隐私保护机制 叶薇  李贵洋 以低开销实现公有云存储中的数据隐私保护及密钥管理,提出一种基于Logistic混沌序列的公有云存储隐私保护机制.根据云中数据的存储特点,综合使用一维.二维Logistic混沌系统及数据分割技术,通过不同的密钥生成方法,提供不同级别强度的隐私保护.实验结果表明,该方法可以在保护外包数据隐私的同时,有效降低密钥管理难度. 基于混沌序列的公有云存储隐私保护机制

分布式存储--块存储 (盘古团队持续招聘中)

业务 盘古是阿里云自研的分布式存储平台,承接了整个阿里云的存储业务,拥有海量的用 户.当前盘古块存储团队主要对接阿里云的云盘,阿里集团数据库,中间件,docker 等业务和团队对分布式块设备的需求.主要的产品形态包括SSD云盘,混合存储云盘, SATA云盘,docker 数据卷,系统盘云化等.目前无论是收费用户数.营收.数据量. 机器规模 在国内都无出其右.而且发展迅猛,每年都是超过100%的增长. 团队&文化 团队成员都是自我驱动型的,大家都坚持用事实,用数据说话,沟通协作便捷高效. 业务飞速

浅析私有存储云在企业中优势与安全性

文章讲的是浅析私有存储云在企业中优势与安全性,随着数据不断以指数形式增加,人们已经不可能降低数据的存储量,因此,多数企业为了提高系统效率,对已有基础设施进行日常维护和升级,以及对现有的基础架构引用动态架构技术,以提高可伸缩性.这包括将服务器和存储技术混合.非破坏性地添加和移除存储设备以及随需应变;在不宕机的情况下转移数据的能力;提供多层次业务服务的能力,以在整个企业内部满足可用性或者合规性的要求. 实现这些目标需要一个灵活.易扩展.易管理的存储技术.对于很多企业来说,私有存储云就是解决发,通过对

企业公有云存储选择需要注意哪些事情?

[天极网服务器频道6月13日消息]在使用云架构下的http://www.aliyun.com/zixun/aggregation/14172.html">RESTful应用时,对象存储将会非常有意义.然而有时公有云块存储服务更适合企业应用的需求. 当今服务于企业市场的主流公有云厂商倾向于提供三项基本存储服务:紧耦合云平台的块存储服务,例如亚马逊的弹性块存储EBS服务.惠普云块存储服务.Windows Azure二进制块存储服务;独立对象存储服务,例如亚马逊简单存储S3服务.惠普云对象存储服

公有云存储开支2年内翻倍 微软亚马逊是主要受益厂商

Research认为随着内部部署存储开支下降17%,公有云存储开支将在两年内翻1倍. 该项研究显示,众多企业将它们的存储开支越来越多地转移到公有云,而亚马逊和微软(Azure)则是主要的受益厂商. 该公司表示,此项研究是基于全球700以上IT专业人士,并结合了451对25000位资深IT买家和企业技术高管的响应作出的分析.换而言之--信不信无所谓,但值得一看. 该项研究发现处理数据与存储容量增长率问题是目前存储管理人员最大的一个痛脚.其调查对象称改善备份和灾难恢复将是2016年的一个首要存储课题

解析公有云存储:何种数据可进行迁移?

用户可以使用对象存储和商业硬件进入云计算服务,但这并不是最佳的方案.在支持新的云架构下的应用(这类应用是根据RESTful应用编程接口编写的)的存储需求的情况下,使用对象存储将很具有意义.但是相对于当下的应用,客户更喜欢追求其他的方案,利用公有云块存储服务.云存储网关和紧密联合一个或多个公有云的第三方产品等都是其中很好的例子. 那怎么才能判断怎样的工作负载和用例是适合公有云存储的呢?若是从开销和扩展性的角度来进行云计算开发看起来似乎很有吸引力,但是相较于其他方案,云计算在特定类型的工作负载和存储

公有云存储大数据的典型案例分析

云服务正在大数据应用中发挥重要作用,尤其是对于那些短期任务,或是已将大量数据存储在云上的应用而言. 云服务对于每个人都具有吸引力.当有人对你说,他们的大数据策略是"把所有的数据都存储在云端" 时,你根本无法判断这些人是有远见的人,还是在简单地重复着专家在行业会议上对他们的建议. 毫无疑问,目前大数据和云范例之间存在着巨大的重合之处.这些交集是如此的广泛,以致于你能够名正言顺地宣称自己正在利用现有的本地Hadoop.NoSQL或企业数据仓库环境,处理基于云的大数据.请记住,云服务被普遍解

mysql cluster存储引擎NDB,如何设置哪些数据不被LOAD到内存中?

问题描述 mysql cluster存储引擎NDB,如何设置哪些数据不被LOAD到内存中? mysql cluster存储引擎NDB,如何设置哪些数据不被LOAD到内存中?