使用DiskShadow备份Hyper-V工作负载

日期: 2009-09-03 作者:Rob McShinsky翻译:李建军 来源:TechTarget中国 英文

在本系列文章(“Hyper-V上的虚拟机备份”)的第一篇中,我主要讨论了如何使用Windows Server Backup。然而要想有效地备份Hyper-V上的工作负载,其方法有一些局限性,比如缺少对磁带驱动器的支持。其它廉价、稳定的替代工具——比如,Windows Server 2008中的Diskshadow,可以让你克服这些障碍。Diskshadow还可以助你完成在线的虚拟机备份,并可以让你与多种卷影拷贝服务编写器交互,在本文中,所涉及的卷影拷贝服务编写器是Hyper-V Volume Shadow Copy Service(VSS)。

以下几个简单的Diskshadow脚本可以将虚拟机备……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

在本系列文章(“Hyper-V上的虚拟机备份”)的第一篇中,我主要讨论了如何使用Windows Server Backup。然而要想有效地备份Hyper-V上的工作负载,其方法有一些局限性,比如缺少对磁带驱动器的支持。其它廉价、稳定的替代工具——比如,Windows Server 2008中的Diskshadow,可以让你克服这些障碍。Diskshadow还可以助你完成在线的虚拟机备份,并可以让你与多种卷影拷贝服务编写器交互,在本文中,所涉及的卷影拷贝服务编写器是Hyper-V Volume Shadow Copy Service(VSS)。以下几个简单的Diskshadow脚本可以将虚拟机备份到磁盘或者存放时间更长的磁带存储中去。

  Diskshadow脚本1:创建快照,以驱动器号的形式显示,拷贝到其它的磁盘,使用第三方的备份产品实施备份。

  好处:

  1. 指定并拷贝一份完整的在线备份到其它单独的磁盘簇中,可以防止主要的逻辑单元号(LUN)或磁盘驱动器失效的故障事件。
  2. 磁带备份I/O不通过虚拟机所在的磁盘簇,避免了存储带宽占用。

  不足:

  1. 需要另外一个具有较大空间的LUN或者磁盘驱动器,用以存储虚拟机的完整拷贝。
  2. 在将文件移动到其他单独的驱动器、然后从该驱动器执行磁带备份的时候,需要时间和服务器资源。这个过程可能需要好几个小时,具体时间长度取决于虚拟机的数目和他们的虚拟机磁盘大小。

  脚本假设:

  1. 主机上已经安装了Hyper-V角色
  2. 创建一个名为”DiskShadowRobocopyBasic.dsh”的文件,并将以下文本的内容拷贝下来作为该文件的内容。
  3. 本例中,假设虚拟机存放在D:(如果虚拟机存储在其他的盘符或者多个驱动器上,你也可以调整脚本)
  4. 创建一个命令行文件,叫做”backupscript_W.cmd”,将影像拷贝复制到其他的磁盘位置,如下所示。

  DiskShadowRobocopyBasic.dsh

# Assuming your VMs reside on D:, script cleans old shadows, creates shadows and
# copies files to separate LUN/drive (backupscript_W.cmd), then unexposes drive/LUN.
# Make sure the scripts are in C:vsbackup and that C:vsbackupcab exists, or make the
# appropriate modifications.

DELETE SHADOWS ALL
SET CONTEXT PERSISTENT
SET METADATA c:vsbackupcabBackup.cab
SET VERBOSE ON
BEGIN BACKUP
ADD VOLUME C: ALIAS CP0
ADD VOLUME D: ALIAS CP1
CREATE

EXPOSE CP1 W:
EXEC c:vsbackupbackupscript_W.cmd
UNEXPOSE W:

  Backupscript_W.cmd (注意自动换行)

C:VSBackuprichcopy.exe W: e:%computername%W /E $RECYCLE.BIN;SYSTEM*;MP*;$*;Pagefile.sys

  要执行以上的Diskshadow脚本,创建一个命令行文件,如下所示:

