Clone linux virtual machine

4.2. Cloning a Virtual Machine

Before proceeding with cloning, shut down the virtual machine. You can clone the virtual machine using virt-clone or virt-manager .

4.2.1. Cloning Guests with virt-clone

The virt-clone command provides a number of options that can be passed on the command line. These include general options, storage configuration options, networking configuration options, and miscellaneous options. Only the —original is required. To see a complete list of options, enter the following command:

The following example shows how to clone a guest virtual machine called «demo» on the default connection, automatically generating a new name and disk clone path.

Example 4.1. Using virt-clone to clone a guest

# virt-clone --original demo --auto-clone

The following example shows how to clone a QEMU guest virtual machine called «demo» with multiple disks.

Example 4.2. Using virt-clone to clone a guest

# virt-clone --connect qemu:///system --original demo --name newdemo --file /var/lib/libvirt/images/newdemo.img --file /var/lib/libvirt/images/newdata.img

4.2.2. Cloning Guests with virt-manager

This procedure describes cloning a guest virtual machine using the virt-manager utility.

Procedure 4.2. Cloning a Virtual Machine with virt-manager

Start virt-manager . Launch the Virtual Machine Manager application from the Applications menu and System Tools submenu. Alternatively, run the virt-manager command as root.

Select the guest virtual machine you want to clone from the list of guest virtual machines in Virtual Machine Manager .

Right-click the guest virtual machine you want to clone and select Clone . The Clone Virtual Machine window opens.

Clone Virtual Machine window

Change MAC Address window

Share disk with guest virtual machine name — The disk will be shared by the guest virtual machine that will be cloned and its clone

Источник

Клонирование виртуальных машин KVM

Перед клонированием убедитесь, что исходник содержит все необходимое для будущих клонов. Если вы только что установили операционную систему, подумайте, возможно имеет смысл доустановить mc, nano, traceroute, настроить сети, hostname, motd для ssh, iptables и др. Проверьте работу сети, установите последние обновления. А может быть, и httpd с почтовым сервером настройте. Убедитесь, что оригинал для клонирования не вызывает подозрений и работает стабильно. Готовы? Поехали!

Смотрим список виртуальных машин:

# virsh list --all Id Name State ---------------------------------------------------- 4 vm1 running

Создадим копию vm1 и назовем ее vm2.

Для начала остановим оригинал:

Дальше предлагаю рассмотреть два варианта:

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. На скорость не влияет. Главное, убедиться, что диск создан:

Читайте также:  Как создать сетевую папку linux

# 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 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

# 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 может быть очищена или заполнена таким количеством всяких команд, да еще и с очепятками, что вам опять придется разбираться по-новой.

# virsh list --all Id Name State ---------------------------------------------------- 7 vm2 running 9 vm1 running 10 vm3 running

Авторизуйтесь для добавления комментариев!

Читайте также:  Linux logitech keyboard drivers

Источник

Клонирование виртуальных машин KVM

Для клонирования ВМ можно использовать простую команду virt-clone. Это утилита командной строки для клонирования существующих образов виртуальных машин с использованием библиотеки «libvirt». Она скопирует образы дисков любой существующей ВМ и определит нового гостя с идентичной конфигурацией виртуального оборудования. Элементы, которые требуют уникальности, будут обновлены, чтобы избежать столкновения между старыми и новыми ВМ.

Как клонировать существующие образы виртуальных машин KVM в Linux

# virt-clone --original --auto-clone
# virt-clone --original --name --auto-clone
# virt-clone --original \ --name --file 

Пример клонирования ВМ с помощью virt-clone

ВМ для клонирования должна быть приостановлена или отключена. Чтобы корректно завершить работу ВМ с именем vm1, выполните:

ИЛИ поставьте ВМ на паузу:

$ sudo virsh suspend vm1 $ virsh list Domain vm1 suspended Id Name State ---------------------------------------------------- 1 terraform running 5 vm1 paused
$ sudo virt-clone --original vm1 --auto-clone WARNING Setting the graphics device port to autoport, in order to avoid conflicting. Allocating 'vm1-clone.qcow2' | 10 GB 00:00:04 Clone 'vm1-clone' created successfully.

Приведенная выше команда клонировала ВМ vm1, автоматически сгенерировав новое имя vm1-clone и путь к образу. Теперь можно запустить или снять с паузы оригинальную ВМ:

$ sudo virsh start vm1-clone

Примечание

virt-clone ничего не меняет в гостевой ОС, он только дублирует диски и вносит изменения на стороне хоста. Таким образом, такие вещи, как изменение паролей, изменение статического IP-адреса, ssh-ключей, имен хостов и т. д. не входят в сферу применения этого инструмента.

После входа в клонированную ВМ с помощью ssh вы можете изменить их:

$ ssh 192.168.122.123 $ sudo -s # echo 'vm1-clone' > /etc/hostname # sed -i 's/vm1/vm1-clone/g' /etc/hosts # reboot # rm -v /etc/ssh/ssh_host_* # dpkg-reconfigure openssh-server # passwd

