Панель управления виртуальными машинами kvm

Обновлено: 07.07.2024

Инструкция написана на примере 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-образов).

timedatectl set-timezone Europe/Moscow

* данная команда задает зону в соответствии с московским временем.

apt-get install chrony

systemctl enable chrony

* устанавливаем и запускаем утилиту для синхронизации времени.

Установка и запуск

Устанавливаем KVM и необходимые утилиты управления.

а) Ubuntu после версии 18.10

apt-get install qemu qemu-kvm libvirt-daemon-system virtinst libosinfo-bin

б) Ubuntu до 18.10:

apt-get install qemu-kvm libvirt-bin virtinst libosinfo-bin

* где qemu-kvm — гипервизор; libvirt-bin — библиотека управления гипервизором; virtinst — утилита управления виртуальными машинами; libosinfo-bin — утилита для просмотра списка вариантов операционных систем, которые могут быть в качестве гостевых.

Настроим автоматический запуск сервиса:

systemctl enable libvirtd

Настройка сети на сервере KVM

Виртуальные машины могут работать за NAT (в качестве которого выступает сервер KVM) или получать IP-адреса из локальной сети — для этого необходимо настроить сетевой мост. Мы настроим последний.

Используя удаленное подключение, внимательно проверяйте настройки. В случае ошибки соединение будет прервано.

apt-get install bridge-utils

а) настройка сети в старых версиях Ubuntu (/etc/network/interfaces).

Открываем конфигурационный файл для настройки сетевых интерфейсов:

И приведем его к виду:

auto br0
iface br0 inet static
address 192.168.1.24
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1 192.168.1.2
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off

* где все, что закомментировано — старые настройки моей сети; br0 — название интерфейса создаваемого моста; eth0 — существующий сетевой интерфейс, через который будет работать мост.

Перезапускаем службу сети:

systemctl restart networking

б) настройка сети в новых версиях Ubuntu (netplan).

* в зависимости от версии системы, конфигурационной файл yaml может иметь другое название.

Приводим его к виду:

network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: false
dhcp6: false
wakeonlan: true

bridges:
br0:
macaddress: 2c:6d:45:c3:55:a7
interfaces:
- eth0
addresses:
- 192.168.1.24/24
gateway4: 192.168.1.1
mtu: 1500
nameservers:
addresses:
- 192.168.1.2
- 192.168.1.3
parameters:
stp: true
forward-delay: 4
dhcp4: false
dhcp6: false

* в данном примере мы создаем виртуальный бридж-интерфейс br0; в качестве физического интерфейса используем eth0. 2c:6d:45:c3:55:a7 — физический адрес интерфейса, через который мы будем настраивать бридж; 192.168.1.24 — IP-адрес нашего сервера KVM; 192.168.1.1 — адрес шлюза; 192.168.1.2 и 192.168.1.3 — адреса серверов DNS.

Применяем сетевые настройки:

Настаиваем перенаправления сетевого трафика (чтобы виртуальные машины с сетевым интерфейсом NAT могли выходить в интернет):

sysctl -p /etc/sysctl.d/99-sysctl.conf

Создание виртуальной машины

Для создания первой виртуальной машины вводим следующую команду:

