剖析Vista的存储技术—VSS
Fisher (luo_steven@hotmail.com)
VSS (Volume Shadow copy Service, 卷映射拷贝服务),最初是在是在Windows Server 2003 SP1中引入的存储技术。它通过在卷管理模块上加入快照功能,在此基础上就可以创建基于时间点(Point-In-Time)的映像(Image),从而实现数据的快速备份和恢复,用户再也不用害怕因无意删除数据而造成的困扰,这就是VSS的关键所在。由于VSS所表现的优良特性,因此在Microsfot最新的Vista操作系统中,也加入了该功能。
一、 VSS概述
VSS能够提供存储基础设备(比如磁盘、阵列)创建高保真的时间点映像,就是映射拷贝(Shadow Copy)。VSS可以在多个卷、或者单个卷上创建映射拷贝,而且并不影响系统性能。VSS通过协调业务应用软件、备份程序,以及存储硬件,从而达到创建高保真的映射拷贝的能力。它可以应用到一下一些领域:
A、快速数据备份和恢复;
B、针对制定文件的恢复;
C、磁带备份、测试,以及数据挖掘方面;
由于Microsoft在OS中集成了VSS技术,它将各个处理功能模块化,并针对存储软硬件厂商提供相应的开发接口;开发商只需要关注自己的模块,根据需求设计相关的应用,从而减少了整体设计的难度。就笔者了解,不少软硬件存储公司就采用VSS技术来设计NAS,并在此基础上构建数据保护服务器。
二、 VSS技术原理
VSS整体框架包含了VSS核心模块、请求者(Requestor)、写入者(Writer),以及提供者(Provider)。各个模块之间的关系如下图所示:
图-1 VSS原理图
接下来,对各个模块的功能做一个简单的介绍:
A) 请求者(Requestor),其主要任务是初始化映射拷贝的创建;根据需要解决的不同问题,使用不同的请求者应用。例如,备份应用处理VSS的备份功能,管理应用处理映射拷贝的创建及使用(像WS2003和Vista本身提供的VSS管理软件就是此类应用),而其他功能应用来处理专门的业务。对于请求者的应用,主要有Windows NT备份模块、各家备份的独立软件提供商,以及各家软硬件提供商的管理应用。
B) 写入者(Writer),其主要任务是保证数据的一致性;如果在创建映射拷贝的过程中,有应用软件往磁盘写入数据,将会出现数据非一致性问题,从而导致该时间点映像的完整性。通过在应用写入者模块进行控制处理,来保证数据的一致性,进而提高创建映射拷贝的高效性。通常,写入者可能是Windows OS里面的各种服务模块,像COM+、DHCP服务、Active Directory服务等,除此之外,数据库也是常见的写入者应用。
C) 提供者(Provider),其主要任务是创建映射拷贝;提供者是创建时间点影响的接口,它可以是基于存储阵列(硬件模式),或者操作系统(软件模式)。VSS有不同的提供者,其层次关系为:最底层是硬件提供者,中间是软件提供者,最上面是系统软件提供者。其中前面两个提供者,是为第三方硬件或者软件厂商提供地。
D) 卷映射拷贝服务(VSS)核心模块,其主要任务是协调各个模块的协作运行,并提供创建卷映射拷贝的方法;VSS提供了两种创建映射拷贝的方法:一种是完全拷贝(Clone/Full Copy/Split Mirror),它会创建当前原始数据(Original Data)的全部拷贝;而另外一种就是写拷贝(Copy on Write/Differential Copy),它只创建将要被更新的原始数据的拷贝。因此写拷贝创建映射拷贝速度快,但是恢复数据时需要使用原始数据。
三、 VSS处理流程
VSS处理映射拷贝,需要协调各个模块来完成,从而保证创建出高保真的拷贝,进而实现数据的一致性,其具体步骤如下图所示:
图-2 VSS处理流程图
A) 第一步,请求者让VSS枚举所在卷上的写入者应用,并收集他们的元数据(Metadata)。
B) 第二步,写入者通过XML文件来描述其组件(Components),并定义其恢复(Restore)方法;其中,考虑到数据一致性,写入者需要做一些处理,比如对于数据库应用来说,关闭所有打开的事务、回滚事务日志、以及将缓冲区中的数据写入等操作,直到所有数据准备好之后,通知VSS可以创建映射拷贝了。
C) 第三步,VSS对于请求的卷,查询是否支持映射拷贝,并由那个提供者提供;因为需要在请求者管理应用中,设置卷的映射拷贝属性以及策略等,所以需要进行查询和判断。
D) 第四步,请求者通知VSS,要求在该卷上创建映射拷贝。
E) 第五步,VSS锁住写入者应用,暂时不让写入新数据(在某些应用情况下,读操作请求是可以允许的)。
F) 第六步,VSS让提供者在磁盘上创建当前状态的映射拷贝(创建映射拷贝的速度,和创建的方法以及提供者的实现相关,通常最多10s)。
G) 第七步,创建映射拷贝完毕,VSS解锁写入者应用;然后写入者就可以处理队列中的写请求,接着VSS会查询是否这些写请求在创建映射拷贝期间被保证在队列中,并做相应处理。
四、 VSS使用实例
4、1服务器端设置
目前,在WS 2003 SP1或者某些测试版Vista上,直接有VSS模块。以下是笔者在一台名为VSS-SERVER的服务器(装WS2003)上,配置G盘的VSS。先在“我的电脑”->“G盘”->“属性”,选择“Shadow Copies” Tab页,将弹出下图所示的对话框:
图-3 VSS服务器端设置
然后选择卷(G盘),按“Enable按钮”,完毕后显示显示效果为图中“1,使能VSS” 注释部分。此时可以按“Disable按钮”禁止某个卷的VSS功能,也可以按“Settings”设置VSS的策略(Schedule)。
接着按下面的“Create Now按钮”,就可以生成各个时间点的映射拷贝,本实例创建了三个映射拷贝,显示结果如图中“2,创建映射拷贝”注释部分。当然,也可以选择“Delete Now按钮”删除所选择的映射拷贝。
创建映射拷贝完毕,在“我的电脑”->“G盘”->“共享”,将整个G盘进行共享,并保证客户端能够访问服务器。
4、2客户端配置
为了让客户端能够访问服务器端的VSS功能,也就是Shadow Copies of Shared Folders功能,需要下载ShadowCopyClient.msi安装包。通过该安装包提供的服务,客户端就可以通过共享,来访问VSS服务器上的映射拷贝,并实现一部分管理操作。
安装完毕后,在客户端访问\\VSS-SERVER服务器,就可以看到设置了VSS的共享G盘,然后选择“G盘”->“属性”,选择“Previous Versions”TAB页,就可以查看和管理映射拷贝了,其显示效果如下图所示:
图-4 VSS客户端配置
图中的红框部分,就是在服务器端创建的三个映射拷贝。Microsoft提供的Shadow Copies of Shared Folders应用,目前包含下面三个功能。选择“View按钮”,可以查看选定映射拷贝的详细信息;选择“Copy按钮”,则会拷贝选中的映射拷贝;而选择“Restore按钮”,将会用图中红框中选中映射拷贝,在VSS服务器上恢复到当前状态。
五、 VSS分析和结论
5、1 VSS分析
1) 优点
A) 加快了备份和恢复的速度。现在的高性能要求,其备份窗口越来越小,更多的是期待7*24全天候服务。因此比起传统的磁带备份,以及D2D备份,VSS的快照技术在备份和恢复的速度上都有明显的优势;同时减少了管理配置的复杂性,从而为企业客户降低了TCO。
B) 提供了个别文件的备份和恢复。用户再也不用害怕因为SHIFT + DEL这样的无意删除而导致的痛苦,无需因为文件的更新而采用的“另存为”操作,只需简单地要找到该文件的各个前期版本,并进行恢复就OK。
C) 易于实施到各种应用中。比如,对于不可避免的备份操作,完全可以只将映射拷贝的数据备份到磁带介质中,从而减少备份的数据量;而对于开发设计人员来说,同一产品在设计阶段会有不同的版本,因此完全可以采用制作不同版本的映射拷贝来完成。
D) 容易快速开发特定存储产品。由于在OS中集成的VSS,同时功能模块化;对于开发商来说,就可以根据行业需求,专注于该模块的开发,只要该模块通过了测试和认证,很快就可以和其他模块整合起来,将产品推向市场。
2) 缺点
A) 设置VSS容量和配置VSS策略,考虑到具体的环境和应用,需要一定的经验才能达到较好的效果。
B) 目前Microsoft提供的缺省的管理应用,在创建映射拷贝时,只有时间点信息,却不能对映射拷贝加入足够的注释信息,不易于区分各个映射拷贝之间的差别。
C) VSS其本质是基于卷开发的快照技术,如果将其应用到数据保护领域,和CDP (Continuous Data Protection,连续数据保护)所推荐的基于文件的保护相比,其粒度大,因为卷是基于块的,而文件可以基于字节的。
5、2 结论
笔者有幸在Microsoft最新发布的试用版Vista上测试了VSS功能,其工作一切正常,并且和WSS 2003没有差别。据了解,由于Microsoft提供了一整套的解决方案,因此很多软硬件存储厂商都在加入到Microsfot设计的VSS中,并且部分厂商用带VSS的OS来做特定应用的NAS服务器,并有不错的市场效果。尽管如此,比起用开源的Linux和Solaris 10来说(它们也都只持卷级的快照),那就是“”仁者见仁,智者见智” 了。