В этом руководстве мы рассмотрим, как использовать Vagrant с Libvirt в Linux. Vagrant — это программное обеспечение с открытым исходным кодом, написанное на Ruby, чтобы помочь вам создавать и поддерживать портативные виртуальные среды разработки программного обеспечения, например для VirtualBox, Hyper-V, контейнеров Docker, VMware, Libvirt и AWS. Vagrant упрощает создание, остановку и уничтожение виртуальных машин.
Самым популярным вариантом использования на локальных машинах является использование провайдера VirtualBox. Если вы являетесь пользователем KVM и QEMU, эта статья для вас. KVM, как известно, имеет лучшую производительность и меньшее использование ресурсов по сравнению с Virtualbox. Читать →
Сегодня рассмотрим пример переноса виртуальной машины с VirtualBox в KVM виртуализацию. Возможно, у вас есть несколько важных гостевых машин на VirtualBox. Вместо создания новых гостей KVM с такой же конфигурацией, вы можете легко перенести существующие виртуалки Virtualbox на KVM, как описано в это мануале.
Перенос виртуальных машин Virtualbox на виртуальные машины KVM на Linux
Отключите все виртуальные машины, размещенные на KVM и VirtualBox.
Далее необходимо зайти на VirtualBox и посмотреть какой диск использовался для хранения нашей виртуальной машины. Если динамический, то надо сделать его копию в статический vdi (я использую этот формат). Это можно сделать либо в графической морде VirtualBox, либо в командной строке:
Формат образа диска по умолчанию у виртуальной машины Virtualbox — VDI.
Мы можем найти список образов виртуальных дисков и их расположение с помощью команды:
vboxmanage list hdds
или,
VBoxManage list hdds
Пример вывода:
UUID: 8345103c-5113-8399-4517-681002110040
Parent UUID: base
State: created
Type: normal (base)
Location: /home/user/VirtualBox VMs/ubnsrv20.04/ubnsrv 20.04.vdi
Storage format: VDI
Capacity: 10240 MBytes
Encryption: disabled
Как видно из вывода у меня она виртуальная машина Virtualbox, расположенная по пути /home/user/VirtualBox VMs/ubnsrv_20.04/ubnsrv_20.04.vdi.
Теперь можно пойти двумя путями. Первый путь актуален для Windows виртуальных машин. Второй в большей степени для Linux:
Готовим систему Windows к переносу.
Выше я описывал как преобразовать диск из динамического в статический, назовем его static.vdi. Примонтируем его вместо динамического и удаляем VirtualBox Guest Tools.
Для успешной работы Windows необходимо иметь в наличии драйвера VirtIO для KVM. Скачиваем нужные с офф. сайта вот ссылка.
Рекомендуется сначала установить драйверы в гостевой системе, а уже после этого подключать или изменять устройства с целью использования паравиртуализированных драйверов. Для блочных устройств, на которых расположены корневые файловые системы или другие блочные устройства, необходимые для загрузки гостя, потребуется установить драйверы, прежде чем приступить к изменению настроек устройства.
Готовим систему Linux к переносу.
Преобразуем образа ubnsrv 20.04.vdi в формат необработанного диска с помощью команды «vboxmanage»:
vboxmanage clonehd --format RAW "/home/user/VirtualBox VMs/ubnsrv_20.04/ubnsrv_20.04.vdi" ubnsrv_20.04.raw
Пример вывода:
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone medium created in format 'RAW'. UUID: 8345103c-5113-8399-4517-681002110040
Т.к. образ RAW является необработанным форматом диска (не сжатым), то он занимает много свободного пространства на вашем HDD/SSD.
Давайте преобразуем формат образа RAW в формат диска KVM qcow2 со сжитием , с помощью команды qemu-img:
qemu-img convert -f raw ubnsrv_20.04.raw -O qcow2 ubnsrv_20.04.qcow2
Можете попробовать преобразовать формат VDI сразу в формат qcow2
Мы конвертировали нашу виртуальную машину из формата VDI, т.е. образа диска Virtualbox в формат образа KVM – qcow2.
Теперь вы можете импортировать образ диска на существующий компьютер KVM или создать новый экземпляр с этим вновь преобразованным образом диска KVM из командной строки или с помощью любых графических приложений управления KVM, таких как Virt-manager или веб-консоль Cockpit.
Занимался на днях переносом виртуальных машин с обычного kvm гипервизора на proxmox. На исходном гипервизоре диски виртуальных машин были в формате qcow2. Я решил заодно сконвертировать диски из qcow2 в lvm и написать заметку об этом, чтобы не забыть.
Сегодня в статье установим и настроим KVM сервер на операционной системе Ubuntu Server 20.04 LTS.
KVM (kernel-based virtual machine) – это программное обеспечения для Linux, использующее аппаратные средства x86-64-совместимых процессоров для работы с технологией виртуализации Intel VT или AMD SVM.
Подготовка к установки KVM на Ubuntu Server
Для начала давайте проверим поддерживается ли виртуализация Intel VT или AMD-V нашим процессором, для этого установим небольшую утилиту:
sudo apt install cpu-checker
Далее набираем команду:
kvm-ok
Если вывод будет такой как ниже, то виртуализация поддерживается вашим процессором:
INFO : /dev/kvm exists KVM acceleration can be used
Ещё один способ проверить поддерживается ли технология вашим CPU это посмотреть его флаги:
egrep -c "svm|vmx" /proc/cpuinfo
Если вывод не пустой, значит поддерживается, и можно переходить к установке KVM .
Установка KVM на Ubuntu Server
Для того чтобы установить KVM из терминала набираем следующую команду:
Следующим шагом при реализации kvm виртуализации будет настройка сетевого моста на вашем сервере. Как это сделать я писал в этой статье.
Да чуть не забыл, управление виртуальными машинами из консоли производится при помощи утилиты virsh. Так что для начала можно посмотреть man или help данной утилиты:
man virsh
virsh -h
Давайте рассмотрим некоторые полезные команды необходимые для управления нашими будущими гостевыми ОС.
Смотрим список доступных сетей:
sudo virsh net-list
Просмотр информации о конкретной сети (с именем default):
sudo virsh net-info default
Если уже был сконфигурирован сетевой мост то доступные интерфейсы можно посмотреть так:
sudo virsh iface-list
Смотрим список доступных оптимизаций для гостевых ОС:
sudo virt-install --os-variant list
У меня данная команда не заработала. Если вы столкнулись с такой же проблемой, то для просмотра доступных гостевых ОС проделываем следующее.
Устанавливаем необходимую утилиту:
sudo apt install libosinfo-bin
Теперь набираем команду:
osinfo-query os
Вывод будет примерно такой:
Ну вот, когда мы знаем всю интересующую нас информацию можно приступать к установке виртуальной машины.
Установка виртуальной машины Ubuntu 16.04 на KVM
В качестве гостевой системы установим Ubuntu 16.04 с GUI. Также для меня пути по умолчанию не годятся:
/var/lib/libvirt/boot/ — ISO-образы для установки гостевых систем;
После завершения скачивания создадим нашу виртуальную машину на дистрибутиве Ubuntu Desktop 16.04 с 2 CPU, 2 Гб RAM и 20 Гб места на диске, подключенную к сети br0.:
Теперь давайте разберемся что же мы тут написали: --name – имя виртуальной машины --ram – количество выделенной памяти. --vcpus – количество ядер выделенных профессоров --os-variant – оптимизация под конкретную гостевую ОС. --autostart – автоматический запуск гостевой ОС. --cdrom – расположение iso образа устанавливаемой ОС. --network – к какой сети будет подключена наша виртуальная машина,model=virtio – модель сетевого адаптера. --graphics – способ подключения к нашей гостевой ОС (в данном случае vnc), listen=0.0.0.0,password=qwerty – на каких IP интерфейсах принимать соединения и с каким паролем). --disk path – расположение образа виртуального hdd (диска), size=20 – размер диска 20 Гбайт.
Основные команды virsh
Давайте теперь рассмотрим основные команды для работы с KVM.
Обратите внимание на Слэш в имени пути к iso-образу. Оборотный Слэш ставится если у вас в названии файла есть пробелы.
На сервере вводим:
virsh vncdisplay WIN-7
команда покажет, на каком порту работает VNC для машины WIN-7. У меня было:
:1
:1 значит, что нужно к 5900 прибавить 1 — 5900 + 1 = 5901.
Установка Virt-Manager
Для более комфортной работы с виртуальными машинами можно установить virt-maneger и с него производить установку и настройку всех виртуальных машин. Для того чтобы установить virt-manager нам понадобится: Сервер с графическим интерфейсом (Ubuntu Desktop) ПК с графическим интерфейсом (Ubuntu Desktop | Linux Mint)
Я же буду использовать свой ПК с операционной системой Linux Mint 19. И так для установки пакета virt-manager в терминале набираем:
По-умолчанию, образ в формате RAW (IMG). Из всех перечисленных в man qemu-img типов дисков наиболее гибким и современным является QCOW2. Он поддерживает снапшоты, шифрование и сжатие. Его необходимо создавать до того, как создать новую гостевую систему.
Согласно тому же man qemu-img, предварительное размещение метаданных (-o preallocation=metadata) делает диск изначально немного больше, но обеспечивает лучшую производительность в те моменты, когда образу нужно расти. Кроме типа образа впоследствии можно будет выбрать способ его подключения — IDE, SCSI или Virtio Disk.
Конвертирование:
qemu-img convert -f raw -O qcow2 image.img image.qcow2
Потом выставить права и owner-а на файл образа и скопировать в папку с образами. В virtual-manager останавливаем гостевую систему, удаляем старый диск и добавляем новый.