Virtualbox: клонирование виртуальных машин
Клонирование созданных виртуальных машин — задача, частая при создании и тестировании собственных индивидуализированных сборок. Благо, в Virtualbox’е она выполняется не просто, а очень просто. Соответствующая функция вызывается либо из главного меню: Машина –> Клонировать, либо из контекстного меню по ПКМ:
Очевидно, что в любом случае клонируемая машина должна быть выключена — в работающей машине указанный пункт активизирован не будет.
В появившемся окне будет предложено задать имя новой машины — по умолчанию это будет Клон [orig-name], однако ясно, что оно может быть любым, кроме совпадающего с исходным:
Нужно ли генерировать новые MAC-адреса для сетевых устройств — зависит от задачи. Для тех целей, в которых я использую Virtualbox (тестирование и модификация собственных образов) — не нужно.
Далее предлагается определить с типом клонирования — полным или связным. Чем они разлимчаются — очевидно из поясняющего текста. Для моих целей подходит только полное клонирование:
Далее начинается процесс клонирования:
Длительность его зависит от величины VDI-образа и быстродействия. По завершении клонирования никакого сообщения не выводится — просто в списке виртуальных машин появляется ещё одно имя:
В примере можно видеть cintu-ts — собранную «вручную» систему-матку из mini.iso Ubuntu 16.04.1 и Cinnamon из репозитория Tsvetko, без всяких дополнительных компонентов, и два её (пока) точных клона, которым со временем предстоит стать mini- и midi-редакциями Cintu 16.04.2, соответственно.
Оставьте комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Клонирование виртуальных машин KVM
Перед клонированием убедитесь, что исходник содержит все необходимое для будущих клонов. Если вы только что установили операционную систему, подумайте, возможно имеет смысл доустановить mc, nano, traceroute, настроить сети, hostname, motd для ssh, iptables и др. Проверьте работу сети, установите последние обновления. А может быть, и httpd с почтовым сервером настройте. Убедитесь, что оригинал для клонирования не вызывает подозрений и работает стабильно. Готовы? Поехали!
Смотрим список виртуальных машин:
Создадим копию vm1 и назовем ее vm2.
Для начала остановим оригинал:
# virsh suspend vm1
или выключим его:
# virsh shutdown vm1
Дальше предлагаю рассмотреть два варианта:
1-й вариант: утилита virt-clone:
# virt-clone -o vm1 -n vm2 -f /data/vms/vm2.img —connect=qemu:///system
WARNING Setting the graphics device port to autoport, in order to avoid conflicting.
Allocating ‘vm2.img’ | 20 GB 00:00:06
Clone ‘vm2’ created successfully.
Т.к. команду мы выполняли от root, то virt-clone создала клон диска vm1.img с именем vm2.img с владельцем root:root, а не qemu:qemu. На скорость не влияет. Главное, убедиться, что диск создан:
# ls -al /data/vms/
total 3104656
drwxr-xr-x. 2 root root 4096 Apr 27 06:17 .
drwxr-xr-x. 5 root root 4096 Apr 19 17:45 ..
-rw-r—r—. 1 qemu qemu 21478375424 Apr 27 06:17 vm1.img
-rw-r—r—. 1 root root 1587609600 Apr 27 06:17 vm2.img
При запуске vm2 можете увидеть такое сообщение:
# virsh start vm2
error: Failed to start domain vm2
error: internal error: process exited while connecting to monitor: 2016-04-27T10:19:21.991952Z qemu-kvm: -chardev socket,id=charchannel0, path=/var/lib/libvirt/qemu/channel/target/domain-vm1/org.qemu.guest_agent.0,server,nowait: Failed to bind socket: Permission denied 2016-04-27T10:19:21.992122Z qemu-kvm: -chardev socket,id=charchannel0,path=/var/lib/libvirt/qemu/channel/target/domain-vm1/org.qemu.guest_agent.0, server,nowait: chardev: opening backend «socket» failed
Обратите внимание на domain-vm1 в тексте ошибки. Исправляем это (ищем domain-vm1 и заменяем на domain-vm2):
# virsh edit vm2
Domain vm2 XML configuration edited.
# virsh start vm2
Domain vm2 started
2-й вариант (ручками)
Т.к. vm2 уже есть, создадим vm3 и сравним результаты.
# virsh shutdown vm1
Делаем дамп xml от vm1:
# virsh dumpxml vm1 > /tmp/vm3-template.xml
Удаляем UUID оригинала, libvirt добавит новые значения:
# sed -i /uuid/d /tmp/vm3-template.xml
# sed -i ‘/mac address/d’ /tmp/vm3-template.xml
Переименовываем имена со старого на новое:
# sed -i s/vm1/vm3/ /tmp/vm3-template.xml
Создаем новую vm3:
# virsh define /tmp/vm3-template.xml
# virsh start vm1
# virsh start vm3
Этот вариант я подсмотрел здесь: http://unix.stackexchange.com/questions/8351/
Разбор полетов
В чем я увидел отличия, так это в том, что в первом случае размер диска vm2 сильно отличался от размера vm3:
# ls -al —block-size=M /data/vms/
total 4550M
drwxr-xr-x. 2 root root 1M Apr 27 06:44 .
drwxr-xr-x. 5 root root 1M Apr 19 17:45 ..
-rw-r—r—. 1 qemu qemu 20484M Apr 27 07:00 vm1.img
-rw-r—r—. 1 qemu qemu 1515M Apr 27 07:00 vm2.img
-rw-r—r—. 1 qemu qemu 20484M Apr 27 06:59 vm3.img
Судя по всему, virt-clone при создании клона копирует только реально занятое виртуальной машиной место. Размер vm2.img лишь чуть-чуть больше, чем показания «df -h», выполненной в vm1, vm2 или vm3 (т.к. между клонированиями я ничего с гостями не делал, то и размер их не менялся относительно «предка» vm1).
Вообще, когда вы с чем-то сталкиваетесь впервые, старайтесь анализировать изменения после каждого шага. Сделали «sed -i /uuid/d /tmp/vm3-template.xml» — посмотрели. Сравнили с оригиналом. Потом склонировали vm2, на всякий случай просмотрите директорию, где у вас хранятся диски гостей. Создали новую сеть — поинтересуйтесь, был ли создан файл настроек сети в /etc/libvirt/qemu/networks. Ну и в таком роде.
Где бы вы что-то ни увидели, старайтесь все, что вам незнакомо, проверять до выполнения в консоли. Увидели в этой статье пример команды virt-clone, не поленитесь, сходите в интернет и поищите, кто еще так предлагает, что пишет man.
Старайтесь все ваши действия документировать, записывать, комментировать и тогда вы получите свой собственный how-to и будете его использовать, когда надо будет через год создать еще парочку гостей. Если вы не создаете виртуальные машины регулярно, то будет нормально, если вы забудете синтаксис, а history может быть очищена или заполнена таким количеством всяких команд, да еще и с очепятками, что вам опять придется разбираться по-новой.
Клонирование диска виртуальная машина
Добрый день уважаемые читатели, не так давно, мы с вами разбирали процесс клонирования виртуальных машин Hyper-V, сегодня же мы с вами разберем, его главное конкурента, а именно гипервизор ESXI, в котором мы так же произведем клонирование виртуальной машины VMware. Сам процесс не сложный, но может у начинающих системных администраторов вызывать ряд вопросов, на которые я отвечу в этой статье.
Принцип клонирования
Клонирование — это создание точной копии виртуальной машины, как с теми же настройками, так и с нужными изменениями. Очень удобно, как в тестовых целях, когда необходимо провести нужные изменения, но вы не знаете как поведет себя виртуальная машина, сделав ее копию вы это узнаете и сможете избежать простоя сервисов. Какие методы клонирования существуют:
- Копирование файлов виртуальной машины (в выключенном состоянии), из минусов, нужно заново ее создавать в инвентории и подсовывать существующие диске.
- С помощью VMware vCenter Converter Standalone, это вариант когда нет vCenter Server. Там принцип простой, вы устанавливаете его в виртуальную машину и делаете его клон , как будто это физическая машину, все подробно описано, по ссылке выше.
- Средствами резервного копирования виртуальных машин «Veeam Backup Replication»
- С помощью vCenter Cerver.
Ниже опишу первый метод и последний, остальные уже имеют свои подробные статьи.
Копирование файлов VM
Находим нужный ESXI хост, выбираем нужный вам дисковый массив (Datastore) и щелкаем по нему правым кликом мыши, из контекстного меню выбирает «Browse Datastore».
Выбираем нужную папку и из контекстного меню пункт «Copy», далее с помощью встроенного проводника, перемещаем ее в нужное местоположение, можно назвать это таким клонированием виртуальной машины VMware, для бедных.
Далее, на новом месте, открываете папку и щелкаете правым кликом по файлу с расширением *.vmtx, это конфигурационный файл. По сути на этом все. Лично я, чтобы получить доступ к файловой системе ESXI использую WinSCP, либо вы еще можете воспользоваться функциями OVA шаблона.
Копирование VM с помощью vCenter
У тех товарищей, кто централизованно управляет своей инфраструктурой, данная функция присутствует при установке. Ее преимущество в том, что клонировать можно как работающую, так и не работающую виртуальную машину. Выбираем нужную и щелкаем по ней правым кликом, в контекстном меню видим пункт «Clone».
На первом окне мастера вас спросят выбрать локацию (Datacenter)
Указываем хост назначения, если он подходит, вы увидите сообщение «Validation succeded»
Если же нет, то вы увидите сообщения:
- Device CD/DVD drive 1 used backing — исправимая вещь, вам говорят, чтобы вы отмантировали ISO в виртуалке.
- Network interface «имя адаптера» uses network «другое имя» — типа такой сети на хосте назначения нет, то же ничего страшного, пере воткнете в другой после клонирования.
На следующем шаге клонирования, вам необходимо выбрать тип дисков ESXI и место назначения копии машины.
На последнем шаге, вас спросят, хотите ли вы применить кастомные настройки к клону. Customise — это дополнительная настройка, позволяющая задать огромное количество установок. Выбрав пункт «Do not customise» вы закончите процесс мастера клонирования.
Выбрав пункт «Customise using an existing customization specification» вы сможете применить заранее подготовленные файлы кастомизации.
Если же выберите «Custome using the Customization Wizard», то откроете мастер кастомизации, состоящий из:
- Задания имени виртуальной машины в ESXI
- Задать имя внутри виртуальной машины
- Пароль администратора
- Часовая зона
- Тип ОС
Надеюсь после прочтения данной статьи, вы смогли найти ответы, как клонировать vm в VMware ESXI.
Клонирование, импорт и экспорт виртуальных машин в Hyper-V
В Hyper-V в отличии от VMWare нет встроенной функции клонирования виртуальной машины (клонирование есть только в Virtual Machine Manager). Чтобы создать полную копию существующей ВМ придется использовать функцию импорта/экспорта. В этой статье мы рассмотрим, как клонировать виртуальную машину в Hyper-V через импорт/экспорт через графический интерфейс Hyper-V Manager, PowerShell и Windows Admin Center (WAC).
%WINDIR%\system32\sysprep\sysprep.exe /generalize /shutdown /oobe
ВМ будет выключена и при следующей загрузке как оригинальной ВМ, так и ее клона для Windows будет сгенерирован новый SID. Также нежелательно клонировать ВМ, включенные в домен Active Directory.
Экспорт/импорт ВМ из консоли Hyper-V Manager
Сначала нужно экспортировать ВМ в отдельный каталог.
Запустите консоль Hyper-V manager, выберите ВМ и в контекстном меню выберите Export.
Укажите каталог, в который нужно экспортировать виртуальную машину.
Статус экспорта ВМ будет отображен в строке состояния ВМ в консоли Hyper-V.
Чтобы импортировать ВМ щелкните в консоли Hyper-V Manager по имени хоста и выберите Import Virtual Machine.
Затем нужно указать путь к каталогу, в котором находятся папки с файлами импортируемой ВМ. При импорте ВМ в Hyper-V предлагается 3 варианта регистрации ВМ на хосте:
- Register the virtual machine in-place (use the existing unique ID) —зарегистрировать ВМ в каталоге с импортируемыми файлами, ID ВМ сохраняется;
- Restore the virtual machine (use the existing unique ID) — скопировать файлы ВМ в другой каталог, сохранить исходный идентификатор ВМ;
- Copy the virtual machine (create a new unique ID) — скопировать ВМ в другую каталог и сгенерировать новый ID.
Если вы попробуете импортировать ВМ с дублирующим ID, появится ошибка:
Чтобы создать клон ВМ с новым ID мы выбрали 3 вариант. Мастер предложит указать в каких каталогах нужно разместить файлы ВМ. По умолчанию, используются каталоги, заданные в настройках хоста Hyper-V.
Затем укажите каталог для хранения виртуальных дисков vhdx ВМ.
После этого новая клонированная виртуальная машина появится в консоли Hyper-V.
Клонирование ВМ через экспорт/импорт в Hyper-V с помощью PowerShell
Рассмотрим, как клонировать виртуальную машину Hyper-V через импорт/экспорт из консоли PowerShell.
Для экспорта ВМ воспользуйтесь такой командой:
Export-VM -Name win10 -Path ‘C:\VHD\export’
Если вы хотите экспортировать запущенную ВМ, вы можете использовать параметр CaptuteLiveState, в котором определяется как нужно копировать оперативную память ВМ. Доступны три опции
- CaptureSavedState – экспортировать оперативную память (по-умолчанию);
- CaptureDataConsistentState – экспортировать состояние ВМ из Production checkpoint;
- CaptureCrashConsistentState – не сохранять содержимое памяти.
Export-VM -Name win10 -Path ‘C:\VHD\export’ -CaptureLiveState CaptureCrashConsistentState
Если вы хотите экспортировать состояние ВМ в определеном снимке, нужно указать его имя.
Сначала выведите список снимков для указанной ВМ:
Get-VMSnapshot -VMName win10
Затем выполните экспорт нужного снимка по его имени:
Export-VMSnapshot -Name “win10 — (2/17/2021 — 9:52:20 PM) Standard” -VMName win10 -Path ‘C:\VHD\export’
После завершения экспорта ВМ вы можете импортировать ее. Если нужно зарегистрировать ВМ по хранения файлов, выполните команду:
Import-VM -Path «C:\VHD\export\win10\Virtual Machines\1117A061-0B50-4BC2-850C-88CCD4C114FB.vmcx»
В параметре Path указываем расположение vmcx файла конфигурации ВМ (формат vmcx заменил XML формат конфигурационных файлов ВМ в Hyper-V Server 2016). Для копирования ВМ в другой каталог с тем же ID используйте параметр Copy. Чтобы сгенерировать нового идентификатор ВМ, используйте параметр GenerateNewId:
Import-VM -Path «C:\VHD\export\win10\Virtual Machines\1117A061-0B50-4BC2-850C-88CCD4C114FB.vmcx» -VhdDestinationPath «C:\VHD\win10_2» -VirtualMachinePath «C:\VHD\win10_2»
В параметре VhdDestinationPath указывается каталог, куда нужно скопировать VHDX файлы ВМ, а в параметре VirtualMachinePath — каталог конфигурационных файлов ВМ. Если эти параметры не задать, файлы ВМ будут скопированы в дефолтный каталог, указанный в настройках хоста Hyper-V (C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines\).
Обратите внимание, что клонированная ВМ появилась в консоли Hyper-V с оригинальным именем. Переименуем новую ВМ, но сначала нужно получить ее ID:
get-vm | select VMNAME,VMId
Как вы видите в консоли есть две ВМ с одинаковым именем и разными ID. Нужно переименовать ВМ с ID, который отличается от ID импортируемой ВМ. Скопируйте ID новой ВМ и переименуйте ее:
Затем для удобства можно переименовать виртуальный жесткий диск.
Get-VHD -VMId 24ad8934-f650-46f6-9caa-2a3b79b79bd5| Select Path | Rename-Item -NewName win10_2.vhdx
Remove-VMHardDiskDrive -VMName win10_2 -ControllerType SCSI -ControllerLocation 0 -ControllerNumber 0
Add-VMHardDiskDrive -VMName win10_2 -ControllerType SCSI -ControllerNumber 0 -ControllerLocation 0 -Path «C:\VHD\win10_2\win10_2.vhdx»
Изменим MAC адрес виртуального адаптера (можно указать новый статический MAC или настроить динамическое получение MAC адреса).
Set-VMNetworkAdapter -VMName win10_2 -DynamicMacAddress
Start-VM -Name win10_2
Прежде, чем подключить новую ВМ в сеть, желательно переименовать ее и изменить IP адрес на новый (если используется DHCP адресация, этот шаг можно пропустить). В данном случае мы можем подключиться к новой ВМ через PowerShell Direct с помощью командлета Invoke-Command или Enter-PSSession:
Enter-PSSession -ComputerName win10_2 -Credential (Get-Credential)
Rename-Computer win10_2
Remove-NetIPAddress -InterfaceAlias “Ethernet” -AddressFamily IPV4
New-NetIPAddress -IPAddress 192.168.31.50 -InterfaceAlias “Ethernet” -AddressFamily IPv4 -PrefixLength 24
Restart-Computer
Клонирование виртуальных машин Hyper-V через Windows Admin Center
Возможно клонировать ВМ Hyper-V напрямую без промежуточного экспорта/импорта появилась в Windows Admin Center v2009.
Запустите WAC, выберите раздел Virtual Machines, выберите ВМ -> Manage -> Clone.
Затем нужно указать имя новой ВМ и каталог, в который нужно поместить ее файлы.
Обратите внимание, что мастере клонирования есть опция “I have already run sysprep on my VM”. Если вы не выполнили генерализацию образа с помощью Sysprep, и не включили эту опцию, Hyper-V создаст снапшот исходной ВМ, выполните ее Sysprep и склонирует в новую (исходная ВМ будет несколько раз перезагружена и не доступна для работы). После этого исходная ВМ будет возвращена в первоначальное состояние, а снапшот удален.
Дождитесь окончания клонирования ВМ. Новой ВМ автоматически будет присвоен новый ID.