我正在使用基于Windows VSS(卷影复制服务)的diskhadow实现Hyper V VM的备份。
实现与DiskShadow / Xcopy BACKUP of Hyper-V中描述的完全相同,其中diskshadow脚本如下所示:
set context persistent
set metadata C:\backup.cab
set verbose on
begin backup
add volume C: alias ConfigVolume
#The GUID of the Hyper-V Writer
writer verify {66841cd4-6ded-4f4b-8f17-fd23f8ddc3de}
create
EXPOSE %ConfigVolume% Y:
EXEC HyperVBackup.cmd
UNEXPOSE Y:
end backup
在HyperVBackup.cmd中,使用xcopy将影子副本实际复制到备份驱动器。这显然是备份过程中最耗时的部分。
begin backup
和end backup
命令将事件发送给vss编写器,以允许它们为影子副本创建做准备并在备份结束时作出反应。
end backup
之后拨打EXEC HyperVBackup.cmd
是不是一个好主意?只要漫长的xcopy部分需要,这种强制vss编写器不会保持中间状态吗?end backup
之前调用EXEC HyperVBackup.cmd
是不合适的? 实际上我不知道vss作家在收到end backup
发送的事件时通常会做什么。
谢谢, 喃
答案 0 :(得分:2)
作为diskhadow的替代方案,您可能还需要查看以下支持CSV并包含命令行工具的开源Hyper-V备份解决方案:
答案 1 :(得分:0)
end backup
基本上向所有vss编写者发出成功备份的信号。在将所有数据成功移动到安全位置之后,您可能不希望这样做。在您的情况下,您不希望在HyperVBackup.cmd脚本完成且没有错误之前发出完成备份的信号,同样xcopy已完成且没有错误。
原因是某些编写者(例如Exchange或SQL Server)会在end backup
发出信号时刷新事务日志。您不希望事务日志在成功备份并处于安全位置之前刷新。
begin backup
不应该处于中间状态。它只是告诉vss编写者“嘿,如果需要在备份窗口附近进行任何维护,请立即执行”。我不知道vss编写器的具体内容,但我也可以看到begin backup
用于设置标记,因此当发出end backup
信号时,它可以说“到目前为止的数据是好的,你现在可以用它来玩弄。“例如,您不希望将日志刷新到end backup
命令的时间,而end backup
命令将刷新日志直到begin backup
命令的时间。
发生的唯一“中间状态”是在文件系统冻结期间。冻结发生在create
命令期间,并在create
命令完成时自动解冻。