virt-install -n VM1 \
--autostart \
--noautoconsole \
--network=bridge:br0 \
--ram 2048 --arch=x86_64 \
--vcpus=2 --cpu host --check-cpu \
--disk path=/kvm/vhdd/VM1-disk1.img,size=16 \
--cdrom /kvm/iso/ubuntu-18.04.3-server-amd64.iso \
--graphics vnc,listen=0.0.0.0,password=vnc_password \
--os-type linux --os-variant=ubuntu18.04 --boot cdrom,hd,menu=on

  • VM1 — имя создаваемой машины;
  • autostart — разрешить виртуальной машине автоматически запускаться вместе с сервером KVM;
  • noautoconsole — не подключается к консоли виртуальной машины;
  • network — тип сети. В данном примере мы создаем виртуальную машину с интерфейсом типа «сетевой мост». Для создания внутреннего интерфейса с типом NAT вводим --network=network:default,model=virtio;
  • ram — объем оперативной памяти;
  • vcpus — количество виртуальных процессоров;
  • disk — виртуальный диск: path — путь до диска; size — его объем;
  • cdrom — виртуальный привод с образом системы;
  • graphics — параметры подключения к виртуальной машины с помощью графической консоли (в данном примере используем vnc); listen — на какой адресе принимает запросы vnc (в нашем примере на всех); password — пароль для подключения при помощи vnc;
  • os-variant — гостевая операционная система (весь список мы получали командой osinfo-query os, в данном примере устанавливаем Ubuntu 18.04).

Подключение к виртуальной машине

На компьютер, с которого планируем работать с виртуальными машинами, скачиваем 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. Редактирование конфигурации виртуальной машины:

virsh edit VMname

6. Работа с сетевыми интерфейсами.

Добавить обычный сетевой интерфейс (default или NAT) виртуальной машине:

virsh attach-interface --domain VMname --type network --source default --model virtio --config --live

Добавить интерфейс типа bridge:

virsh attach-interface --domain VMname --type bridge --source br0 --model rtl8139 --config --live

Удалить сетевой интерфейс:

virsh detach-interface VMname --type bridge --mac 52:54:00:2e:a9:4d

* где bridge — тип сетевого интерфейса (также может быть network); 52:54:00:2e:a9:4d — MAC-адрес сетевого адаптера (узнать данный адрес можно в конфигурации виртуальной машины или в самой гостевой операционной системы).

7. Посмотреть IP-адреса, выданные виртуальным машинам автоматически:

virsh net-dhcp-leases default

* где default — виртуальная сеть, создаваемая по умолчанию при установке KVM.

8. Работа со снапшотами

Теневые копии или снапшоты позволяют нам быстро вернуть определенное состояние системы виртуальной машины. Рассмотрим процесс создания снапшота и управления им.

а) Создать снимок виртуальной машины можно командой:

virsh snapshot-create-as --domain VMname --name VMname_snapshot_2020-03-21

* где VMname — название виртуальной машины; VMname_snapshot_2021-05-03 — название для снапшота.

б) Список снапшотов можно посмотреть командой:

virsh snapshot-list --domain VMname

* данной командой мы просмотрим список всех снапшотов для виртуальной машины VMname.

в) Для применения снапшота, сначала мы должны остановить виртуальную машину. Для этого можно либо выполнить выключение в операционной системе или ввести команду:

virsh shutdown VMname

virsh snapshot-revert --domain VMname --snapshotname VMname_snapshot_2020-03-21 --running

* где VMname — имя виртуальной машины; VMname_snapshot_2021-05-03 — имя созданного снапшота.

г) Удалить снапшот можно так:

virsh snapshot-delete --domain VMname --snapshotname VMname_snapshot_2020-03-21

Управление дисками

Отдельно рассмотрим процесс работы с виртуальными дисками.

Добавление диска

Создаем файл для нового диска:

qemu-img create -f raw /data/kvm/vhdd/VMname-disk2.img 4G

* в данном примере мы создадим файл формата raw по полному пути /data/kvm/vhdd/VMname-disk2.img размером 4 Гб.

Теперь подключим данный диск к виртуальной машине:

virsh attach-disk VMname /data/kvm/vhdd/VMname-disk2.img vdb --cache none

* в данном примере мы подключили его к машине VMname в качестве диска vdb.

Готово. Подключаемся к виртуальной машине и проверяем, что у нас появился новый диск. Например, в Linux можно посмотреть командой:

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 252:0 0 24G 0 disk
??vda1 252:1 0 24G 0 part
??ubuntu--vg-root 253:0 0 23G 0 lvm /
??ubuntu--vg-swap_1 253:1 0 980M 0 lvm [SWAP]
vdb 252:16 0 4G 0 disk