Но что делать, если у вам надо сделать 10 клонов? Для этого можно воспользоваться утилитой virt-sysprep, чтобы изменить hostname ВМ и сбросить все настройки внутри ОС.

Сначала установите пакет libguestfs-tools:

# yum install -y libguestfs-tools
# virsh suspend vm01 # virt-clone --original vm01 --name vm02 --file /var/lib/libvirt/images/vm02-disk01.qcow2 # virsh resume vm01 # virt-sysprep -d vm02 --hostname vm02
[root@kvm libvirt]# virt-sysprep -d pgsql-1 --hostname pgsql-1 [ 0.0] Examining the guest . [ 9.5] Performing "abrt-data" . [ 9.5] Performing "backup-files" . [ 10.9] Performing "bash-history" . [ 10.9] Performing "blkid-tab" . [ 10.9] Performing "crash-data" . [ 10.9] Performing "cron-spool" . [ 10.9] Performing "dhcp-client-state" . [ 10.9] Performing "dhcp-server-state" . [ 10.9] Performing "dovecot-data" . [ 10.9] Performing "logfiles" . [ 11.1] Performing "machine-id" . [ 11.1] Performing "mail-spool" . [ 11.1] Performing "net-hostname" . [ 11.2] Performing "net-hwaddr" . [ 11.2] Performing "pacct-log" . [ 11.2] Performing "package-manager-cache" . [ 11.2] Performing "pam-data" . [ 11.2] Performing "passwd-backups" . [ 11.2] Performing "puppet-data-log" . [ 11.2] Performing "rh-subscription-manager" . [ 11.2] Performing "rhn-systemid" . [ 11.2] Performing "rpm-db" . [ 11.2] Performing "samba-db-log" . [ 11.2] Performing "script" . [ 11.2] Performing "smolt-uuid" . [ 11.3] Performing "ssh-hostkeys" . [ 11.3] Performing "ssh-userdir" . [ 11.3] Performing "sssd-db-log" . [ 11.3] Performing "tmp-files" . [ 11.3] Performing "udev-persistent-net" . [ 11.3] Performing "utmp" . [ 11.3] Performing "yum-uuid" . [ 11.3] Performing "customize" . [ 11.3] Setting a random seed [ 11.3] Setting the machine ID in /etc/machine-id [ 11.3] Setting the hostname: pgsql-1 [ 11.7] Performing "lvm-uuids" . 

Источник

Читайте также:  Linux cnc to gcode

How to Clone Virtual Machine in VirtualBox

Installing a fresh operating system on VirtualBox is easy and can be done in a short time. After that, there are so many steps like installing packages, hardening the OS, updating drivers, configuring development environments, etc.. have to be done.

This is ok if you have just one virtual machine to work with. What if you need to repeat the same procedure for 5, 10, or 15 more virtual machines? Do you think it is easy to set up everything manually for all the virtual machines? It is a time-consuming task, right? This is where the cloning process comes into play.

Cloning is a process where your disk images from one machine will be copied to spin up a new Guest VM.

Types of Cloning in VirtualBox

There are two types of cloning in VirtualBox.

  • Full Clone – In this mode, your existing disk image will be copied to a new location and a clone will be created. Your new disk will not be dependent on the source disk from where it is cloned from.
  • Linked Clone – In this mode, a differential image is created and the parent disk will be your source image disk. If you remove the parent disk then cloned machine will not work.

Note: The time of cloning a virtual machine relies on the size and the number of connected disk images.

Cloning a VirtualBox Virtual Machine

Creating a clone is a very simple process. Open VirtualBox Manager, choose the virtual machine to be cloned and right-click on the VM, and choose option clone. The cloning option will be disabled if VM is in a running state so make sure VM is turned off.

VirtualBox Clone

Once you initiate the clone, click on ‘Expert Mode‘ and there are few parameters we have to configure. Initially, we will do a full clone.

  • Name: Name of your VM.
  • Path: Storage location for your VM.
  • Clone type: Full Clone.
  • Snapshots: There are two snapshot options that specify whether to take a snapshot of the current machine state or everything. I don’t have any snapshot configured so I am choosing “Current Machine State“.
  • MAC Address Policy: when cloning you have the option to stick with the same MAC address or create a new one for your network interface. It is advisable to create a new one.
  • Keep Disk Names, Hardware UUIDs: This will retain the same Disk name and hardware UUID during cloning.

VirtualBox Clone SettingsClone Virtual Machine

Once you have filled all the necessary parameters and press clone you will see cloning will be started.

Clonning Virtual Machine

Once the cloning is completed your cloned image will be automatically displayed in the Virtualbox Manager.

View VirtualBox Cloned VM

In the next article, we will take a look at Importing and Exporting virtual machines in VirtualBox.

Источник

Оцените статью
Adblock
detector