Клонирование виртуальной машины astra linux

Клонирование виртуальных машин 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 mint звук при выходе

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

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

Читайте также:  Alt linux сборка rpm

# 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

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

Читайте также:  Draw on desktop linux

Источник

Исходные данные

Имеется компьютер с настроенной системой локальной виртуализации VMware, в которой работают виртуальные машины (ВМ).

Эти ВМ необходимо без изменений перенести в ПК СВ «Брест».

Перенос показан на примере системы виртуализации VMware. Перенос ВМ из других систем виртуализации (например, из VirtualBox) осуществляться подобным образом: путем экспорта исходной ВМ в формат *.ova и переноса файлов в ПК СВ «Брест».

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

  1. Открыть интерфейс управления VMware;

Если ВМ работает, то выключить ее штатными средствами:

После выключения ВМ перейти в меню «Файл» — «Экспорт в OVF»:

  • Выбрать имя для файла, в котором будет сохранена экспортируемая ВМ. Система автоматически присваивает такое же имя как и было в VMware, можно использовать его, указав расширение имени файла ova :
  • Нажать Сохранить для выполнения экспорта после чего появится окно с отображением процесса экспорта ВМ:

    По окончанию процесса экспорта в выбранном для сохранения месте появится файл с расширением .ova:

    Импорт виртуальных машин в ПК СВ «Брест»

    1. .vmdk: файл-образ диска ВМ;
    2. .ovf: XML документ, описывающий параметры ВМ. В этом файле содержится информация о размере оперативной памяти, количестве процессоров и пр., которую можно использовать при создании новой ВМ в ПК СВ «Брест».

    В результате конвертирования будет создан файл <новое_имя_файла>.qcow2 который далее можно использовать для создания ВМ;

    Запустить virt-manager;

  • Начать создание новой виртуальной машины:
  • Расположение установочного носителя можно выбрать произвольно (или в соответствии с параметрами переносимой ВМ):

    Система предложит минимальный рекомендуемый объем оперативной памяти (ОЗУ) для виртуальной машины из доступной серверу виртуализации и количество процессоров. Указать значения, нужные для переносимой ВМ:

    Выбрать файл с экспортированным образом ВМ:

    Указать имя новой ВМ. Р екомендуется включить чекбокс «Проверить конфигурацию перед установкой», для того чтобы проверить/изменить конфигурацию ВМ перед началом установки:

  • Нажать «Готово»;
  • Проверить и по необходимости изменить конфигурацию создаваемой ВМ и нажать «Начать установку»:

  • После завершения установки откроется окно с ВМ, которая ранее функционировала в VMware:
  • Источник

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