Увеличение размера виртуального диска

Получаем список дисков для виртуальной машины:

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 (раздел «Настройка операционной системы»).

Управление сетевыми настройками виртуальной машины

В данном подразделе рассмотрим примеры работы с сетевыми настройками виртуальных машин.

Резервирование IP на DHCP

Если мы раздаем IP-адреса виртуальным машинам с помощью встроенного в KVM сервера DHCP, мы можем привязать определенный IP по mac-адресу. Для этого смотрим список наших виртуальных сетей:

Мы увидим список сетей, например:

Name State Autostart Persistent
----------------------------------------------------------
br0 active yes yes
default active yes yes

В моем случае, необходимо настроить сеть default — вводим:

KVM это система виртуализации, от части сравнить ее можно например с VMWare об установки которой вы можете прочесть в этой статье. С помощью KVM вы можете создавать виртуальные машины с любыми операционными системами, про установку KVM в Ubuntu можно прочесть в этой статье . Но, на сей раз мы будем устанавливать KVM с веб интерфейсом, используя при этом панель управления сервером Cockpit . Вы же можете поставить KVM например вместо того же VirtualBox, и использовать как Cockpit для создания виртуальных машин, так же, можно использовать для этих целей и Virt Manager (графический интерфейс для управления виртуальными машинами через). С помощью данного руководства можно поднять сервер виртуализации, либо, установить KVM вместо VirtualBox на ваш компьютер.

Проверяем поддержку виртуализации

Для начала давайте убедимся что процессор поддерживает виртуализацию, сделать это просто, переходим в терминал и вводим команду:

Если вывод будет больше нуля, значит ваш процессор поддерживает виртуализацию и можно двигаться дальше. А в том случае если вам данная команда выдаст ноль, то увы, ваш процессор не поддерживает виртуализацию и установка KVM в этом случае не возможна. Так же есть вариант, что вам необходимо включить виртуализацию в настройках Bios, как это сделать, читайте в документации к материнской плате:

Устанавливаем KVM на Debian 10 с web-панелью Cockpit

Установка панель Cockpit и KVM

После того как убедились в поддержке виртуализации, переходим к установки панели Cockpit и пакета cockpit-machines, который отвечает за возможность создания виртуальных машин с поддержкой KVM. Для установки панели Cockpit и пакета cockpit-machines вводим команду:

sudo apt install cockpit cockpit-machines

Устанавливаем KVM на Debian 10 с web-панелью Cockpit

Когда установка панели Cockpit завершится, не лишним будет запустить панель Cockpit, а так же добавить в автозапуск при старте вашей системы, ну и конечно проверить состояния Cockpit. Это можно сделать выполнив следующие команды:

sudo systemctl start cockpit.socket
sudo systemctl enable cockpit.socket
sudo systemctl status cockpit.socket

В итоге вы должны увидеть статус работоспособности, он должен быть активным и подсвечиваться зеленым:

Устанавливаем KVM на Debian 10 с web-панелью Cockpit

Для того что бы попасть в веб интерфейс, вводим ваш IP адрес в строке браузера, а затем порт “9090”. В моем же случае IP адрес “192.168.88.241”, у вас же он будет другим:

Устанавливаем KVM на Debian 10 с web-панелью Cockpit

Теперь осталось лишь ввести логин и пароль, по умолчанию используется логин и пароль вашего пользователя, так же возможно войти и из под root. После входа, первым делом давайте русифицируем панель Cockpit, для этого нажимаем на кнопку с именем вашего пользователя и в выпадающем окне выбираем пункт “Display Language”. Затем в выпадающем списке выбираем язык интерфейса панели Cockpit, я же оставлю Английский:

Устанавливаем KVM на Debian 10 с web-панелью Cockpit

Теперь необходимо проверить, настроен ли хост на запуск гипервизора libvirt, для этого в веб интерфейсе переходим к пункту “Terminal” и вводим команду:

