Импорт в ESXi всех виртуальных машин с датастора.
Импорт в онсастку ESX(i) вирутальных машин из датастора можно сделать из контекстного меню .vmx файла виртуальной машины (выбрав Browse Datastore, и найдя нужный файл. Но если таких машин больше несколькоих десятков, а то и сотни – на выполнение этих рутинных операций в ручную можно потратить много часов времени.
Мне пришлось переустановить один сервер с ESX 3.5 на ESXi 3.5 сохранив все виртуальные машины на отдельных датасторах (это были локальные диски, но ситуация не отличилась бы и в слуачае NAS/SAN хранилища). Замечу, для того что бы подключить к новой инсталяции ESXi 3.5 старые диски с сохранением существующих VMFS разделов нужно на новом хосте в конфигурации выбрав “Advanced Settings”, в разделе “LVM” изменить опцию “LVM.EnableResignaturing” c нуля на единицу и сделать Rescan всех котроллеров систем хранения с опцией поиска новых VMFS разделов.
Собстевнно массовый импорт машин для ESX хоста описан тут: Mass Import VMs to New ESX Host by .VMX files, там приведено два способа.
Первый способ – сделать скрипт.
for i in `find /vmfs/volumes/ -name "*.vmx" `
do
echo "Registering VM $i"
vmware-cmd -s register $i
done
Скрипт нужно сохранить, например, как massImport.sh, дать ему права на выполнение (chmod +x /path-to-script/massImport.sh) и выполнить. У этого решения свой недостаток – если в пути/имени виртуалки содержатся пробелы, то ничего не получится. Эта проблема решается во втором варианте.
Второй – одной строкой из консоли ESX:
find /vmfs/volumes -name “*.vmx” | while read LINE; do echo “registering VM $LINE”; vmware-cmd -s register $LINE
Но это решения дл ESX, а в моем случае был ESXi. Для ESXi комманды vmware-cmd нету, а на ESX я эти варианты не проверял… Немного погуглив я нашел список команд для работы через SSH/CLI с ESXi. Разрешив из локальной консоли доступ к ESXi по ssh, я нашел и протестировал работу аналога нужной команды.
vim-cmd solo/registervm /vmfs/vol/datastore/dir/vm.vmx
Registers vm in hypervisor inventory
т.к. у меня была куча виртуалкок в имени (и пути к VMX файлу) которых содержались пробелы, я решил “поправить” второй способ для работы в ESXi. Эта команда импортирует все виртуальные машины с выбранного датастора “Temp-IT-Drive(1TB)” в “корень” оснастки хоста. Вот что вышло:
find /vmfs/volumes/Temp-IT-Drive\(1TB\)/ -name "*.vmx"| while read LINE; do echo "registering VM $LINE"; vim-cmd solo/registervm "$LINE";done
Пришлось добавить к исходному варианту “;done” в конце и заключить $LINE в ковычки выполнении команды импорта, иначе виртуалки “с пробелами” все же не обрабатывались.
Вот собственно и все, если есть что добавить – велком в коменты.


Вот сегодня еще подтвердил работу своего варианта на ESXi 5.0 RC1. Все отработало шикарно, нужно было только имя датастора подправить и все.
комментарий от Ded_mazday | Июнь 27, 2011