Назад | Перейти на главную страницу

Как создать сложную запланированную задачу vmotion в ESX 3.5

Мне нужно перенести несколько виртуальных машин с одного кластера 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, но я предпочитаю ясность умению.