如何重新配置 Hyper-V VM
我希望能够使用 Powershell 更改 VM 配置文件、检查点和虚拟硬盘位置。
我的 Google-FU 只指引我进行移动,我有大约 100 个 VM 需要更改,我可以移动这些文件,我不介意有一点停机时间,当按照向导操作每个 VM 时,每个 VM 大约需要 5 到 15 分钟,而这些都是较小的 VM,我需要能够在 2 小时内完成全部 100 个 VM。
如果我需要澄清,请告诉我。
==我被困在哪里==
是的,我已经看到了该链接并查看了大多数命令,但没有一个能满足我的需求。
这些文件总共约 14 TB
大约 100 台虚拟机集群在 7 台主机之间。共享存储是 EMC 旋转磁盘,我想将它们移动到 3Par ssd。
现在,我已经能够成功关闭虚拟机、移动文件、删除所有虚拟机并通过 powershell 重新创建它们,当我告诉我的 CTO 时,这可能是他解决问题的唯一办法。
我希望能够做的不是移动虚拟机,而是重新配置它们,
在其他作品中可以改变:
到:
我希望能够使用 powershell 来执行此操作,同时我还需要能够对检查点、配置文件和所有其他 Hyper-V VM 组件执行同样的事情。
我可以忍受大约 2 小时的停机时间,通过向导对所有 VM 进行移动不仅会磨损我的鼠标而且会花费大约 6 个小时。
几周以来,我也一直在研究这个问题并测试不同的策略。
====再来一次====
我并不是想“移动”,我想要做的就是从 hyper-V 内部更改设置,移动会花很长时间,对于我来说,通过网络复制文件并更新 Hyper-V 中的路径要快得多,我就可以关闭机器。
我认为这不可能完成?
答案1
不太确定这是否能满足您的需要,但我过去曾使用过一个示例 powershell 片段来将虚拟机(包括所有存储)迁移到新目的地
Get-VM -Name ('ansible-test-acs',
'ansible-test-web',
'ansible-test-db') |
ForEach-Object {
# move everything to d:\hyper-v\vm_name on hv-srv-01
$MoveOptions = @{
'Name' = $_.Name
'DestinationHost' = 'hv-srv-01'
'IncludeStorage' = $true
'DestinationStoragePath' = 'D:\Hyper-V\{0}' -f $_.Name
}
$MoveOptions
Move-VM @MoveOptions -WhatIf
# Move-VM @MoveOptions
}
将虚拟机存储移至新路径
('ansible-test-web', 'ansible-test-db') |
ForEach-Object {
Move-VMStorage $_ `
–DestinationStoragePath "E:\Hyper-V\$_"
}
如果您已将 VM 及其所有文件复制到新位置,并且希望 Hyper-V 开始使用新位置,那么您应该能够执行类似操作。
Remove-VM oldvmname
Import-VM -Register -Path 'path to VM config file'