Thursday, September 27, 2007

Volume Shadow Copy Service and Windows Vista

(This is an old post I posted in my old Live!Space Blog. Now just collect it here:-D )

玩 了一会儿Vista以后发现了一件事情,在Vista中微软把VSS(Volume Shadow Copy Service)作为默认打开。在Vista中如果你右键点击一个文件或者盘符,选择属性,你会看到属性中有一页叫做"previous versions”。对,这就是VSS提供的服务。
如果你不了解VSS的话,可以阅读“What is Volume Shadow Service" 这篇简短的technical article。简单的技术讲法,VSS提供了以block device方式实现的file level protection,同时很好的保持了文件的intergrity。(似乎还是太难看懂,呵呵) VSS通过定时的对你的disk volume拍摄快照来保存当时时刻磁盘上的文件的拷贝。而且,与一般备份软件不同的是,VSS做整个快照操作时,通过一套机制来 控制对这个volume有读写操作的软件(例如安装在这个volume上的SQL Server数据库)采取一定的自我保护措施,来防止快照过程中文件被修改,同时也防止有文件正在一个读写操作的半当中(这种情况下的文件内容是不完整的,也没有备份的意义)。VSS还会控制这些软件把快照当时的一些相关信息一同记录入快照。这样,当我 们要把一个文件退回到一个previous verision,读写这个文件软件就不会吃惊地发现有个文件突然返老还童了。
VSS出现于Windows Server 2003中,但是在Win2003中VSS并不是默认采用的。目前,我还没有发现,在Vista中如何schedule VSS的snapshot。在Win2003中,你可以在disk manager中右件点击一个volume,然后在属性的volume shadow copy页面中设置VSS schedule。但是,在Win2003中,VSS不支持snapshot on change。也就是说,VSS只能按照事先设置的时间间隔在给定的时间点上对volume快照,而不能在volume内容发生改变的时候自动的快照。我 实验了Vista中VSS的时间间隔,发现不是等时间间隔,而更像是snapshot on change。如果是这样,VSS的实用性有了本质的提高。VSS在一开始就采用了copy on write,所以实现这个功能是不太困难的事情。事实上,在VSS的文档中指出了,VSS没有采用snapshot on change的原因是基于性能上的考虑。具体的细节等我研究Vista中VSS的相关文档以后再一并介绍和讨论。
最后一点,现在我还不清楚VSS会在Vista的哪些版本中提供。希望能够至少出现于Premium以上的版本中。应该说,VSS对消费用户的吸引力应该也是不小的。

Update on 09/27/2007: 另外一件事情我没有发现的是如何为每个volume单独指定是否打开VSS service。当然也没有发现如何开启关闭VSS。当然了,通过service manager直接shutdown VSS service是可行的,但这样也就对所有的volume关闭了VSS服务。

No comments: