数据备份,数据保护中的稳定点(in-consistent, crash-consistent, application-consistent)

什么是数据保护的稳定点?

比如平时我们用copy命令或者在资源管理器中进行文件拷贝,如果拷贝的文件是正在变化修改的,那么我们拷贝出来的文件就是一个不稳定的状态,可以称之为in-consistent。为什么说是不稳定的呢?比如说我们要拷贝一个目录下的所有文件,假设这些文件都在被改变,那么我们用copy命令拷贝出来的这些文件的时间戳会是不一样的,copy命令只管拷贝。

那么怎样才能做到一个稳定点呢?

在Window上,微软提供了一种VSS机制,关于vss的细节可以参考vss的官方文档或者百度一下。vss的基本原理就是在某一个时刻,比如此时你要对某个卷做一个vss快照,vss会通知该卷上的文件系统,讲内存中的数据写入到磁盘中,可以称之为flush,这样就保证了文件系统的数据的一致性。同时,vss还会阻止文件系统的写入数据操作,即正在做快照的这个时候不允许对改卷进行任何写操作,以保证卷的稳定性,可以称之为freeze。这整个过程持续的时间很短,通常在几秒之内。vss在这几秒之内迅速产生了一个该卷的快照,即原卷的一个镜像。快照制作结束以后,无论原卷怎么变化,快照的内容是不会再发生变化的了。

当我们从这个快照中再去拷贝文件的时候,这些数据始终是出于一致的状态,consistent,今天去拷贝还是明天去拷贝,都是那些数据,是怎么做到的呢?vss使用了一种写时复制的机制(cow),可以参考相关文档获取详细信息。

但是这种状态有多稳定呢?

从vss参与的组件可以知道,只有文件系统本身参与了,一些应用比如sql等并没有参与,所以说假设我们把快照中的数据都备份了,然后再把备份的数据都还原,会遇到一些现象,比如我们备份的数据是系统卷,那么重启系统的时候,会看到系统提示操作系统非正常关机等,如果我们备份的是sql server数据卷,那么sql server数据卷恢复以后可能也会看到sql server的恢复状态。

所以我们称这种稳定状态为crash-consistent状态。

crash-consistent状态已经是一种巨大的进步了,利用vss可以做到,在Linux上,lvm卷后来也支持了快照功能,也可以做到crash-consistent。

但是这还不够,vss还可以支持另外一种级别的稳定点,应用级别的稳定点,在做vss快照的时候,vss有一种机制,可以通知系统中的那些支持vss writer机制的应用比如sql,exchange等去flush数据,使应用本身在快照中保持自己的稳定状态,这就是application-consistent。

Windows上可以使用vss能够做到application-consistent,Linux上就比较难了,Linux上并没有vss完全一样的机制,而且目前也只有lvm支持快照功能,所以Linux上的application-consistent还有一段路要走。

发布了77 篇原创文章 · 获赞 5 · 访问量 11万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览