Hyper-V复制如何确保应用程序一致性

在上一篇中()介绍了Hyper-V复制评估工具的使用,那接下来就该实际配置Hhyper-V复制功能了,在开始之前我觉得既然要提起应用程序一致性,就不得不先说一说一个离不开的功能,那就是VSS(卷影复制)

######################################################################################

VSS有很多年历史了,也横跨了N个版本的Windows操作系统,应用非常广泛,其实VSS就是一种快照技术,有人说Hyper-V复制也好,快照也罢,都不能算是一种备份解决方案,怎么讲呢,我觉得要看这个“备份”是站在什么角度来理解;言归正传,VSS提出了一个统一开放的framework,以便软硬件厂商及应用程序可以在OS层来调用该服务,它有几个角色构成:

如下图所示,VSS Service就是Windows操作系统内部所集成的服务;VSS Requester通常就是备份软件或者发起创建快照操作的控制台程序,比如WBS、DPM或者Hyper-V管理控制台;而VSS Writer就是各种支持VSS的应用,比如SQL,比如Exchange等等;最后VSS Provider顾名思义,就是软硬件厂商所提供的针对存储系统的支持程序。

VSS将几个角色组合在一起来提供快照服务,那么它的工作机制就如下图所示:

#######################################################################################

对VSS了解一番之后,再回过头来看Hyper-V复制,,既然VSS都聊到这份上了,再多说一些VSS Provider所支持的几种方式,从上面VSS的工作机制来看,最终针对文件系统做快照操作的其实是VSS Provider,那么快照其实也分几种类型:

第一种就不说了,主要看后面两种,快照之所以能够快速生成且快速恢复,是因为它使用了元数据指针的方式来对新旧数据进行拆分。

Copy on Writer(简称COW)是在快照生成后,每当有新数据要写入时,先把对应位置的旧数据拷贝到快照文件中,这样用户的数据请求始终在原有位置上,除非还原快照才会指到另外一个磁盘区域(快照文件);这样一来随着时间的推移,快照文件将会成为旧数据的完全拷贝

Redirect on Writer(简称ROW)恰恰相反,快照生成后相当于把IO请求做了一个截断,所有以后的新数据写入都指到另外一个磁盘区域(即快照文件),这样一来旧数据永远在原有位置,新数据在新位置,用户的IO请求可能会在两个区域内不停变换

Windows操作系统中自带的VSS Provider使用COW,最常见的就是Windows7中的“以前的版本”功能,可见COW与ROW两种方式导致了很多在后期性能和管理等方面的诸多不同,以Hyper-V为例,最直观的就是在做快照删除(即快照合并)时,如果是COW的话直接把快照文件删了就行了,但是ROM就需要做合并的操作,但不同的应用选择不同的快照类型都是有原因的,有关IO性能及管理便捷性等内容在此就不做过多说明了,只是点出两者的不同

(COW)TimeSource data (status and data)Shadow copy (status and data)

T0

Original data: 12 3 4 5

No copy: —

T1

Data changed in cache: 3 to 3’

Shadow copy created (differences only): 3

T2

Original data overwritten: 12 3’ 4 5

Differences and index stored on shadow copy: 3

(ROW)TimeSource data (status and data)Shadow copy (status and data)

T0

Original data: 12 3 4 5

No copy: —

T1

Data changed in cache: 3 to 3’

Shadow copy created (differences only): 3’

T2

Original data unchanged: 12 3 4 5

Differences and index stored on shadow copy: 3’

#######################################################################################

Hyper-V复制的配置过程可以说是及其简单,首先是要启用Hyper-V服务器上的复制功能,以下图测试环境为例(Windows Server 2012),在确认启用复制功能后,在SQL2008R2这台虚机上右键并选择“启用复制”

指定副本服务器

选择身份验证类型及是否要求数据加密(基于证书)

选择要复制的VHD文件

接下来这里是要特别说明的,也是本篇的主旨;对于普通的VM来讲,如果没有承载任何应用,那么通常我们可能“一路下一步”就过去了,但是可否考虑过,假如我这台虚机是台SQL服务器,我没有采用任何SQL自带的备份功能,无论是log shipping或者mirror,Hyper-V复制能保证在备份服务器上使SQL实例的数据与主服务器一致么?如果可以的话如何做到?

首先得说明一下Hyper-V复制中快照的类型:

先说说标准快照中还原点类型:

所谓最新还原点,顾名思义只生成并保留一个快照文件,在Windows Server 2012当中还不支持增量同步周期的修改,默认是5分钟同步一次,在主服务器存放被复制虚机的VHD路径下会有一个*.hrl文件,该文件记录着所有修改的内容,每5分钟Hyper-V会把该日志文件merge到副本服务器,相当于做了个redo。

在看额外还原点,它是以周期为单位(1小时,无法修改)逐个生成快照,2012支持最大到15个,这样就给予用户在还原时可以回退到任意一个以往的“时间点”,但随之而来对于服务器的处理能力和存储开销都会有所增长(详见)

人总是珍惜未得到的,而遗忘了所拥有的

Hyper-V复制如何确保应用程序一致性

相关文章:

你感兴趣的文章:

标签云: