Настройте виртуальную оболочку Hyper-V VM

13

Как я могу перенастроить виртуальную машину Hyper-V

Я хочу иметь возможность изменять файл конфигурации виртуальной машины, контрольные точки и расположение виртуальных жестких дисков с помощью Powershell.

Мой Google-FU только указывает мне на перемещение, у меня около ~ 100 виртуальных машин для изменения, я могу переместить файлы, я не против небольшого простоя, при обходе мастера для каждой виртуальной машины это занимает от 5 до 15 минут на ВМ и те, которые поменьше, я должен быть в состоянии сделать все 100 за 2 часа.

Если мне нужно уточнить, пожалуйста, дайте мне знать.

== Где я застреваю ==

Да, я видел эту ссылку и просматривал большинство команд, однако ни одна из них не выполняет то, что я ищу.

Все файлы составляют около 14 ТБ

~ 100 виртуальных машин сгруппированы между 7 хостами. Общее хранилище - это вращающийся диск EMC, и я хочу переместить их на 3Par ssd.

Теперь, что я смог сделать успешно - это выключить виртуальную машину, переместить файлы, удалить все виртуальные машины и воссоздать их VIA PowerShell, что, когда я сказал своему CTO, это может быть единственным способом, которым он занимается с дерьмовыми котятами.

То, что я хочу иметь возможность - это НЕ ПЕРЕМЕЩАТЬ ВМ, просто РЕКОНФИГУРИРОВАТЬ их,

В других работах можно изменить:

введите описание изображения здесь

TO:

введите описание изображения здесь

Я хочу быть в состоянии сделать это с помощью powershell. Кроме того, мне нужно сделать то же самое для контрольных точек, файлов конфигурации и всех других компонентов виртуальной машины Hyper-V.

Я могу терпеть около 2 часов простоя, выполнение MOVE через мастера для всех виртуальных машин не только изнашивает мою мышь, но и занимает около 6 часов.

Я также исследовал это и проверял различные стратегии в течение пары недель.

==== Еще один выстрел ====

Я не ищу «Переместить», все, что я хочу сделать, это изменить настройки изнутри Hyper-V. Перемещение займет много времени, я гораздо быстрее копирую файлы по сети и просто обновляю пути. в Hyper-V я могу выключить машины.

Я думаю, что это не может быть сделано?

Энтони Форнито
источник
Какие исследования вы уже провели? Документация в модуле hyper-v мне кажется довольно хорошей. Где вы застряли?
Зоредаче
@ Zoredache, пожалуйста, посмотрите на обновление.
Энтони Форнито
1
Если они кластеризованы, вам просто нужно переместить хранилище, используя опцию перемещения хранилища. Он находится в графическом интерфейсе и не должен приводить к простоям. blogs.msdn.microsoft.com/clustering/2012/04/26/…
Drifter104
Im thinking it cannot be done?Я думаю, что это можно сделать, но это будет длинный и сложный сценарий. Практически все, что касается виртуальной машины, может быть полностью обработано с помощью powershell. Я подозреваю, что вы усложняете свою жизнь, не позволяя инструментам управлять перемещением файлов за вас.
Зоредаче
@Zoredache в идеальном мире, где у меня было 6 часов, да, было бы хорошо использовать инструменты, однако у меня есть 2
Энтони Форнито

Ответы:

8

Не совсем уверен, что это делает то, что вам нужно, но есть пример фрагмента 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\$_"
}

Если вы скопировали виртуальную машину и все ее файлы в новое местоположение и хотите, чтобы Hyper-V начал использовать новое местоположение, то вы сможете сделать что-то подобное.

Remove-VM oldvmname
Import-VM -Register -Path 'path to VM config file'
Zoredache
источник
Спасибо за код, но он все еще перемещает см. Обновление
виртуальной машины
Вы видели возможность переместить только хранилище, верно?
Зоредаче
Да, но я не пытаюсь «переместить» хранилище, я скопировал файл vhdx в новое место, также я могу использовать команду Set-VMHardDiskDrive, которая работает для изменения каталога хранилища, когда виртуальная машина выключена, что тоже хорошо, но я не могу узнать, как «ИЗМЕНИТЬ» указатель на файл конфигурации виртуальной машины.
Энтони Форнито
Если вы действительно скопировали все файлы и уверены, то удалите удаление и повторно импортируйте виртуальную машину. Ответ дополнен примером.
Зоредаче