Устанавливаем KVM на Debian 10 с web-панелью Cockpit

После того как убедились что все работает правильно, необходимо включить демон libvirtd, добавить его в автозапуск и проверить статус, для этого выполняем следующую последовательность команд:

systemctl start libvirtd.service
systemctl enable libvirtd.service
systemctl status libvirtd.service

Устанавливаем KVM на Debian 10 с web-панелью Cockpit

Настройка сетевого моста

Переходим к настройке сетевого моста, это необходимо для того, что бы интегрировать виртуальные машины в ту же сеть что и хост. В веб интерфейсе переходим переходим во вкладку “Networking”, затем нажимаем на кнопку “Add Bridge”:

Устанавливаем KVM на Debian 10 с web-панелью Cockpit

В открывшемся окне необходимо вписать название создаваемого сетевого интерфейса, можно оставить и по умолчанию “bridge0”, я же назову его сокращенно “br0”, затем необходимо выбрать интерфейс, в моем же случае он один “enp0s3”. После чего нажимаем кнопку “Apply”:

Устанавливаем KVM на Debian 10 с web-панелью Cockpit

После проведенных манипуляций, у вас должен появится интерфейс с вашим именем, в моем же случае это “br0”, а интерфейс “Ethernet” должен отключится:

Устанавливаем KVM на Debian 10 с web-панелью Cockpit

Создаем виртуальные машины с KVM

Переходим к созданию виртуальных машин, для этого в панели Cockpit переходим к пункту “Virtual Machines”, далее нажимаем на кнопку “Create VM”:

Устанавливаем KVM на Debian 10 с web-панелью Cockpit

В открывшимся окне в поле “Name” вводим название операционной системы, или же название самой виртуальной машины. Далее, в поле “Installation Source” необходимо указать путь к ISO образу дистрибутива, это можно сделать вручную, либо, нажать на галочку в данном пункте в правой стороне поля:

Устанавливаем KVM на Debian 10 с web-панелью Cockpit

Поля “OS Vendor” и “Operating System” должны заполнится автоматически, при необходимости можно отредактировать поля “Operating System”, как в случае с Debian, данное поля выбирает установку Debian Testing. После чего в поле “Memory” выставляем количество отведенной оперативной памяти для создаваемой машины, а в поле “Storage Size” задаем размер виртуального жесткого диска. Так же можно отметить поле немедленного запуска “Immediately Start VM”, после чего нажимаем кнопку “Create”. После нажатия кнопки “Create” у вас должна появится загрузка операционной системы:

Устанавливаем KVM на Debian 10 с web-панелью Cockpit

Теперь давайте установим “virt-manager”, о котором писалось выше. Он позволит вам управлять виртуальными машинами KVM. Для его установки вводим команду:

sudo apt install virt-manager

После установки вы найдете virt-manager в установленных программах, он будет называться “Менеджер виртуальных машин”. После его запуска в окне программы увидите ваши виртуальные машины:

Устанавливаем KVM на Debian 10 с web-панелью Cockpit

Возможно, вам так же необходимо будет добавить вашего пользователя в группу “libvirt” и “kvm”, у меня такой необходимости не было, но, на всякий пожарный как говорится…Для этого вводим команды:

sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER

Заключение

Вы так же можете установить систему виртуализации KVM на сервер под управлением Debian 10 используя данную статью, только в этом случае в настройках virt-manager необходимо указать IP адрес сервера, на который вы устанавливали панель Cockpit и KVM. В остальном же, вы точно так же создаете и используете виртуальные машины, разницы нет. Замечу, что KVM используется многими компаниями, которые предоставляют услуги виртуализации, например тот же Digital Ocean или Amazon.

А на этом сегодня все. Надеюсь данная статья будет вам полезна.
Журнал Cyber-X

