- Устанавливаем Windows в виртуальной машине (KVM/QEMU) на Linux — без VirtualBox и VMware
- Проверка поддержки виртуализации оборудованием:
- Установка KVM и QEMU:
- Создание и настройка виртуальных машин KVM в GUI:
- Установка и настройка KVM в Ubuntu
- Что такое KVM?
- Установка KVM в Ubuntu
- Сетевой Bridge для kvm
- Настройка KVM в Ubuntu Server
- kvm passthrough
- port forwarding
- Основные команды KVM
- Создание виртуальной машины
- Автозапуск виртуальной машины
- Удаление виртуальной машины
- Увеличение размера диска
- KVM Agent
- Установка Windows 10 в KVM
- Snapshot виртуальной машины KVM
- Бэкап виртуальной машины
- Web интерфейс (gui) для KVM
- Заключение
- 2 комментариев к записи « Установка и настройка KVM в Ubuntu »
Устанавливаем Windows в виртуальной машине (KVM/QEMU) на Linux — без VirtualBox и VMware
Начинающие пользователи операционных систем на базе ядра Linux (да, Linux это не «операционная система», а «ядро» операционной системы, но об этом как-нибудь в другой раз), мигрировавшие из мира Windows, рано или поздно сталкиваются с необходимостью создать «виртуалку» для запуска ещё одной ОС параллельно основной.
Одних в эти степи заводит жажда экспериментов (а как иначе, если вы мигрировали из уютненького мира Windows в тёплый ламповый мир Linux), других — необходимость запустить ПО существующее только для определённой операционной системы. И начинаются поиски туториалов «как установить Windows в VMware Player или VirtualBox на Linux|Ubuntu». Но почему-то мало где пишут о том, что в ядро Linux уже встроена своя «виртуалка», которая отлично работает без танцев с бубном и «красных глаз». Имя ей «KVM» и её установкой и настройкой мы сегодня и займёмся.
Итак, KVM или Kernel Virtual Module — это программное решение, обеспечивающее виртуализацию в среде Linux на платформе x86, которая поддерживает аппаратную виртуализацию на базе Intel VT (Virtualization Technology) либо AMD SVM (Secure Virtual Machine). KVM использует QEMU в качестве фронтенда и для эмуляции некоторых устройств.
В свою очередь QEMU — свободная программа с открытым исходным кодом для эмуляции аппаратного обеспечения различных платформ. Включает в себя эмуляцию процессоров Intel x86 и устройств ввода-вывода. Может эмулировать 80386, 80486, Pentium, Pentium Pro, AMD64 и другие x86-совместимые процессоры; PowerPC, ARM, MIPS, SPARC, SPARC64, m68k — лишь частично.
Надеюсь вы поняли, что это очень крутая штука, которая даёт прикурить как VirtualBox, так и решениям от VMware (плюс ещё и полностью бесплатная, в отличии от некоторых предложений последней). Приступим к делу.
Проверка поддержки виртуализации оборудованием:
Вообще последние лет 10 на рынке практически не было x86-процессоров, которые бы не поддерживали аппаратную виртулизацию, т.ч. с вероятностью в 99% ваш компьютер имеет поддержку всех необходимых технологий. Но всё же стоит проверить это с помощью следующей команды в терминале:
egrep -c ‘(vmx|svm)’ /proc/cpuinfo
Если в результате терминал выдаст число большее чем 0 (у меня, например, было 4) — значит ваш процессор поддерживает аппаратную виртуализацию и можно сразу переходить к следующему разделу этой статьи.
А вот если терминал выдал 0 — значит ваш процессор не поддерживает аппаратную виртуализацию или система думает, что ваш процессор не имеет такой поддержки, хотя по факту она есть. Причина этого скорее всего банальна — в BIOS отключена поддержка технологий виртуализации. Это легко решаемо — необходимо зайти в настройки BIOS (о том как это сделать было упомянуто в этой статье) и найти там следующие опции (одну или несколько) и включить их:
- Для процессоров Intel: Intel VT или Intel Virtualization Technology, или VT-x, или VT-d, или Intel vPro
- Для процессоров AMD: AMD-V, или AMD Virtualization, или AMD Secure Virtual Machine, или AMD SVM
Кстати, не забудьте после включения соответствующей опции в BIOS сохранить настройки — как правило это кнопка F10, но бывают и исключения (просто внимательно читайте всё что на экране — искомое «Save and exit setup» или что-то аналогичное).
Установка KVM и QEMU:
Здесь всё просто, т.к. все необходимые пакеты есть в репозиториях всех популярных дистрибутивов. Мы будем рассматривать на примере установки в Ubuntu-based дистрибутивах, но и в openSUSE, Manjaro и прочих все нижеперечисленные пакеты есть — надеюсь сами разберётесь. Если не разберётесь, тогда задавайте вопросы в комментариях.
Итак, команды для уставновки KVM и утилит QEMU:
sudo apt install qemu-kvm qemu-utils libvirt-bin bridge-utils virt-manager cpu-checker
После завершения установки вам необходимо будет добавить своего пользователя в группу libvirtd. Делаем в терминале:
sudo gpasswd -a ПОЛЬЗОВАТЕЛЬ libvirtd
Вместо «ПОЛЬЗОВАТЕЛЬ» необходимо указать имя вашего пользователя — если забыли, то в терминале это всё то, что написано перед знаком «@». Вообще желательно теперь разлогиниться и вновь залогиниться, но лично у автора всегда всё и так работало без релогина.
Теперь проверяем правильно ли всё было установлено (вводим команду в терминале):
Если всё и правда «ок», тогда терминал в ответ выдаст:
INFO: /dev/kvm exists
KVM acceleration can be used
Всё, KVM установлен, осталось настроить и использовать. Именно этим сейчас и займёмся.
Вообще на просторах сети множество туториалов, инструкций, советов и прочих опусов о настройке KVM и QEMU, но все они пестрят огромным количеством шаманских команд в терминале, суть которых понимают только гуру и мастера игры на бубне. При этом в таких командах описан порядок создания и настройки сетевого моста (проброс подключения к сети виртуальных машин), создания виртуальных разделов жесткого диска, создание и настройка самих виртуальных машин и подключения к ним установочных образов и всё такое прочее — ничего такого, что нельзя сделать с помощью мыши.
Мы же пойдём другим путём — будем всё настраивать с помощью графической оболочки (GUI) для KVM и QEMU. Это намного более понятно для всех тех пользователей, которые ранее имели опыт работы с приложениями от VMware и VirtualBox, а те кто не имели — намного быстрее разберутся в графической оболочке, чем в командах для терминала.
Создание и настройка виртуальных машин KVM в GUI:
Находим в списке установленных программ свежую «Менеджер виртуальных машин» (если у вас меню приложений группируется по категориям — должно быть в разделе «Администрирование») и запускаем.
Далее опишу алгоритм создания виртуальной машины для установки Windows. Понятное дело, что для установки Windows нам необходим будет установочный ISO образ. Образ Windows 10 можно свободно скачать на сайте Microsoft по следующей ссылке: https://www.microsoft.com/uk-ua/software-download/windows10ISO.
- выбираем меню «Файл» — «Новая виртуальная машина»;
- дальше ничего не меняем и оставляем «Локальный ISO или CDROM» (в этом окне также можно задать подгрузку установочного образа из сети, сетевую загрузку или подключение уже готовой виртуальной машины) и жмём «Вперёд»;
- далее ничего не меняем, если устанавливать гостевую ОС будем с диска, вставленного в привод, а в случае если установка будет производиться из ISO образа — выбираем «Образ ISO», жмём «Обзор». В следующем окне жмём внизу кнопку «Локальный файл» и выбираем скачанный заранее установочный ISO образ (после однократного использования любого ISO файла, он будет добавлен в перечень томов хранилища и поэтому в следующий раз нет необходимости искать его в диспетчере файлов) и жмём «Вперёд»;
- галочку «Автоматически определить операционную систему носителя» нет необходимости ставить или убирать — на моём опыте KVM ещё ни разу сам этого корректно не сделал, поэтому не обращаем внимание на это;
- далее нам предложат настроить размер выделяемой оперативной памяти и количества ядер процессора для гостевой ОС — здесь необходимо выставить как минимум минимальные системные требования. Для Windows 10 это 1024 МиБ (для 32-битной версии) или 2048 МиБ (для 64-битной версии) оперативной памяти и как минимум 2 ядра процессора (но важно понимать, что оптимальным параметром является не более 1/2 от всех физических ядер вашего процессора — поэтому если у вас 2-х ядерный процессор, то не выбирайте более «1» ядра для гостевой). После выставления значений жмём «Вперёд»;
- далее нам предложат настроить размер выделяемой постоянной памяти для гостевой ОС — это будет наш виртуальный жесткий диск;
- в следующем окне задаём имя для нашей виртуальной машины (пишем на ваш выбор) и отметить галочкой пункт «Дополнить конфигурацию перед установкой» — жмём «Готово»;
- перед нами окно дополнительных настроек виртуальной машины — здесь необходимо будет сделать ещё несколько корректировок (в нашем случае будем настраивать для Windows, но прирблизительно аналогичные настройки подойдут и практически для всех дистрибутивов Linux и *BSD):
- в разделе «Процессоры» выбираем «Копировать конфигурацию ЦП хоста» — теперь наша виртуальная машина будет видеть наш реальный CPU, хотя в этом пункте можно выбрать и эмуляцию других архитектур с помощью QEMU;
- в разделе «Параметры загрузки» выбираем «Включить меню загрузки», после чего поставить галочки напротив «Диск 1» и «CDROM», затем с помощью стрелок необходимо пункт «CDROM» поставить на первое место в списке;
- в разделе «CDROM» необходимо подключить установочный ISO образ — да, мы это уже делали в предыдущих пунктах на этапе создания виртуальной машины, но здесь вот такая алогичная логика — просто выбираем ещё раз тот же самый установочный ISO образ;
- в разделе «Дисплей Spice» необходимо изменить тип на «VNC-сервер» — Windows не умеет должным образом взаимодействовать с Spice, поэтому необходимо изменить тип на VNC;
- в разделе «Видео QXL» изменить модель на VGA — аналогично ситуации со Spice, гостевая Windows нормально взаимодействует с VGA, но не с QXL.
- теперь можно начинать установку Windows в виртуальной машине KVM — в верхнем левом углу выбираем кнопку «Показать графическую консоль», затем на кнопку «Включить виртуальную машину» (кнопка Play):
- в окне с белым текстом на чёрном фоне нажать «F12», затем «1» и «Enter» — всё, загрузка с установочного ISO образа началась.
Предупреждение №1: гостевая ОС перехватывает управление мышью — для возврата курсора необходимо нажать одновременно левые «Ctrl» и «Alt».
Предупреждение №2: часто наблюдаются проблемы с выходом из полноэкранного режима — здесь можно поступить двумя способами:
- повесить шорткат на функцию «Показать рабочий стол» — после использования комбинации, описанной в «Предупреждении №1» используйте шорткат для «Показать рабочий стол» для выхода из полноэкранного режима;
- после использования комбинации, описанной в «Предупреждении №1» используйте всем известный шорткат «Alt» + «Tab» для переключения на любое другое открытое окно.
Предупреждение №3: если вы попали на эту страницу в поисках решения ошибки «Не удалось завершить установку: «Couldn’t create storage volume ‘.qcow2’: ‘внутренняя ошибка: для создания обработанных образов файлов требуется qemu-img’»» — решение есть и оно очень простое (но на просторах рускоязычного интернета об этом почему-то мало написано, хотя инструкций по настройке KVM, которые и приводят к такой ошибке — вагон и маленькая тележка). Итак, всё что необходимо, это установить пакет «qemu-utils». В Ubuntu-based дистрибутивах это команда:
sudo apt install qemu-utils
В других дистрибутивах — воспользуйтесь поиском указанного пакета в вашем менеджере пакетов (он присутствует в стандартных репозиториях с вероятностью в 99,9%).
Если вы следовали инструкциям по установке из этой статьи, тогда подобной проблемы у вас не будет с установкой Windows в виртуальную машину KVM, т.к. в разделе об установке учтена данная часто встречающаяся проблема.
Ниже подборка скриншотов потнастройке KVM — для наглядности:
Вот и всё — больше здесь рассказывать особо не о чем, т.к. подробный разбор всех возможностей KVM и QEMU растянется на много-много страниц. Да и нет в этом смысла, т.к. тонкости настройки и использования хорошо описаны на linux-kvm.org и qemu-project.org
Держите ваши напильники в чистоте и до скорого!
PS: для удаления установленного KVM и QEMU из Ubuntu-based систем необходимо выполнить следующие команды в терминале:
sudo apt purge qemu-kvm qemu-utils libvirt-bin bridge-utils virt-manager
sudo apt autoremove
sudo rm -r /etc/apparmor.d/abstractions/
sudo rm -r /etc/libvirt/qemu/networks/autostart/
sudo rm -r /var/cache/libvirt/qemu/
sudo rm -r /var/lib/libvirt/qemu/
Это очистит временные каталоги программы и удалит сами пакеты.
Установка и настройка 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:
- qemu и qemu-kvm — сам гипервизор
- libvirt-daemon-system и virtinst — утилиты для управления гипервизором и виртуальными машинами
- libosinfo-bin — пакет с информацией о поддержки гипервизорами различных операционных систем.
Запустим и добавим в автозагрузку сервис управления kvm:
В целом, все. Установка KVM на Ubuntu на этом и заканчивается. Можно проверить, загрузились ли у вас модули ядра kvm.
Все в порядке, гипервизор kvm готов к работе.
Сетевой Bridge для kvm
Настройка сети для виртуальных машин kvm может быть настроена различными способами. Я как минимум 3 наиболее популярных знаю:
- Виртуальные машины выходят во внешний мир через сам хост kvm, на котором настроен NAT. Этот вариант вам будет доступен сразу после установки kvm. Ничего дополнительно настраивать не надо, так как сетевой бридж для этого virbr0 уже будет добавлен в систему. А в правилах iptables будет добавлен MASQUERADE для NAT.
- Одна из виртуальных машин превращается в шлюз и через нее осуществляется доступ во внешний мир для всех виртуальных машин. Наиболее гибкий способ управления сетью для vm, но в то же время требует больше времени на настройку и набор знаний по работе с сетями.
- Для виртуальных машин kvm создается отдельный сетевой бридж во внешнюю сеть. Они напрямую получают в нее сетевой доступ.
Последний вариант наиболее простой и удобный, поэтому настроим сеть для виртуальных машин таким образом. Для этого нам нужно установить дополнительный пакет на 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 после установки делать не нужно. Я обычно выношу в отдельные директории диски виртуальных машин и iso образы. Например, в /mnt/kvm . Это позволяет подмонтировать туда любые внешние хранилища, если будет такая необходимость.
Теперь при создании виртуальных машин можно указывать эти директории.
В рамках настройки 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.
Вводим пароль, который указали при создании VM. Если вы его забыли, то можно подсмотреть в конфигурационном файле виртуальной машины. Он находится тут — /etc/libvirt/qemu/vmserver01.xml .
После подключения к консоли виртуальной машины, увидим традиционный установщик Ubuntu.
Можно продолжать установку непосредственно системы внутри vm. На этом установку новой виртуальной машины в kvm закончим. Рассмотрим дополнительно некоторые важные параметры, касающиеся управления.
Автозапуск виртуальной машины
Для того, что виртуальная машина kvm автоматически запускалась при старте гипервизора, можно явно это указать в самом начале. Во время создания vm надо добавить параметр autostart примерно так:
Если не сделали это сразу, не беда. За автозапуск виртуальных машин в kvm отвечает наличие символьной ссылки на конфигурацию vm в соответствующей директории — /etc/libvirt/qemu/autostart . Так что просто создайте ее.
Либо воспользуйтесь встроенной командой:
После этого виртуальная машина vmserver01 будет автоматически запускаться после перезагрузки хоста kvm.
Удаление виртуальной машины
Теперь рассмотрим ситуацию, когда вам надо удалить виртуальную машину в kvm, используя только консоль. Сделать это не сложно. Для начала посмотрим на список всех виртуальных машин хоста:
Останавливаем виртуальную машину vmserver01:
Это команда для штатного выключения через операционную систему виртуальной машины. Если в ней не установлены средства интеграции с гипервизором, то она не сработает. В этом случае нужно либо через саму виртуальную машину сделать завершение работы, либо остановить ее принудительно в гипервизоре:
Теперь уже виртуальную машину можно удалить:
Эта команда по сути просто удаляет конфигурацию vm из директории /etc/libvirt/qemu . Для полного удаления виртуальной машины вам необходимо отдельно удалить ее диск. Сделайте это вручную сами в зависимости от того, где располагался диск. Если это был обычный qcow2 или raw файл, то удалите его командой rm.
Будьте внимательны с именем файла. Не удалите случайно диск от другой виртуальной машины.
Увеличение размера диска
Для увеличения диска виртуальной машины в 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 | имя и путь для снепшота |
После этого в директории /mnt/kvm/disk появится файл vmserver01-disk1-snapshot.qcow2 , куда будут писаться все изменения диска. Сам же диск останется в неизменном виде. В этой ситуации его удобно забэкапить. Рассмотрим это позже. Если сейчас посмотреть список дисков виртуальной машины, то в качестве диска там будет указан снэпшот.
Для того, чтобы удалить снепшот и объединить изменения с основным файлом виртуальной машины, используйте команду:
Проверьте список дисков. У вас должен исчезнуть snapshot, а основной диск вернется на прежнее место.
Бэкап виртуальной машины
Бэкап виртуальной машины kvm может быть выполнен по-разному. По своей сути это просто копия диска и экспорт настроек vm. Если вы хотите делать backup без остановки виртуальной машины, то необходимо воспользоваться снепшотом. Как его сделать, я показал выше. После того, как снэпшот сделан, вам достаточно просто скопировать основной диск vm. Сделать это можно любым доступным способом. Например, можно его сразу же сжать и положить в директорию с бэкапами.
Мы сжали диск виртуальной машины с помощью tar и gz и положили его в директорию с бэкапами /mnt/backup/ . Для полноты бэкапа, положим туда же и настройки виртуальной машины.
После того, как сделаете backup виртуальной машины, не забудьте объединить снэпшот с основными диском. Не допускайте роста числа снэпшотов. Это приводит к сильному снижению производительности, а когда снимков станет слишком много, могут быть ошибки работы с диском.
Если у вас есть возможность остановить виртуальную машину для создания архива, то снимки вам не нужны. Просто останавливайте виртуалку и копируйте ее диски. А потом запускайте снова. Можно все эти действия объединить в скрипт. Примерно так:
Это просто набросок. По хорошему, сюда нужно добавлять проверки, отправку отчета на почту и т.д.
Web интерфейс (gui) для KVM
Выше я показал, как управлять виртуальными машинами через консоль. В целом, весь необходимый функционал доступен. Но если вам хочется управлять виртуальными машинами kvm через браузер, то можно поставить простую панель управления для этого. В качестве KVM Web Interface я предлагаю использовать VMDashboard. Это обычное веб приложение, написанное на php. В работе использует базу данных MySQL.
Устанавливаем необходимые компоненты сервера для работы Web Interface.
Для того, чтобы работало подключение к консолям виртуальных машин через web интерфейс, необходимо раскомментировать один параметр в /etc/libvirt/qemu.conf .
Продолжаем настройку 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 не заработал. У меня обычно нет проблем с его настройкой. Ничего особенного настраивать не надо. Сходу все запускается.