Мне нужно перенести несколько виртуальных машин с одного кластера ESX 3.5 на другой. Хранилище необходимо перенести с одной iSCSI SAN на другую, а также с виртуальных машин.
Хосты в кластере A имеют доступ к одной iSCSI SAN, но не к месту назначения. Хосты в кластере B имеют доступ к обеим SAN.
Вручную я могу сделать это, выключив виртуальную машину, выполнив миграцию с хранилищем, указанным для миграции, а затем включив виртуальную машину в новом кластере.
Я знаю, что могу сделать это с несколькими запланированными задачами, но задача включения не может определить, завершена ли миграция. Я должен был угадать подходящее время.
Как я могу создать запланированную задачу, которая будет делать все это, с каждым шагом, ожидающим завершения предыдущего?
Бонусные баллы, если кто-нибудь может предложить, как я могу также перенастроить сетевую метку, используемую сетевой картой виртуальной машины как часть запланированной задачи - в новом кластере группы портов названы по-другому, поэтому я не уверен, что виртуальная машина подключится к новая группа портов правильно после завершения миграции (по крайней мере, инструмент ручной миграции указывает здесь на потенциальную проблему).
Скрипт Powershell / PowerCLI с использованием relocateVM метод.
поток vmware здесь. Его можно легко изменить, добавив задачи poweroff / poweron, вы можете прочитать его из CSV-файла с именами серверов, которые вы хотите перенести, или просто создать отдельную запланированную задачу Windows для каждого сервера.
Я согласен с Джейком. VMware PowerCLI очень хорош и предоставит вам необходимый контроль.
Что касается того, «как я могу также перенастроить сетевую метку, используемую сетевой картой виртуальной машины как часть запланированной задачи» - звучит так, как будто вам нужно переименовать группу портов на исходном хосте.
Без доступа к PowerCLI здесь я думаю, что это что-то вроде:
$objHost = Get-VMhost -name "<FQDN>"
foreach ($objPortGroup in (Get-VirtualPortGroup -VMhost $objHost)) {
if ( $objPortGroup -eq "old name" ) {
$objPortGroup | Set-VirtualPortGroup -Name "new name" -confirm:$false
}
}
Как я уже сказал, это не проверено, и я ценю, что это не так лаконично, как некоторые примеры PowerCLI, но я предпочитаю ясность умению.