KVM или Kernel Virtual Module - это модуль виртуализации для ядра Linux, который позволяет превратить ваш компьютер в гипервизор для управления виртуальными машинами. Этот модуль работает на уровне ядра и поддерживает такие технологии аппаратного ускорения, как Intel VT и AMD SVM.

Само по себе программное обеспечение KVM в пространстве пользователя ничего не виртуализирует. Вместо этого, оно использует файл /dev/kvm для настройки виртуальных адресных пространств для гостевой машины в ядре. Каждая гостевая машина будет иметь свою видеокарту, сетевую и звуковую карту, жесткий диск и другое оборудование.

Также у гостевой системы не будет доступа к компонентам реальной операционной системы. Виртуальная машина выполняется в полностью изолированном пространстве. Вы можете использовать KVM как в системе с графическим интерфейсом, так и на серверах. В этой статье мы рассмотрим как выполняется установка KVM в Ubuntu 20.04.

Установка KVM в Ubuntu 20.04

Перед тем как переходить к самой установке KVM нужно проверить поддерживает ли ваш процессор аппаратное ускорение виртуализации от Intel-VT или AMD-V. Для этого выполните такую команду:

egrep -c '(vmx|svm)' /proc/cpuinfo


Если в результате будет возвращено 0 - значит ваш процессор не поддерживает аппаратной виртуализации, если 1 или больше - то вы можете использовать KVM на своей машине.

Теперь мы можем перейти к установке KVM, набор программ можно получить прямо из официальных репозиториев:

sudo apt install qemu qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager

Мы установили не только утилиту kvm, но и библиотеку libvirt, а также менеджер виртуальных машин. После того, как установка будет завершена вам необходимо добавить своего пользователя в группу libvirt, потому что только root и пользователи этой группы могут использовать виртуальные машины KVM:

sudo gpasswd -a $USER libvirt

Затем убедитесь, что сервис libvirt запущен и работает:

sudo systemctl status libvirtd


После выполнения этой команды выйдите из системы и войдите снова. Далее, давайте проверим все ли правильно было установлено. Для этого используйте команду kvm-ok:


Использование KVM в Ubuntu

Вы справились с задачей установить KVM в Ubuntu, но вы еще не можете использовать эту среду виртуализации но ее нужно еще настроить. Далее, мы рассмотрим как выполняется настройка KVM в Ubuntu. Что удобно, в новых версиях сеть уже настроена и вам не нужно создавать новый сетевой мост. Вы можете убедится в этом выполнив команду:


Интерфейсы virbr0 и virbr-nic созданы KVM по умолчанию и они полностью реализуют все необходимые возможности сети. Ещё вы можете посмотреть доступные мосты с помощью команды:

sudo brctl show


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

Настройка KVM Ubuntu завершена и теперь мы можем перейти к ее использованию. Сначала давайте просмотрим список уже существующих виртуальных машин:

virsh -c qemu:///system list

Он пуст. Создать виртуальную машину можно через терминал или в графическом интерфейсе. Для создания через терминал используйте команду 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

Разберем подробнее что означают параметры этой команды:

  • virt-type - тип виртуализации, в нашем случае kvm;
  • name - имя новой машины;
  • ram - количество памяти в мегабайтах;
  • vcpus - количество ядер процессора;
  • os-variant - тип операционной системы;
  • cdrom - установочный образ системы;
  • network-bridge - сетевой мост, который мы настроили ранее;
  • graphics - способ получения доступа к графическому интерфейсу;
  • diskpath - адрес нового жесткого диска для этой виртуальной машины;

После завершения установки виртуальной машины вы можете узнать параметры подключения по VNC с помощью команды:

sudo virsh vncdisplay centos8

Теперь вы можете ввести полученные данные в вашем клиенте VNC и подключится к виртуальной машине даже удаленно. Для Debian команда будет немного отличаться, но все выглядит похожим образом:

Переходим в папку для образов:

Можно скачать установочный образ из интернета если это необходимо:

Затем создадим виртуальную машину:

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

Теперь снова посмотрим список доступных машин:

virsh -c qemu:///system list

Для запуска виртуальной машины можно использовать команду:

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:

Нет похожих записей

Оцените статью:

(12 оценок, среднее: 4,67 из 5)

Об авторе

18 комментариев

Спасибо за прекрасную статью! Меня интересует вот какой вопрос. Можно ли организовать средствами KVM проброс PCI-E в виртуальную машину, и если да, то как?

После запуска машины ошибка(((

Ошибка подключения к графической консоли:
внутренняя ошибка: не удалось выполнить команду QEMU «getfd»: No file descriptor supplied via SCM_RIGHTS

Кто знает какие существуют штатные (для которых есть deb пакеты хотя бы в ppa) бесплатные веб-интерфейсы для libvirt'а?

Добрый вечер. В этой строчке ошибка $ sudo addif bridge0 eth0 - нужно добавить $ sudo brctl addif bridge0 eth0

loopback
auto lo bridge0
iface lo inet loopback
iface bridge0 inet dhcp
bridge_ports eth0

Здесь может быть ошибка, т.к. у меня система не принимает эту редакцию /etc/network/interfaces, из-за чего пропадает ethernet-соединение:

ifquery: couldn't read interfaces file "/etc/network/interfaces"
/etc/network/interfaces:4: option with empty value

Судя по всему речь идёт о строке "loopback", хотя если её закомментировать, то улучшений не происходит.

Благодарю! По данной статье настроил виртуалку. Только вот как сделать общую папку не понятно. Уже часов 12 бьюсь над этой задачей. Пока только получилось пробросить флэшку. Если объясните как настроить общую папку в kvm буду благодарен в двойне.

МИГРАЦИЯ. в этих ваших интернетах валом типовых статей как поставить KVM и поднять там виртуалку.
Однако нет ни одной путней статьи о том как устроена миграция, какие виды бывают. Как это работает. А главное какого это не работает.

Эту заметку я пишу для того, чтобы продемонстрировать пошаговую установку и настройку виртуальной машины в Linux на базе KVM. Ранее я уже писал про виртуализацию, где использовал замечательный инструмент Vagrant.

Сейчас передо мной встал вопрос аренды хорошего сервера с большим объёмом оперативной памяти и объёмным жестким диском. Но запускать проекты прямо на хост-машине не хочется, поэтому буду разграничивать их по отдельным небольшим виртуальным серверам с ОС Linux или docker-контейнерам (о них расскажу в другой статье).

Все современные облачные хостинги работают по такому же принципу, т.е. хостер на хорошем железе поднимает кучу виртуальных серверов, которые мы привыкли называть VPS/VDS, и раздаёт их пользователям, либо автоматизирует этот процесс (привет, DigitalOcean).

KVM (kernel-based virtual machine) это программное обеспечения для Linux, использующее аппаратные средства x86-совместимых процессоров для работы с технологией виртуализации Intel VT/AMD SVM.

Установка KVM

Все махинации по созданию виртуальной машины я буду проводить на ОС Ubuntu 16.04.1 LTS. Чтобы проверить поддерживает ли ваш процессов аппаратную виртуализацию на базе Intel VT/AMD SVM, выполняем:

Если терминал непустой, то значит всё в порядке и KVM можно устанавливать. Ubuntu официально поддерживает только гипервизор KVM (входит в состав ядра Linux) и советует использовать библиотеку libvirt в качестве инструмента по управлению им, что мы и будем делать дальше.

Проверить поддержку аппаратной виртуализации в Ubuntu также можно через команду:

В случае успеха, вы увидите что-то вроде этого:

Устанавливаем пакеты для работы с KVM:

Если у вас есть доступ к графической оболочке системы, то можно установить GUI менеджер libvirt:

Пользоваться virt-manager достаточно просто (не сложнее VirtualBox), поэтому в этой заметке речь пойдёт про консольный вариант установки и настройки виртуального сервера.

Установка и настройка виртуального сервера

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

или вызвать стандартный "help":

Я всегда придерживаюсь следующих правил при работе с виртуальными серверами:

  1. Храню iso образы ОС в каталоге /var/lib/libvirt/boot
  2. Храню образы виртуальных машин в каталоге /var/lib/libvirt/images
  3. Явно задаю каждой новой виртуальной машине свой статичный IP адрес через DHCP сервер гипервизора.

Приступим к установке первой виртуалки (64-битной серверной убунте 16.04 LTS):

Скачав образ запускаем установку:

Переводя все эти параметры на "человеческий язык", то получается, что мы создаём виртуальную машину с ОС Ubuntu 16.04, 1024 МБ ОЗУ, 1 процессором, стандартной сетевой картой (виртуальная машина будет ходить в интернет как-будто из-за NAT), 20 ГБ HDD.

Стоит обратить внимание на параметр --os-variant, он указывает гипервизору под какую именно ОС следует адаптировать настройки.
Список доступных вариантов ОС можно получить, выполнив команду:

Если такой утилиты нет в вашей системе, то устанавливаем:

После запуска установки, в консоли появится вот такая надпись:

Это нормальная ситуация, продолжать установку мы будем через VNC.
Смотрим на каком порту он был поднят у нашей виртуалки (в соседнем терминале, например):

Порт 5900, на локальном адресе 127.0.0.1. Чтобы подключиться к VNC, необходимо использовать Port Forwarding через ssh. Перед тем как это сделать, убедитесь, что tcp forwarding разрешён у демона ssh. Для этого идём в настройки sshd:

Если ничего не нашлось или вы видите:

То правим конфиг на

и перезагружаем sshd.

Настройка Port forwarding

Выполняем команду на локальной машине:

Здесь мы настроили ssh port forwarding с локального порта 5900 на серверный порт 5900. Теперь уже можно подключиться к VNC, используя любой VNC-клиент. Я предпочитаю UltraVNC из-за простоты и удобства.

После успешного подключения, на экране отобразится стандартное окно приветствия начала установки Ubuntu.

После завершения установки и привычной перезагрузки, появится окно входа в систему. Авторизовавшись, определяем IP адрес новоиспечённой виртуалки, чтобы позже сделать его статичным:

Запоминаем и идём на хост машину. Вытаскиваем mac-адрес "сетевой" карты виртуалки:

Запоминаем наш mac адрес:

Редактируем сетевые настройки гипервизора:

Ищем DHCP, и добавляем вот это:

Должно получиться что-то вроде этого:

Для того, чтобы настройки вступили в силу, необходимо перезагрузить DHCP сервер гипервизора:

После этого перегружаем виртуальную машину, теперь она всегда будет иметь заданный ей IP адрес - 192.168.122.131.

Есть и другие способы задать виртуалке статичный IP, например, напрямую редактируя сетевые настройки внутри гостевой системы, но тут уже как душе вашей будет угодно. Я лишь показал вариант, который сам предпочитаю использовать.

Чтобы подключиться к терминалу виртуальной машины, выполняем:

Машина готова к бою.

Virsh: список команд

Чтобы посмотреть запущенные виртуальные хосты (все доступные можно получить добавив --all):

Перезагрузить хост можно:

Остановить виртуальную машину:

Добавить в автозапуск:

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

Она клонирует существующую виртуалку и изменяет host-sensitive данные, например, mac address. Пароли, файлы и прочая user-specific информация в клоне остаётся прежней. Если на клонируемой виртуалке IP адрес был прописан вручную, то могут возникнуть проблемы с доступом по SSH на клон из-за конфликта (2 хоста с одинаковым IP).

Помимо установки виртуалки через VNC, также возможен вариант с X11Forwarding через утилиту virt-manager. В Windows, например, для этого можно использовать Xming и PuTTY.

Читайте также: