首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >超级V2008R2-获取虚拟机的快照位置

超级V2008R2-获取虚拟机的快照位置
EN

Stack Overflow用户
提问于 2014-05-08 08:04:27
回答 1查看 1.5K关注 0票数 0

我需要使用Powershell和PSHyperV模块为运行在Windows 2008 R2上的虚拟机实现备份解决方案。该模块帮助加载,因为它提供了一种获取VM属性和其他东西、执行基本功能等的简单方法。

我计划的停机时间最少,因为有问题的VM可能被客户端使用,而且他们通常不会容忍任何停机时间。我知道使用Windows 2012 R2管理程序完全解决了这个问题,因为它具有实时的VHD合并功能,但是基础设施的迁移是一个足够长的过程,备份不需要等待。

目前,备份是通过save VM -> copy tree -> start VM进程完成的,这涉及到最大VM的长达6小时的停机时间。我计划使用VM快照来减少停机时间,因为一旦执行了快照,就可以在其他地方备份VHD和快照数据,而不会干扰VM (会慢一些,但仅此而已)。然后我计划保存VM,删除快照(会发生VHD合并),等待合并完成,然后启动VM,可能会将VM停机时间减少到半个小时(最坏的情况)。

到目前为止,我的脚本能够定位给定VM的VHD,备份它们,但是无法找到VM的快照位置。从VHD文件夹向后遍历树可能不会产生“虚拟机”或“快照”文件夹,因此猜测是无法选择的。

如何获得快照文件的位置以便为VM快照进行手动导出?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-08 09:39:57

如果得到了数据,也许有人会觉得有用。

代码语言:javascript
复制
$vmName = "Test VM"
$vm = Get-VM $vmname
$vmGlobal = Get-WMIObject -class Msvm_VirtualSystemGlobalSettingData -namespace "root/virtualization" | where {$_.systemname -eq $vm.name}
$vmRootPath = $vmGlobal.ExternalDataRoot
$snapshotPath = $vmGlobal.SnapshotDataRoot

然后,获取这些路径,将“快照”追加到快照路径(显然是硬编码的),将“虚拟机”附加到根路径,并获取配置和快照文件。可以通过调用$vm | Get-VMDisk | where {$_.DiskName -eq "Hard Disk Image"}来接收磁盘,这些磁盘包含文件的绝对路径。

这应该足以让我从快照中获得备份和还原VM所需的所有数据,即使是在原始VM由于磁盘丢失而被破坏的情况下。我可能不得不使用备份的XML来更改路径,但这要容易一些。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23536108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档