学习笔记29:Volume Shadow Copy Service(VSS)如何工作

VSS卷影拷贝服务其实不是一项新技术了,在2003年前后发布的Windows 2003和Windows XP SP1都提供了对VSS的支持。最近几年微软的一线产品对VSS支持的越来越多,包括Exchange,SQL,AD,DPM等等。在Windows 2008中甚至系统的自带的备份工具也换成了VSS版本的。查一查VSS的资料,发现名词不少,snapshot、writer、requestor等等。这几天翻阅了一些资料,仔细阅读了几遍,终于拨云见日,理清了头绪。

VSS解决的问题

任何一个新东西和新技术的出现总是为了解决现有的问题。在IT领域,很多的资源被放在对各个系统的备份和恢复上。为了99.9XXX%中那n个9,每多一个9都要付出巨大的代价。

在备份领域,传统的备份方案一般有全备份,增量备份和差量备份等。我觉得主要的问题有:

  • 增量和差量需要备份软件支持,备份程序需要对被备份的数据有足够了解,备份程序和应用程序协作保证数据的恢复完整一致性,工作量比较大。比如Exchange的数据库,Exchange自己要暴露出API接口,供NTBackup之类的应用程序调用。
  • 备份和恢复的时间漫长。每次做全备都需要若干小时。恢复差量和增量的数据的时候,要先恢复全备份再恢复增量、差量的数据。步骤冗长,容易出错。
  • 缺乏与硬件的紧密结合。很多存储的硬件都有snapshot的方案,但是这些硬件是做卷级别的镜像,和应用无关,做出来的东西也不能保证在应用级别是完整的。
VSS的出现,就是为了解决这些问题。

卷影的方法分类

  1. Clone (Full Copy/Split Mirror)全拷贝、镜像拷贝。可以通过软件或者硬件的方式做源卷和目标卷的同步。在同步连接切断之前2边的数据是一致的,在同步连接中断之后目标卷的数据和源数据保持独立,并且是只读的。
  2. Copy-on-Write (Differential Copy)差量拷贝。这种方法也可以用软件或者硬件的方法实现。当有写操作发生在需要被复制的卷时,被写的那个block会先被复制到另一个存放差量数据地方,同时这个操作会被索引和记录下来。使用源卷里数据和差量数据,这样在逻辑上我们就有一个在之前某个时间点的源卷。这种方法的好处是额外需要的存储空间小,缺点是
    • 对源卷有额外的读写操作。
    • 在做数据恢复的时候源卷的数据必须还在。
基于以上这2种最底层的卷影的方法,可以实现多种基于软件和硬件的备份应用和方案。微软的应用方案有:

  • Data Protection Manager(DPM)
  • Windows Backup Service(in Windows 2008)
VSS服务架构

组件 描述
Volume Shadow Copy Service
核心服务,和各个其他组件交互。
Requestor
提出开始做卷影复制的程序,一般是备份程序。
Writer
首先他是应用程序的一部分,用以确保在做卷影复制的时候应用层面的数据是完整一致的。数据库级别的应用一般会有自己的Writer,比如Exchange,SQL,AD等。
Provider
创建和维护卷影复制的组件。可以是操作系统、硬件或者软件自己实现。
Source volume
含有需要被备份的数据卷。
Storage volume
为provider提供存放copy-on-write文件的数据卷
卷影复制的组件

Requestors: 发起卷影复制的程序,一般是备份程序。

Writers: 防止数据不一致,不完整。

  • 当备份的应用发起备份请求的时候,系统的VSS服务把这个消息通知给各个writer。Writer在收到这个消息之后,开始为备份做准备,以确保硬盘上的数据的一致性。比如Exchange的writer,会把内存的buff写回到硬盘里,确保硬盘上的数据库和log是完整的。
  • Writer也提供其他一些信息,比如应用的名字、图标、包含和排除的文件、恢复策略等等。
  • Writer和一个或者多个组件相关联。一个组件是一群文件的集合。比如,Exchange的文件集合包括数据库文件和日志文件等等。这些文件集合是一个整体,必须被同时备份和同时恢复。Writer也提供有关如何按组件恢复数据的信息。
  • 如果一个应用没有提供writer,那么只有硬盘上的数据被备份,而内存里面的cache等数据会丢失。这样恢复出来的数据类似于机器突然断电的状态,数据有可能会不一致。相对于非VSS的备份方法,VSS的好处是即使文件正在被打开也可以备份。传统的备份方法被打开的文件是无法再次被备份程序读打开的。
  • 在这种设计下,维护数据一致性的工作被从备份程序转移到了应用程序,而应用程序的开发人员对应用程序的数据更加了解,他们知道如何编写Writer来优化卷影复制。