VSBackup.cmd
diskshadow /s c:vsbackupDiskShadowRobocopyBasic.dsh

  Diskshadow脚本2:创建快照,以挂载点的形式显示,然后使用第三方的备份产品(该软件与挂载点有关)实施备份。

  好处:

  1. 仅需要很少的磁盘空间,因为这个过程不会产生一个虚拟机的全拷贝
  2. 执行“有状态的”备份,并在挂载点显示短暂的时间,允许在较短时间内执行磁带备份

  不足:

  1. 第三方的磁带备份系统必须能够识别操作系统的挂载点,而这往往是备份产品的一个限制
  2. 往磁带的备份过程需要占用虚拟机所在的磁盘簇的I/O带宽。因此,磁带备份应该在Hyper-V主机I/O较低的时间进行

  脚本假设:

  1. 主机上已经安装了Hyper-V角色
  2. 创建一个名为”DiskShadowMountpointBasic.dsh”的文件,并将以下文本的内容拷贝下来作为该文件的内容。
  3. 本例中,假设虚拟机存放在D:(如果虚拟机存储在其他的盘符或者多个驱动器上,你也可以调整脚本)
  4. 确认路径E:MountpointD存在。

DiskShadowMountpointBasic.dsh
*******************************************************************************************************
# Script cleans old shadows, creates shadows and copies files to separate LUN/drive
# (backupscript_W.cmd), then unexposes drive/LUN.
# Make sure the scripts are in C:vsbackup and that C:vsbackupcab exists or make the
# appropriate modifications.
DELETE SHADOWS ALL
SET CONTEXT PERSISTENT
SET METADATA c:vsbackupcabBackup.cab
SET VERBOSE ON
BEGIN BACKUP
ADD VOLUME C: ALIAS C
ADD VOLUME D: ALIAS MP1
CREATE

EXPOSE MP1 E:MountpointsD

  要执行以上的Diskshadow脚本,创建一个命令行文件,如下所示:

  VSBackup.cmd

diskshadow /s c:vsbackupDiskShadowMountPointBasic.dsh

  以上两个脚本只是概要性的列出了基本的命令编码,用以执行虚拟机的在线备份。每一个都有它的用处。我们用来备份Hyper-V工作负载的脚本是DiskShadowMountPoint.dsk,因为它仅仅创建影像拷贝的挂载点而并不实际将数据拷贝到另外一个磁盘存储区。这样可以节省大量的磁盘空间,但备份系统需要很长时间才能看到挂载点。

  如果使用没有驱动器号的LUN或者驱动器存储虚拟机,你可能有其他的担心,但是这些基本的脚本在提供可靠的在线备份时,的确对你大有帮助。有关我在生产环境中使用的更多脚本的细节版本,请参考VirtuallyAware.com.

  随着Hyper-V的不断流行,越来越多的厂商加入到支持Hyper-V VSS编写器的工作中,使得完成从主机级别直接备份虚拟机到磁带更容易了。这些产品非常有用,但需要购买授权,增加了成本。其他主要的厂商尚不支持Hyper-V VSS编写器的,这就需要采购其他的备份产品或者采用一些高效、低成本的替代方法。你可以在自己的环境中试验这些方法,然后告诉我用的如何或者你的任何建议。

相关推荐

  • 回顾年度9大虚拟化技术

    虚拟化管理员从未放弃追寻更好虚拟化技术,以使他们的工作更快、更易于管理以及更好地优化。 我们看到,虚拟化工具在 […]

  • 从Azure VM到Hyper-V:想想这些技巧

    多年来,IT行业已经推动IT人员把工作负载转到云中。虽然在公有云中有一些好处,但有些工作负载更适合运行云本地数据中心中。

  • 功能多样的Get-VM PowerShell cmdlet,你知道多少?

    Hyper-V管理员能够使用Get-VM PowerShell cmdlet查看并调整一系列虚拟机配置信息。微软花费大量精力对PowerShell进行优化,以提升其对本地或者远程服务器的管理功能。

  • 支持Linux虚拟机:新版Hyper-V来帮忙

    大家都知道,Linux虚拟机无法利用Hyper-V针对Windows虚拟机提供的众多特性。幸运的是,情况已经发生变化,Hyper-V现在能够为Linux提供更多的支持。