Запуск виртуальной машины на ubuntu server
1. Вступление
В рамках этой статьи рассмотрим подробную установку средства виртуализации Oracle VM VirtualBox (далее просто VirtualBox) и создания виртуальной машины под управлением Ubuntu 18.04 Server.
Почему будем использовать именно VirtualBox?
Причин несколько:
Зачем это нужно?
1) Для обучения;
2) Для тестирования каких-то программ, сборки пакетов под определённую конфигурацию системы;
3) Для решения задач «домашнего сервера» при наличии мощной машины хоста;
Версии ПО используемые для установки в данном руководстве:
— Windows 10, версии 1903;
— VirtualBox 6.1;
— Ubuntu 18.04 Server LTS;
2. Подготовка
2.1 Скачивание, установка и настройка Oracle VM VirtualBox
2.2 Скачивание образа системы Ubuntu 18.04 Server
Пока скачивается одно, можно загрузить образ системы с официального сайта:
https://releases.ubuntu.com/18.04.4
Выбираем тут Server install image
(Прямая ссылка:
http://releases.ubuntu.com/18.04/ubuntu-18.04.3-live-server-amd64.iso ),
выбираем путь для сохранения.
Готово.
3. Установка VirtualBox
Установка самого VirtualBox
не сложна и заключается, в основном,
в «Далее-Далее-Принять-Готово»,
(кроме двух моментов о которых
расскажу далее),
подробно расписывать его
установку смысла не имеет,
но скриншоты процесса приложу ниже.
Два «сложных» момента заключаются в следующем:
1) Необходимо включить в BIOS
ПК на который устанавливается
средство виртуализации,
настройку Virtualization Technology.
2) При установке кратковременно
пропадёт сеть на ПК, VirtualBox
об этом любезно предупредит.
Настройка KVM на Ubuntu Server
Инструкция написана на примере Linux Ubuntu Server 18.04.3 LTS. Она подойдет для большинства дистрибутивов на основе Debian.
Проверка поддержки гипервизора
Проверяем, что сервер поддерживает технологии виртуализации:
cat /proc/cpuinfo | egrep «(vmx|svm)»
В ответ должны получить что-то наподобие:
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 popcnt aes lahf_lm epb tpr_shadow vnmi flexpriority ept vpid dtherm ida arat
В противном случае, заходим в БИОС, находим опцию для включения технологии виртуализации (имеет разные названия, например, Intel Virtualization Technology или Virtualization) и включаем ее — задаем значение Enable.
Также проверить совместимость можно командой:
* если команда вернет ошибку «kvm-ok command not found», установите соответствующий пакет: apt-get install cpu-checker.
INFO: /dev/kvm exists
KVM acceleration can be used
значит поддержка со стороны аппаратной части есть.
Подготовка сервера
Для нашего удобства, создадим каталог, в котором будем хранить данные для KVM:
* будет создано два каталога: /kvm/vhdd (для виртуальных жестких дисков) и /kvm/iso (для iso-образов).
\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
* данная команда задает зону в соответствии с московским временем.
* выполняем синхронизацию с сервером времени.
Установка и запуск
Устанавливаем KVM и необходимые утилиты управления.
а) Ubuntu до версии 18.10
apt-get install qemu-kvm libvirt-bin virtinst libosinfo-bin
б) Ubuntu после 18.10:
apt-get install qemu-kvm libvirt-daemon-system libvirt-bin virtinst libosinfo-bin
* где qemu-kvm — гипервизор; libvirt-bin — библиотека управления гипервизором; virtinst — утилита управления виртуальными машинами; libosinfo-bin — утилита для просмотра списка вариантов операционных систем, которые могут быть в качестве гостевых.
Настроим автоматический запуск сервиса:
systemctl enable libvirtd
systemctl start libvirtd
Настройка сети
Виртуальные машины могут работать за NAT (в качестве которого выступает сервер KVM) или получать IP-адреса из локальной сети — для этого необходимо настроить сетевой мост. Мы настроим последний.
Используя удаленное подключение, внимательно проверяйте настройки. В случае ошибки соединение будет прервано.
apt-get install bridge-utils
а) настройка сети в старых версиях Ubuntu (/etc/network/interfaces).
Открываем конфигурационный файл для настройки сетевых интерфейсов:
И приведем его к виду:
#iface eth0 inet static
# dns-nameservers 192.168.1.1 192.168.1.2
iface br0 inet static
dns-nameservers 192.168.1.1 192.168.1.2
* где все, что закомментировано — старые настройки моей сети; br0 — название интерфейса создаваемого моста; eth0 — существующий сетевой интерфейс, через который будет работать мост.
Перезапускаем службу сети:
systemctl restart networking
б) настройка сети в новых версиях Ubuntu (netplan).
* в зависимости от версии системы, конфигурационной файл yaml может иметь другое название.
Приводим его к виду:
* в данном примере мы создаем виртуальный бридж-интерфейс br0; в качестве физического интерфейса используем eth0.
Применяем сетевые настройки:
Настаиваем перенаправления сетевого трафика (чтобы виртуальные машины с сетевым интерфейсом NAT могли выходить в интернет):
Создание виртуальной машины
Для создания первой виртуальной машины вводим следующую команду:
Подключение к виртуальной машине
На компьютер, с которого планируем работать с виртуальными машинами, скачиваем VNC-клиент, например, TightVNC и устанавливаем его.
virsh vncdisplay VM1
команда покажет, на каком порту работает VNC для машины VM1. У меня было:
* :1 значит, что нужно к 5900 прибавить 1 — 5900 + 1 = 5901.
Запускаем TightVNC Viewer, который мы установили и вводим данные для подключения:
Пример подключения к виртуальной машине с помощью TightVNC
Кликаем по Connect. На запрос пароля вводим тот, что указали при создании ВМ, (vnc_password). Мы подключимся к виртуальной машине удаленной консолью.
Если мы не помним пароль, открываем настройку виртуальной машины командой:
* в данном примере для доступа к виртуальной машине используется пароль 12345678.
Управление виртуальной машиной из командной строки
Примеры команд, которые могут пригодиться при работе с виртуальными машинами.
1. Получить список созданных машин:
2. Включить виртуальную машину:
virsh start VMname
* где VMname — имя созданной машины.
3. Выключить виртуальную машину:
virsh shutdown VMname
4. Включить автозапуск виртуальной машины:
virsh autostart VMname
5. Редактирование конфигурации виртуальной машины:
6. Работа с сетевыми интерфейсами.
Добавить обычный сетевой интерфейс (default или NAT) виртуальной машине:
Добавить интерфейс типа bridge:
Удалить сетевой интерфейс:
* где bridge — тип сетевого интерфейса (также может быть network); 52:54:00:2e:a9:4d — MAC-адрес сетевого адаптера (узнать данный адрес можно в конфигурации виртуальной машины или в самой гостевой операционной системы).
7. Посмотреть IP-адреса, выданные виртуальным машинам автоматически:
virsh net-dhcp-leases default
* где default — виртуальная сеть, создаваемая по умолчанию при установке KVM.
Увеличение размера виртуального диска
Получаем список дисков для виртуальной машины:
virsh domblklist VMname
* в данном примере путь до диска — /data/kvm/vhdd/VMname-disk1.img.
Останавливаем виртуальную машину:
virsh shutdown VMname
* или завершаем работу в самой операционной системе.
Увеличиваем размер диска:
qemu-img resize /data/kvm/vhdd/VMname-disk1.img +100G
* данной командой мы расширим дисковое пространство виртуального диска /data/kvm/vhdd/VMname-disk1.img на 100 Гигабайт.
Получаем информацию о виртуальном диске:
qemu-img info /data/kvm/vhdd/VMname-disk1.img
Запускаем виртуальную машину:
virsh start VMname
Меняем размер блочного устройства:
virsh blockresize UBU /data/kvm/vhdd/VMname-disk1.img 200G
* где 200G — общий размер виртуального диска после расширения.
После необходимо поменять размер диска в самой операционной системе. Пример того, как это можно сделать можно прочитать в инструкции Добавление дискового пространства виртуальной машине в VMware (раздел «Настройка операционной системы»).
Дополнительные средства управления
Virt-Manager
Virt-manager — графическая консоль для управления виртуальными машинами. С ее помощью можно создавать последние, модифицировать их, запускать, останавливать, подключаться консолью.
Установить на Linux Ubuntu:
apt-get install virt-manager
ubuntu-vm-builder
ubuntu-vm-builder — пакет, разработанный компанией Canonical для упрощения создания новых виртуальных машин.
Установка KVM в Ubuntu
Само по себе программное обеспечение KVM в пространстве пользователя ничего не виртуализирует. Вместо этого, оно использует файл /dev/kvm для настройки виртуальных адресных пространств для гостевой машины в ядре. Каждая гостевая машина будет иметь свою видеокарту, сетевую и звуковую карту, жесткий диск и другое оборудование.
Также у гостевой системы не будет доступа к компонентам реальной операционной системы. Виртуальная машина выполняется в полностью изолированном пространстве. Вы можете использовать KVM как в системе с графическим интерфейсом, так и на серверах. В этой статье мы рассмотрим как выполняется установка KVM в Ubuntu 20.04.
Установка KVM в Ubuntu 20.04
Перед тем как переходить к самой установке KVM нужно проверить поддерживает ли ваш процессор аппаратное ускорение виртуализации от Intel-VT или AMD-V. Для этого выполните такую команду:
Теперь мы можем перейти к установке KVM, набор программ можно получить прямо из официальных репозиториев:
sudo apt install qemu qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager
Мы установили не только утилиту kvm, но и библиотеку libvirt, а также менеджер виртуальных машин. После того, как установка будет завершена вам необходимо добавить своего пользователя в группу libvirt, потому что только root и пользователи этой группы могут использовать виртуальные машины KVM:
Затем убедитесь, что сервис libvirt запущен и работает:
sudo systemctl status libvirtd
После выполнения этой команды выйдите из системы и войдите снова. Далее, давайте проверим все ли правильно было установлено. Для этого используйте команду kvm-ok:
Если все было сделано правильно, то вы увидите такое же сообщение.
Использование KVM в Ubuntu
Вы справились с задачей установить KVM в Ubuntu, но вы еще не можете использовать эту среду виртуализации но ее нужно еще настроить. Далее, мы рассмотрим как выполняется настройка KVM в Ubuntu. Что удобно, в новых версиях сеть уже настроена и вам не нужно создавать новый сетевой мост. Вы можете убедится в этом выполнив команду:
Интерфейсы virbr0 и virbr-nic созданы KVM по умолчанию и они полностью реализуют все необходимые возможности сети. Ещё вы можете посмотреть доступные мосты с помощью команды:
Создание виртуальных машин KVM
Настройка KVM Ubuntu завершена и теперь мы можем перейти к ее использованию. Сначала давайте просмотрим список уже существующих виртуальных машин:
Он пуст. Создать виртуальную машину можно через терминал или в графическом интерфейсе. Для создания через терминал используйте команду virt-install. Сначала перейдем в папку libvirt:
Для установки CentOS команда будет выглядеть вот так:
sudo virt-install \
—virt-type=kvm \
—name centos8 \
—ram 2048 \
—vcpus=2 \
—os-variant=rhl8.0 \
—hvm \
—cdrom=/var/lib/libvirt/boot/CentOS-8.iso \
—network=bridge:virbr0,model=virtio \
—graphics vnc \
—disk path=/var/lib/libvirt/images/centos7.qcow2,size=40,bus=virtio,format=qcow2
Разберем подробнее что означают параметры этой команды:
После завершения установки виртуальной машины вы можете узнать параметры подключения по VNC с помощью команды:
sudo virsh vncdisplay centos8
Теперь вы можете ввести полученные данные в вашем клиенте VNC и подключится к виртуальной машине даже удаленно. Для Debian команда будет немного отличаться, но все выглядит похожим образом:
Переходим в папку для образов:
Можно скачать установочный образ из интернета если это необходимо:
sudo wget https://mirrors.kernel.org/debian-cd/current/amd64/iso-dvd/debian-8.5.0-amd64-DVD-1.iso
Затем создадим виртуальную машину:
sudo virt-install \
—virt-type=kvm \
—name=debina8 \
—ram=2048 \
—vcpus=2 \
—os-variant=debian8 \
—hvm \
—cdrom=/var/lib/libvirt/boot/debian-8.5.0-amd64-DVD-1.iso \
—network=bridge=bridge0,model=virtio \
—graphics vnc \
—disk path=/var/lib/libvirt/images/debian8.qcow2,size=40,bus=virtio,format=qcow2
Теперь снова посмотрим список доступных машин:
Для запуска виртуальной машины можно использовать команду:
sudo virsh start имя_машины
sudo virsh shutdown имя_машины
Для перевода в режим сна:
sudo virsh suspend имя_машины
sudo virsh reboot имя_машины
sudo virsh reset имя_машины
Для полного удаления виртуальной машины:
sudo virsh destroy имя_машины
Создание виртуальных машин в GUI
Если у вас есть доступ к графическому интерфейсу то нет никакой необходимости использовать терминал, вы можете применить полноценный графический интерфейс менеджера виртуальных машин Virtual Manager. Программу можно запустить из главного меню:
Для создания новой машины кликните по иконке со значком монитора. Дальше вам будет необходимо выбрать образ ISO вашей системы. Также можно использовать реальный CD/DVD привод:
Если вы выбрали ISO образ, то надо его открыть из файловой системы:
На следующем экране выберите количество памяти, которая будет доступна для виртуальной машины, а также количество ядер процессора:
На этом экране вам нужно выбрать размер жесткого диска, который будет доступен в вашей машине:
На последнем шаге мастера вам предстоит проверить правильность настроек машины, а также ввести ее имя. Также нужно указать сетевой мост, через который машина будет подключаться к сети:
Затем автоматически запустится установка:
После этого машина будет готова к использованию и появится в списке. Вы можете запустить ее с помощью зеленого треугольника на панели инструментов менеджера.
Выводы
В этой статье мы рассмотрели как выполняется установка KVM Ubuntu 20.04, разобрали как полностью подготовить эту среду к работе, а также как создать виртуальные машины и использовать их. Если у вас остались вопросы, спрашивайте в комментариях!
На завершение лекция от яндекса о том что такое виртуализация в Linux:
Установка и настройка KVM в Ubuntu
Сложно себе представить в наше время физический сервер без установленной на нем той или иной системы виртуализации. Я расскажу, как установить и настроить популярный гипервизор kvm на сервер под управлением Ubuntu. Это решение является open source, так что можно свободно использовать где угодно.
Что такое KVM?
KVM (Kernel-based Virtual Machine) — гипервизор виртуальных машин для Linux. Не стоит его путать с системами контейнеризации, такими как докер или lxc. Это принципиально разные вещи. Гипервизор дает полную изоляцию рабочего окружения, в том числе и железа. Находясь в виртуальной машине, вы имеете в своем распоряжении полноценную операционную систему, принадлежащую только вам.
Существует несколько популярных гипервизоров, как бесплатных, так и за деньги. KVM является полностью бесплатным решением, которое очень активно используют хостеры, в том числе предоставляющие услуги облачных технологий. Так же есть неплохая реализация полноценного гипервизора kvm с интерфейсом управления — proxmox. Это готовый продукт на базе дистрибутива дебиан.
Я сегодня не буду рассматривать готовые сборки гипервизоров, а вручную установлю на Ubuntu Server нативный гипервизор KVM с минимальными надстройками над ним. У нас на выходе будет сам гипервизор, локальная сеть для его корректной работы и средства управления гипервизором и виртуальными машинами. Если вам интересно, почему мой выбор пал на именно на убунту, читайте мой обзор этой системы, а так же статью про установку ubuntu.
Установка KVM в Ubuntu
Прежде чем начать установку гипервизора KVM в Ubuntu, проверим, поддерживает ли наш процессор виртуализацию. Для этого существует утилита kvm-ok. Если у вас нет ее в системе, установите пакет, который ее содержит.
Если ваш процессор не поддерживает виртуализацию, то получите сообщение:
INFO: Your CPU does not support KVM extensions
KVM acceleration can NOT be used
Если же все ОК, то информация будет следующая.
В этом случае можно приступать к установке виртуализации kvm.
Я устанавливаю следующие компоненты kvm:
Запустим и добавим в автозагрузку сервис управления kvm:
В целом, все. Установка KVM на Ubuntu на этом и заканчивается. Можно проверить, загрузились ли у вас модули ядра kvm.
Все в порядке, гипервизор kvm готов к работе.
Сетевой Bridge для kvm
Настройка сети для виртуальных машин kvm может быть настроена различными способами. Я как минимум 3 наиболее популярных знаю:
Последний вариант наиболее простой и удобный, поэтому настроим сеть для виртуальных машин таким образом. Для этого нам нужно установить дополнительный пакет на host.
Теперь на хосте приводим сетевые настройки в /etc/netplan к следующему виду.
Здесь будьте очень внимательны. Не выполняйте изменения сетевых настроек, не имея прямого доступа к консоли сервера. Очень высок шанс того, что что-то пойдет не так и вы потеряете удаленный доступ к серверу.
В предложенном наборе правил netplan у меня один сетевой интерфейс на хосте гипервизора — ens18. Он изначально получал настройки по dhcp. Мы добавили новый сетевой бридж br0, в него добавили интерфейс ens18. Так же мы указали, что br0 будет получать сетевые настройки по dhcp. Я указал mac адрес для того, чтобы он не менялся после перезагрузки. Такое может происходить. Адрес можно указать любой, не принципиально. Я сделал похожий на адрес физического сетевого интерфейса.
Теперь надо применить новые настройки.
Сразу после этого вы потеряете доступ к серверу по старому адресу. Интерфейс ens18 перейдет в состав bridge br0 и потеряет свои настройки. А в это время бридж br0 получит новые сетевые настройки по dhcp. IP адрес будет отличаться от того, что был перед этим на интерфейсе ens18. Чтобы снова подключиться удаленно к гипервизору kvm, вам надо будет пойти на dhcp сервер и посмотреть, какой новый ip адрес ему назначен.
Если у вас нет dhcp сервера или вы просто желаете вручную указать сетевые настройки, то сделать это можно следующим образом.
В этом случае после применения новых настроек, гипервизор kvm будет доступен по адресу 192.168.25.2.
Обращайте внимание на все отступы в конфигурационном файле netplan. Они важны. В случае ошибок, настройки сети применены не будут. Иногда эта тема очень напрягает, так как не получается сразу понять, где именно в отступах ошибка. В этом плане yaml файл для настроек сети гипервизора как-то не очень удобен.
Далее еще один важный момент. Чтобы наш kvm хост мог осуществлять транзит пакетов через себя, надо это явно разрешить в sysctl. Добавляем в /etc/sysctl.d/99-sysctl.conf новый параметр. Он там уже есть, надо только снять пометку комментария.
Применяем новую настройку ядра.
С настройкой сети гипервизора мы закончили. На данном этапе я рекомендую перезагрузить сервер и убедиться, что все настройки корректно восстанавливаются после перезагрузки.
Настройка KVM в Ubuntu Server
Теперь при создании виртуальных машин можно указывать эти директории.
В рамках настройки kvm сервера, рекомендую сразу же указать нужный часовой пояс и установить софт для автоматического обновления времени сервера. Это важно, так как гостевые виртуальные системы будут синхронизировать время с хостом.
kvm passthrough
Гипервизор KVM поддерживает так называемый проброс оборудования в виртуальную машину. Называется эта технология passthrough. Для того, чтобы это было возможно, ваше железо должно поддерживать технологию IOMMU. С ее помощью можно, к примеру, пробросить в виртуальную машину видеокарту.
У этой технологии очень много нюансов, так что в рамках данной статьи я не буду ее рассматривать и приводить примеры. У меня под рукой нет подходящего железа, а показывать непроверенные конфиги мне не хочется. Рассказываю об этом, просто чтобы вы знали о существовании такой возможности.
port forwarding
Если вы не создаете свой отдельный сетевой бридж для виртуальных машин, с помощью которого они будут автоматически попадать во внешнюю сеть, вам необходимо будет пробрасывать порты внутрь виртуалок. Я считаю это не очень удобным, поэтому выше и описал способ сразу вывести виртуальную машину во внешнюю сеть. Но если вам по каким-то причинам не хочется это делать и вы остаетесь на дефолтной настройке сети в kvm, то вам придется с помощью iptables делать проброс портов. Это не очень сложно, если вы умеете работать с iptables. Если же нет, то это может стать проблемой.
В рамках данной статьи я тоже не буду рассматривать этот вопрос, так как iptables отдельная большая тема. Просто знайте, что проброс портов в виртуальную машину это обычная настройка iptables. Приведу только один пример, как с помощью iptables пробросить порт ssh для одной из виртуальных машин.
В этом примере я пробросил внешний tcp порт 22122 хоста в виртуальную машину 192.168.122.11, порт 22. В данном случае virbr0 дефолтный бридж, который был автоматически создан при установке kvm на хост.
Основные команды KVM
Для дальнейшей работы с гипервизором kvm нам необходимо познакомиться с основными командами управления.
Просмотр всех виртуальных машин:
Запустить неактивную виртуальную машину:
Выключить vm штатно через возможности ОС:
Мгновенная остановка виртуальной машины. Например, если она зависла.
Информация о дисках vm:
Посмотреть информацию о vm:
Краткая информация о хосте гипервизора kvm:
Информация о файле образа диска vm:
Создание виртуальной машины
Давайте теперь создадим и запустим нашу первую виртуальную машину на гипервизоре kvm. Для этого нам достаточно только консоли системы ubuntu и команды virt-install. Но перед тем, как создать саму машину, сделаем для нее диск в формате qcow2.
Отлично, теперь создаем виртуальную машину для гипервизора kvm:
Я получил предупреждение о том, что слишком мало выделил оперативной памяти для виртуальной машины Ubuntu20.04
WARNING Requested memory 1024 MiB is less than the recommended 2048 MiB for OS ubuntu20.04
На самом деле это не страшно. Для минимальной конфигурации хватит и таких ресурсов. Рассмотрим теперь подробно параметры, которые я указал при создании vm.
noautoconsole | параметр указывает на то, что не надо подключаться к консоли vm. Мы и не сможем это сделать, так как на сервере не установлено графическое окружение |
vcpus, cpu, check-cpu | параметры cpu — количество виртуальных процессоров и их описание. В моем примере один процессор, а описание берется с хоста. |
ram | объем оперативной памяти для новой виртуальной машины |
arch | тип архитектуры |
network | параметры сети. В данном случае подключаем к виртуальной машине созданный ранее сетевой бридж в локальную сеть. |
cdrom | указываем образ диска, с которого будет выполняться установка системы |
disk | путь к диску, который мы создали ранее для виртуальной машины |
graphics | параметры подключения к консоли виртуальной машины. В данном случае подключение будет возможно по vnc с паролем parol. |
os-type, os-variant | тип операционной системы на новосозданной виртуальной машине |
boot | параметры загрузки системы. Сначала грузимся с cd, потом с диска. |
После создания и запуска виртуальной машины, можно подключиться к ее консоли. Для этого надо узнать, к какому порту VNC осуществлять подключение. Запускаем в консоли гипервизора команду:
Вывод :0 означает, что нет отступа от дефолтного порта vnc 5900. Если бы в выводе было :1, значит подключаться нужно было бы к порту 5901. В нашем случае подключаемся через любой vnc клиент к ip адресу гипервизора по порту 5900.
После подключения к консоли виртуальной машины, увидим традиционный установщик Ubuntu.
Можно продолжать установку непосредственно системы внутри vm. На этом установку новой виртуальной машины в kvm закончим. Рассмотрим дополнительно некоторые важные параметры, касающиеся управления.
Автозапуск виртуальной машины
Для того, что виртуальная машина kvm автоматически запускалась при старте гипервизора, можно явно это указать в самом начале. Во время создания vm надо добавить параметр autostart примерно так:
Либо воспользуйтесь встроенной командой:
После этого виртуальная машина vmserver01 будет автоматически запускаться после перезагрузки хоста kvm.
Удаление виртуальной машины
Теперь рассмотрим ситуацию, когда вам надо удалить виртуальную машину в kvm, используя только консоль. Сделать это не сложно. Для начала посмотрим на список всех виртуальных машин хоста:
Останавливаем виртуальную машину vmserver01:
Это команда для штатного выключения через операционную систему виртуальной машины. Если в ней не установлены средства интеграции с гипервизором, то она не сработает. В этом случае нужно либо через саму виртуальную машину сделать завершение работы, либо остановить ее принудительно в гипервизоре:
Теперь уже виртуальную машину можно удалить:
Будьте внимательны с именем файла. Не удалите случайно диск от другой виртуальной машины.
Увеличение размера диска
Для увеличения диска виртуальной машины в kvm достаточно воспользоваться консольной утилитой qemu-img. Если вы не знаете, где располагается диск виртуальной машины, посмотреть можно так:
Далее нам нужно завершить работу виртуальной машины. После этого увеличиваем размер диска:
Увеличил размер диска на 1G. Посмотрим информацию о диске:
В моем примере размер диска vm был изначально 2G, я увеличил его до 3-х.
KVM Agent
Для того, чтобы гипервизор мог получать информацию о виртуальной машине и взаимодействовать с ней, на нее необходимо установить qemu-guest-agent. Он нужен, например, для корректного завершения работы системы командой от гипервизора. Или для создания снепшота диска виртуалки без ее остановки. Для этого в свойствах виртуальной машины его нужно включить.
Сделать это можно отредактировав конфиг виртуальной машины. В него нужно добавить дополнительный channel. Сделаем это.
Добавляем в конфиг:
Прежде чем добавлять, посмотрите, нет ли у вас уже этой секции в конфигурации.
После этого в самой виртуальной машине нужно установить пакет qemu-guest-agent. Обычно он присутствует в стандартных репозиториях всех популярных систем. Для windows нужно отдельно скачать образ диска virtio-win и установить агента оттуда. Скачать образ можно тут, ссылки для windows в конце.
Установка Windows 10 в KVM
Для того, чтобы установить виртуальную машину с Windows 10 в KVM ничего особенного делать не надо. Кладем iso образы системы и virtio драйверов на kvm хост и запускаем виртуальную машину.
Дальше подключаемся по vnc и выполняем установку Windows 10. Узнать порт vnc для подключения можно командой:
В данном случае порт будет 5900. Число после двоеточия добавляется к стандартному порту 5900. Если бы там было :5, то подключаться нужно было бы по порту 5905. Если во время установки в списке дисков будет пусто, необходимо загрузить драйвер с образа virtio-win.iso. Сам драйвер находится в папке E:\viostor\w10\amd64.
После установки Windows 10 на KVM, зайдите в систему и установите драйвера для всего неопознанного оборудования. Драйвер можно поставить автопоиском с диска virtio-win. В самом конце с этого же диска установите Qemu Guest Agent. Он там в отдельной директории лежит в виде приложения.
На этом все, система с Windows 10 готова работать на гипервизоре KVM. Установка немного посложнее, чем в других гипервизорах из-за того, что в стандартном образе виндовс нет драйверов для дисков kvm.
Snapshot виртуальной машины KVM
Отдельно расскажу, как сделать snapshot виртуальной машины в kvm. Для того, чтобы функционал снимков был доступен, ваши диски должны быть в формате qcow2. Именно он поддерживает снэпшоты. Если диски raw, то сделать снимок не получится. Так же необходимо, чтобы в системе был установлен qemu-guest-agent. Если его не будет, то при создании снимка работающей vm получите ошибку:
error: Guest agent is not responding: QEMU guest agent is not connected
Прежде чем делать snapshot, посмотрим на имя диска виртуальной машины:
Отлично, имя диска vda. Теперь делаем его snapshot:
vmserver01 | имя виртуальной машины, для которой делаем снэпшот |
snapshot-name | название самого снепшота, актуально, когда их несколько |
vda | имя диска виртуальной машины |
vmserver01-disk1-snapshot.qcow2 | имя и путь для снепшота |
Для того, чтобы удалить снепшот и объединить изменения с основным файлом виртуальной машины, используйте команду:
Проверьте список дисков. У вас должен исчезнуть snapshot, а основной диск вернется на прежнее место.
Бэкап виртуальной машины
Бэкап виртуальной машины kvm может быть выполнен по-разному. По своей сути это просто копия диска и экспорт настроек vm. Если вы хотите делать backup без остановки виртуальной машины, то необходимо воспользоваться снепшотом. Как его сделать, я показал выше. После того, как снэпшот сделан, вам достаточно просто скопировать основной диск vm. Сделать это можно любым доступным способом. Например, можно его сразу же сжать и положить в директорию с бэкапами.
После того, как сделаете backup виртуальной машины, не забудьте объединить снэпшот с основными диском. Не допускайте роста числа снэпшотов. Это приводит к сильному снижению производительности, а когда снимков станет слишком много, могут быть ошибки работы с диском.
Если у вас есть возможность остановить виртуальную машину для создания архива, то снимки вам не нужны. Просто останавливайте виртуалку и копируйте ее диски. А потом запускайте снова. Можно все эти действия объединить в скрипт. Примерно так:
Это просто набросок. По хорошему, сюда нужно добавлять проверки, отправку отчета на почту и т.д.
Web интерфейс (gui) для KVM
Выше я показал, как управлять виртуальными машинами через консоль. В целом, весь необходимый функционал доступен. Но если вам хочется управлять виртуальными машинами kvm через браузер, то можно поставить простую панель управления для этого. В качестве KVM Web Interface я предлагаю использовать VMDashboard. Это обычное веб приложение, написанное на php. В работе использует базу данных MySQL.
Устанавливаем необходимые компоненты сервера для работы Web Interface.
Продолжаем настройку web панели для kvm. Добавляем пользователя www-data в группу libvirt:
Переходим в директорию www и загружаем исходники панели:
Распаковываем их и готовим к запуску:
Теперь нам нужно создать mysql базу для веб панели.
Далее нужно перезагрузить kvm сервер:
После перезагрузки идем в web интерфейс по адресу http://10.20.1.40/vmdashboard/ и настраиваем подключение к панели управления виртуальными машинами. Используем данные о созданной ранее базе данных и пользователе.
На этом установка и настройка веб панели управления для kvm закончена. Можно переходить в интерфейс и управлять виртуалками.
Заключение
Постарался всесторонне рассмотреть вопрос установки и настройки гипервизора kvm на ubuntu server. Если забыл что-то важное, напомните в комментариях. Я дополню статью.
2 комментариев к записи « Установка и настройка KVM в Ubuntu »
Отличная статья. Всё получилось. Первый раз KVM разворачиваю. Чего пришлось искать:
1. Пришлось искать дополнительно команду отсоединения cdrom (vm не хотела перегружаться).
2. http://192.168.89.37/vmdashboard/index.php выдает:
Cannot open connection to hypervisor. Please check to make sure that the Qemu service is running.
При этом qemu-kvm.service запущен.
Спасибо за обратную связь. Странно, что vmdashboard не заработал. У меня обычно нет проблем с его настройкой. Ничего особенного настраивать не надо. Сходу все запускается.