Providers:用以创建和维护卷影复制。主要有三类实现:

  • 硬件实现
  • 软件实现
  • 操作系统实现。Windows 2003自带了一个基于软件的Provider。
卷影复制创建流程

  1. Requestor,一般是备份程序,要求VSS枚举writers和他们的metadata,为卷影复制做准备工作。
  2. Writer创建一个XML的备份组件的描述,并定义他们如何被恢复。VSS通知应用程序的Writer为卷影复制做准备。
  3. Writer开始做准备,比如把内存中的内容写到数据库,把日志中的内容写到数据库等等。做完之后通知VSS。
  4. VSS发起commit。
  5. VSS把writer和requestor暂停写操作几秒种,以用来创建一个卷影复制。这个时间不能超过60秒。在此期间,VSS把文件系统在内存中的buff写到硬盘以确保硬盘中文件的一致性。
  6. VSS告诉requestor花最多10秒的时间来创建卷影复制。
  7. VSS解冻文件系统。当卷影复制创建好之后,VSS释放处于未激活状态的writer,所有在队列中的读写IO操作被完成。
  8. VSS确认在卷影复制被创建过程中的IO是成功的,如果失败的话意味着卷影复制是不一致的,VSS通知requestor并且删除卷影复制。Requestor可以选择重试或者通知管理员等操作。
  9. VSS开始复制卷影复制的数据,在复制完成之后把位置信息返回给Requestor。这一步才是耗时最长的备份数据的过程。
参考资料

How Volume Shadow Copy Service Works

Wikipedia:Shadow Copy

职场 休闲 数据存储

1

分享

微博 QQ 微信

收藏

上一篇:DHCP管理 下一篇:DPM数据管理、保护和恢复
老丫头麦子

46篇文章,11W+人气,0粉丝

关注

Ctrl+Enter 发布

发布

取消

推荐专栏更多

十年老兵教你练一套正宗的MySQL降龙十八掌

MySQL全通晓

共18章 | 张甦

¥51.00 402人订阅

订   阅

负载均衡高手炼成记

高并发架构之路

共15章 | sery

¥51.00 506人订阅

订   阅

猜你喜欢

我的友情链接 信息安全 Java线程:线程的调度-休眠 我们不得不面对的中年职场危机 职场终极密籍--记我的职业生涯 用光影魔术手制作一寸照片(8张一寸) 我的IT职场生涯: 毕业4年,月薪过万 Linux关闭休眠和屏保模式 年薪从0到10万-我的IT职场经验总结 Windows7删除休眠文件hiberfil.sys节省大量C盘空间 致IT同仁 — IT人士常犯的17个职场错误 “跳槽加薪”现象,无奈的职场规则 PostgreSQL的B-tree索引 PostgreSQL pg_rewind实例--could not find previous WA redis geo 地理位置系应用战案例 PostgreSQL逻辑备份pg_dump使用及其原理解析 PostgreSQL如何删除不使用的xlog文件 PostgreSQL pg_ctl start超时分析 Greenplum -- segment 死机后恢复 postgresql 主备及切换-恢复方案

扫一扫,领取大礼包

1

0

分享

关注

老丫头麦子

转载于:https://blog.51cto.com/ityatou/277353

Volume Shadow Copy Service(VSS)如何工作相关推荐

  1. Win7系统开机提示Flash Helper Service 已停止工作解决办法!

    Win7系统开机提示Flash Helper Service 已停止工作 1.点击(控制面板) 2.点击(Flash Player(32位)) 3.点击(全部删除) 4.选中(删除所有站点数据和设置) ...

  2. Android锁屏状态下service不能正常工作的探究

    理想情况下例如音乐播放等service在锁屏状态下都是可以正常播放的. 最近在用android5.0做开发,写了蓝牙4.0的服务和socket的网络请求服务,需求是每隔一段时间自动查询服务器数据,如果 ...

  3. CentOS以及Oracle数据库发展历史及各版本新功能介绍, 便于构造环境时有个对应关系...

    CentOS版本历史 版本 CentOS版本号有两个部分,一个主要版本和一个次要版本,主要和次要版本号分别对应于RHEL的主要版本与更新包,CentOS采取从RHEL的源代码包来构建.例如CentOS ...

  4. Windows操作系统的各进程的作用

    btwdins.exe是为了微软Windows操作系统支持蓝牙技术的程序. cisvc.exe是微软Windows操作系统自带的程序.它用于监测CIDAEMON.exe内存使用状态,防止可用内存过低问 ...

  5. Oracle闪回恢复区(fast recovery area,FRA)

    Oracle闪回恢复区(fast recovery area,FRA) 闪回恢复区(Fast Recovery Area,FRA)是一块可选的磁盘位置,可以用来存储与恢复相关的文件,例如控制文件和联机 ...

  6. Symantec云备份

    Symantec云备份 赛门铁克备份和归档解决方案: 提供了内部.混合或基于云的部署选项,以便与您的业务需求保持一致 提供本机接口,支持将已启用重复数据删除的备份和归档存储到存储提供商,例如 Nirv ...

  7. linux照片备份软件,Linux、Unix上5个惊艳开源备份软件

    Linux和类Unix系统上5个惊艳的开源备份软件:Bacula.Amanda.Backupninja.Backuppc和UrBackup,这些都是既可以使用在Linux上也可以使用在Unix上面,他 ...

  8. vSphere 故障排错:针对 Virtual Machine 的故障排查

    vSphere 故障排错:针对 Virtual Machine 的故障排查 https://mp.weixin.qq.com/s?__biz=MjM5NTk0MTM1Mw==&mid=2650 ...

  9. Symantec Backup Exec 2010 Agent For Linux安装

    主要功能 使用单个解决方案保护虚拟和物理环境. 通 过与 Microsoft® Volume Shadow Copy Service (VSS) 和 VMware 的 vStorage APIs fo ...

  10. oracle 8i,9i和10g 的区别

    Oracle 9i比8i多了哪些新特性? 简要说:     9i更易于管理. 详细说:     并发集群,8i OPS升级为9i RAC,8i结点间用硬盘交换信息,9i结点间采用高速网线的缓存熔合(C ...

最新文章

  1. Spring Data JPA(官方文档翻译)
  2. SEO优化中影响网站关键词排名的因素有哪些?
  3. iOS 5.1.1 设备不能安装AdHoc问题版本号
  4. JavaSE进阶学习笔记-目录汇总(待完成)
  5. Spoonwep破解wep加密无线路由密码
  6. linux 卸载ninja,Linux下数据库管理工具:DbNinja
  7. python链表定长翻转_python实现单链表翻转
  8. 在线文本按列截取工具
  9. ddbs mysql_ddbs简介
  10. Unity【Face Cap】- 关于人脸捕捉的解决方案(二)
  11. 收费版ESX 与免费版ESXi的区别
  12. ipad MOV转mp4
  13. Ubuntu20.10系统FreeCAD 0.19编译安装
  14. 家门口的微醺“buff”——酒分之一开启社区酒吧式便利店次元
  15. JS中常见的字符串拼接处理
  16. 倾斜摄影三维实景模型为智慧城市提供全流程可视化支撑
  17. 我叫mt4 服务器维护,我叫MT48月22日停机维护公告 我叫MT4最新维护内容一览-游侠手游...
  18. java json utf-8_关于java:如何使JSONObject的toString()像UTF-8字符一样将UTF-8字符编码为unicode?...
  19. android l 论坛,同步更新魔趣源码Android-L编译
  20. Windows下的指北针(指南针)--OpenGL版 Compass

热门文章

  1. 详解BetterZip对压缩包注释的一些相关小功能
  2. fpcx教程:在Final Cut Pro中添加多语言字幕
  3. 泰拉瑞亚Terraria for Mac(动作冒险游戏)
  4. TeamViewer会议功能有什么用?
  5. Docker 安装 Redis 并配置 Docker 方式的 phpRedisAdmin
  6. iOS11 tableview左滑到底禁用删除
  7. Windows server 2016 部署AD(Windows 域)
  8. 双网卡mode6模式 同时工作 冗余互备
  9. php js 交互(js调用PHP代码执行)
  10. 小心费力不讨好!Facebook成立“抄袭小组”压制Snap