凌云的博客

行胜于言

Volume Shadow Copy Service 基本原理

分类:windows| 发布时间:2018-08-22 20:16:00


什么是 Volume Shadow Copy Service

Volume Shadow Copy Service 是微软从 Windows XP 开始提供的用于创建一致性的时间点副本(也就是快照)的服务框架。

在 Windows 平台上,Volume Shadow Copy Service 出来之前并没有创建卷快照的标准方法。 Volume Shadow Copy Service 可以生成用于 商业软件,文件系统服务,备份应用,快速还原方案和硬件存储的一致性快照。

Volume Shadow Copy Service 的使用场景

  • 创建打开的文件和应用的一致性备份
  • 创建共享目录的快照
  • 通过硬件 provider 创建可移动的快照
  • 快速恢复

Volume Shadow Copy Service 如何工作

Volume Shadow Copy Service 架构

Volume Shadow Copy Servic 由以下组件构成:

  • Requestor 请求卷影快照的应用,比如说备份程序。
  • Writer 在快照生成过程中将应用的持久数据保存到卷中的模块,这个模块属于相关应用的一个组成部分。一个典型的例子是 SQL Server 数据库的 Writer。
  • Provider 用于创建和维护快照的模块。比如由操作系统提供的 system provider 或者硬件厂商提供的 hardware provider。

如何生成快照

总的来说,Requestor,Writer 和 Provider 通过 Volume Shadow Copy Service 协同起来完成快照生成的整个流程。 如下图所示:

  1. Requestor 向 Volume Shadow Copy Service 列举 writers,获取 Writer 的元数据,并且准备快照的生成。
  2. Writer 生成 XML 描述的 backup components 给 Volume Shadow Copy Service,并且定义恢复方法。Volume Shadow Copy Service 通知应用指定的 Writer 准备生成快照需要的数据。
  3. Writer 以恰当的方式准备数据,比如完成所有打开的事务,回滚事务日志,刷新缓存。当这一切准备好后,通知 Volume shadow Copy Service。
  4. Volume Shadow Copy Service 进入快照的“Commit”阶段。
  5. Volume Shadow Copy Service 通知 writers 停止数据的操作,并且冻结所有的 I/O 写请求(I/O 读请求依然允许)以便创建快照,这个过程会持续数秒。在这个过程中 Volume Shadow Copy Service 会刷新文件系统的缓存并且冻结文件系统。以确保文件系统的元数据已经写入,并且数据按序写入。
  6. Volume Shadow Copy Service 通知 provider 创建快照(最多 10 秒)
  7. Volume Shadow Copy Service 解冻文件系统。当快照生成后,Volume Shadow Copy Service 会将 writers 从非活动状态阶段释放出来并且完成所有排队的 I/O 写请求。
  8. Volume Shadow Copy Service 轮询 writers 已确保快照生成过程中保持的 I/O 写请求成功完成。
  9. 如果 writers 的 I/O 写请求没有成功完成(这意味着快照中的数据不是一致的)。快照会被删除并且 Requestor 会收到通知。
  10. Requestor 可以选择稍后重试这个过程(从第一步重新开始)或者选择管理员稍后再试。
  11. 如果快照成功创建,Volume Shadow Copy Service 会将快照的相关信息返回给 Requestor。

参考