dbeaver客户端查的数据不一致_Ceph快照爱你不容易系列 03:快照数据一致性浅析...

本文详细分析了快照数据一致性问题,特别是针对Ceph存储系统的块设备层。讨论了奔溃一致性、文件系统一致性及应用一致性快照,并重点解析了Ceph中rbd块设备如何维护一致性,包括阻塞请求、flush飞行IO和rbd缓存的处理。此外,还提到了Ceph的静默回调机制,用于在快照过程中处理应用层和文件系统层的一致性。
摘要由CSDN通过智能技术生成
点击上方“腾讯云TStack”,关注我们,获取最in云端资讯和海量技术干货~

7cf950957eec72d30ff3543e95d4a7ad.png

导语

快照一般是指数据存储的某一时刻的状态记录,类似于给数据按下快门拍了一张照片,所以也叫snapshot。而存储系统的快照在云计算中广泛使用,比如块存储的快照。很多其他高级功能基本都要依赖快照来实现,比如备份、热迁移等。而对于快照,我们经常会问的一个问题就是快照的数据是不是完整的,会不会出现快照回滚之后数据丢失。其实这也就是我们常说的快照数据一致性问题。

下面主要分以下几点进行讨论:

(1) 一致性的分类

(2) Ceph中一致性的实现

一致性分类

快照这里我们主要是讲用在虚拟机块存储上的快照,首先看一下下面这张图

3ddcd79d72a97dad68498de77b724e82.png

从上面的图可以看出,我们的数据会经过应用层、文件系统层最后到达块设备层。每个层次可能会有一部分缓存,比如应用层里面的程序会有读写缓存,文件系统层会有page cache,块设备层有块设备的缓存。

根据这三层一致性主要分为以下几种:

1)奔溃一致性快照

奔溃一致性其实没有做特殊的保障,这时候快照存储的数据就相当于虚拟机突然掉电时候块设备上存储的数据状态,对于我们云计算中的块存储可能上图中的三个层中的缓存脏数据都没有刷到块设备。

2)文件系统一致性快照

文件系统一致性快照是在做快照前,文件系统被暂时冻结,文件系统层的缓存脏数据刷到块设备中,冻结用于拒绝用户层应用的IO请求。

3)应用一致性快照

应用一致性快照是在做快照前,应用被暂时冻结,并把应用层缓存的脏数据刷到块存储。

从上面三种快照一致性的分离中我们发现我们没有对块设备的缓存持久化进行归类,其实根据不同的存储系统有些可以归到奔溃一致性快照里面。这里我们不细介绍应用层和文件系统层了,主要介绍一下存储系统块设备层的数据快照一致性做法,下面我们来看看Ceph中的rbd块设备是如何维护着一致性的。

●Rbd的快照●

在做块存储快照的时候,我们最希望的就是rbd快照没有io再过来、内部飞行的io都回调完成、rbd缓存中的脏数据都已经刷到磁盘上,那这时候做快照,无论使用什么姿势,数据肯定是完整没问题的。我们看一下rbd快照前做了什么,如下是12.2.10 L版的代码。

 *            <start>  *               |  *               v  *           STATE_SUSPEND_REQUESTS  *               |  *               v  *           STATE_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值