Установите и настройте KVM в Ubuntu 20.04 LTS
В этом пошаговом руководстве объясняется, что такое KVM, как установить и настроить KVM на сервере Ubuntu 20.04, а также как создавать гостевые машины KVM и управлять ими с помощью программы Virsh.
Что такое КВМ?
KVM, сокращение от Kвиртуальнаявиртуальная машинана базе ядра, представляет собой модуль ядра FreeBSD и Linux, который позволяет ядро действует как гипервизор. Начиная с версии ядра 2.6.20, KVM объединен с основной веткой ядра Linux.
Используя KVM, вы можете легко настроить среду виртуализации на машине с Linux и разместить на ней широкий спектр гостевых операционных систем, включая Linux, Windows, BSD, Mac OS и многие другие.
В этом руководстве мы рассмотрим, как установить и настроить KVM на безголовом сервере Ubuntu 20.04. А также мы увидим, как создавать гостевые машины KVM и управлять ими с помощью утилиты командной строки Virsh.
Предварительные условия
Перед установкой KVM сначала убедитесь, что процессор вашей системы поддерживает аппаратную виртуализацию. В следующем руководстве мы задокументировали несколько различных способов определить, поддерживает ли система Linux виртуализацию.
- Как узнать, поддерживает ли процессор технологию виртуализации (VT)
Если ваша система поддерживает аппаратную виртуализацию, продолжите следующие шаги.
1. Установите и настройте KVM в Ubuntu 20.04 LTS.
Для целей данного руководства я буду использовать следующие системы.
Сервер виртуализации KVM:
- ОС – минимальный сервер Ubuntu 20.04 LTS (без графического интерфейса)
- IP-адрес: 192.168.225.52/24
Удаленный клиент:
- ОС – Ubuntu 20.04 GNOME Desktop
Сначала давайте установим KVM на сервер Ubuntu.
1.1. Установите KVM в Ubuntu 20.04 LTS
Установите Kvm и все необходимые зависимости для настройки среды виртуализации на вашем сервере Ubuntu 20.04 LTS, используя команду:
sudo apt install qemu qemu-kvm libvirt-clients libvirt-daemon-system virtinst bridge-utils
Здесь,
- qemu – универсальный эмулятор машины и виртуализатор.
- qemu-kvm — метапакет QEMU для поддержки KVM (т. е. полная виртуализация QEMU на оборудовании x86),
- libvirt-clients — программы для библиотеки libvirt,
- libvirt-daemon-system — файлы конфигурации демона Libvirt,
- virtinst — программы для создания и клонирования виртуальных машин,
- bridge-utils — утилиты для настройки Ethernet-моста Linux.
После установки KVM запустите службу libvertd (если она еще не запущена):
sudo systemctl enable libvirtd
sudo systemctl start libvirtd
Проверьте статус службы libvirtd с помощью команды:
systemctl status libvirtd
Пример вывода:
● libvirtd.service - Virtualization daemon
Loaded: loaded (/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-07-04 08:13:41 UTC; 7min ago
TriggeredBy: ● libvirtd-ro.socket
● libvirtd-admin.socket
● libvirtd.socket
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 4492 (libvirtd)
Tasks: 19 (limit: 32768)
Memory: 12.9M
CGroup: /system.slice/libvirtd.service
├─4492 /usr/sbin/libvirtd
├─4641 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --l>
└─4642 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --l>
Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: compile time options: IPv6 GNU-getopt DBus i18n>
Jul 04 08:13:42 ubuntuserver dnsmasq-dhcp[4641]: DHCP, IP range 192.168.122.2 -- 192.168.12>
Jul 04 08:13:42 ubuntuserver dnsmasq-dhcp[4641]: DHCP, sockets bound exclusively to interfa>
Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: reading /etc/resolv.conf
Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: using nameserver 127.0.0.53#53
Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: read /etc/hosts - 7 addresses
Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: read /var/lib/libvirt/dnsmasq/default.addnhosts>
Jul 04 08:13:42 ubuntuserver dnsmasq-dhcp[4641]: read /var/lib/libvirt/dnsmasq/default.host>
Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: reading /etc/resolv.conf
Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: using nameserver 127.0.0.53#53
Итак, служба libvertd включена и запущена! Давайте теперь сделаем остальную часть конфигурации.
1.2. Настройка сети Bridge с KVM в Ubuntu
Мостовая сеть использует реальный сетевой интерфейс хост-компьютера совместно с другими виртуальными машинами для подключения к внешней сети. Поэтому каждая виртуальная машина может напрямую привязываться к любому доступному адресу IPv4 или IPv6, как физический компьютер.
По умолчанию KVM настраивает частный виртуальный мост, чтобы все виртуальные машины могли взаимодействовать друг с другом внутри главного компьютера. Он предоставляет собственную подсеть и DHCP для настройки гостевой сети и использует NAT для доступа к сети хоста.
Посмотрите IP-адрес виртуальных интерфейсов KVM по умолчанию с помощью команды «ip»:
ip a
Пример вывода:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:8a:52:94 brd ff:ff:ff:ff:ff:ff
inet 192.168.225.52/24 brd 192.168.225.255 scope global dynamic enp0s3
valid_lft 39559sec preferred_lft 39559sec
inet6 2409:4072:6c0f:431d:a00:27ff:fe8a:5294/64 scope global mngtmpaddr noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe8a:5294/64 scope link
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:10:7c:c1 brd ff:ff:ff:ff:ff:ff
inet 192.168.225.60/24 brd 192.168.225.255 scope global dynamic enp0s8
valid_lft 39559sec preferred_lft 39559sec
inet6 2409:4072:6c0f:431d:a00:27ff:fe10:7cc1/64 scope global mngtmpaddr noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe10:7cc1/64 scope link
valid_lft forever preferred_lft forever
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:5d:61:28 brd ff:ff:ff:ff:ff:ff
inet 192.168.225.51/24 brd 192.168.225.255 scope global dynamic enp0s9
valid_lft 39559sec preferred_lft 39559sec
inet6 2409:4072:6c0f:431d:a00:27ff:fe5d:6128/64 scope global mngtmpaddr noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe5d:6128/64 scope link
valid_lft forever preferred_lft forever
5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:f1:98:9e brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:f1:98:9e brd ff:ff:ff:ff:ff:ff
Как видите, сеть KVM по умолчанию virbr0 использует IP-адрес 192.168.122.1/24. Все виртуальные машины будут использовать IP-адрес в диапазоне IP 192.168.122.0/24, а операционная система хоста будет доступна по адресу 192.168.122.1. У вас должна быть возможность подключиться по ssh к хостовой ОС (по адресу 192.168.122.1) изнутри гостевой ОС и использовать scp для копирования файлов туда и обратно.
Это нормально, если вы получаете доступ к виртуальным машинам внутри самого хоста. Однако мы не можем получить доступ к виртуальным машинам из других удаленных систем в сети.
Потому что они используют другой диапазон IP-адресов, например 192.168.225.0/24 в моем случае. Чтобы получить доступ к виртуальным машинам с других удаленных хостов, мы должны настроить общедоступный мост, который работает в хост-сети и использует любой внешний DHCP-сервер, находящийся в хост-сети.
Проще говоря, мы собираемся заставить все виртуальные машины использовать ту же серию IP-адресов, что и хост-система.
Перед настройкой общедоступной мостовой сети нам следует отключить Netfilter по соображениям производительности и безопасности. Netfilter в настоящее время включен на мостах по умолчанию.
Чтобы отключить сетевой фильтр, создайте файл с именем /etc/sysctl.d/bridge.conf:
sudo vi /etc/sysctl.d/bridge.conf
Добавьте следующие строки:
net.bridge.bridge-nf-call-ip6tables=0
net.bridge.bridge-nf-call-iptables=0
net.bridge.bridge-nf-call-arptables=0
Сохраните и закройте файл.
Затем создайте еще один файл с именем /etc/udev/rules.d/99-bridge.rules:
sudo vi /etc/udev/rules.d/99-bridge.rules
Добавьте следующую строку:
ACTION=="add", SUBSYSTEM=="module", KERNEL=="br_netfilter", RUN+="/sbin/sysctl -p /etc/sysctl.d/bridge.conf"
Это позволит установить необходимые флаги для отключения сетевого фильтра на мостах в соответствующем месте при запуске системы. Сохраните и закройте файл. Перезагрузите систему, чтобы изменения вступили в силу.
Далее нам следует отключить сеть по умолчанию, которую KVM установил для себя.
Найдите имена сетевых интерфейсов KVM по умолчанию с помощью команды «ip link»:
ip link
Пример вывода:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:8a:52:94 brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:10:7c:c1 brd ff:ff:ff:ff:ff:ff
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:5d:61:28 brd ff:ff:ff:ff:ff:ff
5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
link/ether 52:54:00:1f:a2:e7 brd ff:ff:ff:ff:ff:ff
6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN mode DEFAULT group default qlen 1000
link/ether 52:54:00:1f:a2:e7 brd ff:ff:ff:ff:ff:ff
Как вы видите в приведенном выше выводе, записи «virbr0» и «virbr0-nic» — это сети KVM.
Давайте удалим сеть KVM по умолчанию с помощью команды:
virsh net-destroy default
Пример вывода:
Network default destroyed
Отмените определение сети по умолчанию с помощью команды:
virsh net-undefine default
Пример вывода:
Network default has been undefined
Если приведенные выше команды по какой-либо причине не работают, вы можете использовать эти команды, чтобы отключить и отменить определение сети KVM по умолчанию:
sudo ip link delete virbr0 type bridge
sudo ip link delete virbr0-nic
Теперь снова запустите «ip link», чтобы проверить, действительно ли удалены интерфейсы virbr0 и virbr0-nic:
$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:8a:52:94 brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:10:7c:c1 brd ff:ff:ff:ff:ff:ff
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:5d:61:28 brd ff:ff:ff:ff:ff:ff
Видеть? Сети KVM по умолчанию исчезли.
Теперь давайте настроим общедоступный мост KVM, который будет использоваться при создании новой виртуальной машины.
Примечание:
Не используйте карты беспроводного сетевого интерфейса для мостов. Большинство беспроводных интерлейсов не поддерживают мостовое соединение. Всегда используйте проводные сетевые интерфейсы для бесперебойного подключения!
Чтобы создать сетевой мост на хосте, отредактируйте файл /etc/netplan/00-installer-config.yaml и добавьте сведения о мосте.
Вот содержимое файла 00-installer-config.yaml по умолчанию на моем сервере Ubuntu 20.04 LTS.
$ cat /etc/netplan/00-installer-config.yaml
This is the network config written by 'subiquity'
network:
ethernets:
enp0s3:
dhcp4: true
enp0s8:
dhcp4: true
enp0s9:
dhcp4: true
version: 2
Как видите, на моем сервере Ubuntu есть три проводных сетевых интерфейса, а именно enp0s3, enp0s8 и enp0s9.
Прежде чем редактировать этот файл, создайте резервную копию существующего файла /etc/netplan/00-installer-config.yaml:
sudo cp /etc/netplan/00-installer-config.yaml{,.backup}
Затем отредактируйте файл конфигурации по умолчанию, используя ваш любимый редактор:
sudo vi /etc/netplan/00-installer-config.yaml
Добавьте/измените его, как показано ниже:
This is the network config written by 'subiquity'
network:
ethernets:
enp0s3:
dhcp4: false
dhcp6: false
enp0s8:
dhcp4: false
dhcp6: false
enp0s9:
dhcp4: false
dhcp6: false
bridges:
br0:
interfaces: [ enp0s3 ]
addresses: [192.168.225.52/24]
gateway4: 192.168.225.1
mtu: 1500
nameservers:
addresses: [8.8.8.8,8.8.4.4]
parameters:
stp: true
forward-delay: 4
dhcp4: no
dhcp6: no
version: 2
Здесь сетевой интерфейс моста «br0» подключен к сетевому интерфейсу хоста «enp0s3». IP-адрес br0 — 192.168.225.52. Шлюз — 192.168.225.1. Я использую DNS-серверы Google (8.8.8.8 и 8.8.4.4) для подключения к Интернету. Убедитесь, что отступы пробелов точно такие же, как указано выше. Если отступы строк неправильные, мостовой сетевой интерфейс не активируется. Замените приведенные выше значения на те, которые соответствуют вашей сети.
После изменения файла конфигурации сети сохраните и закройте его. Примените изменения, выполнив следующую команду:
sudo netplan --debug apply
Теперь проверьте, присвоен ли IP-адрес интерфейсу моста:
ip a
Пример вывода:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
link/ether 08:00:27:8a:52:94 brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:10:7c:c1 brd ff:ff:ff:ff:ff:ff
inet6 2409:4072:48b:ab02:a00:27ff:fe10:7cc1/64 scope global mngtmpaddr noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe10:7cc1/64 scope link
valid_lft forever preferred_lft forever
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:5d:61:28 brd ff:ff:ff:ff:ff:ff
inet6 2409:4072:48b:ab02:a00:27ff:fe5d:6128/64 scope global mngtmpaddr noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe5d:6128/64 scope link
valid_lft forever preferred_lft forever
7: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 08:00:27:8a:52:94 brd ff:ff:ff:ff:ff:ff
inet 192.168.225.52/24 brd 192.168.225.255 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe8a:5294/64 scope link
valid_lft forever preferred_lft foreve
Как вы видите в приведенном выше выводе, мостовому сетевому интерфейсу br0 присвоен IP-адрес 192.168.225.52, а запись enp0s3 теперь имеет запись «master br0». Это означает, что enp0s3 принадлежит мосту.
Вы также можете использовать команду "brctl", чтобы показать состояние моста:
brctl show br0
Пример вывода:
bridge name bridge id STP enabled interfaces
br0 8000.0800278a5294 yes enp0s3
Теперь нам нужно настроить KVM для использования этого моста. Для этого создайте XML-файл с именем host-bridge.xml:
vi host-bridge.xml
Добавьте следующие строки:
<network>
<name>host-bridge</name>
<forward mode="bridge"/>
<bridge name="br0"/>
</network>
Выполните следующие команды, чтобы запустить вновь созданный мост и сделать его мостом по умолчанию для виртуальных машин:
virsh net-define host-bridge.xml
virsh net-start host-bridge
virsh net-autostart host-bridge
Чтобы проверить, активен ли мост и запущен ли он, выполните:
virsh net-list --all
Пример вывода:
Name State Autostart Persistent
------------------------------------------------
host-bridge active yes yes
Поздравляем! Мы успешно настроили KVM-мост, и теперь он активен.
Связанное чтение:
- Установка и настройка KVM на сервере CentOS 8
- Установка и настройка KVM в OpenSUSE Tumbleweed
2. Создавайте виртуальные машины KVM и управляйте ими с помощью Virsh.
Для управления виртуальными машинами мы используем утилиту командной строки virsh. Программа virsh используется для создания, просмотра списка, приостановки, перезапуска, завершения работы и удаления виртуальных машин из командной строки.
По умолчанию файлы виртуальной машины и другие связанные файлы хранятся в папке /var/lib/libvirt/ . Путь по умолчанию для хранения ISO-образов — /var/lib/libvirt/boot/. Конечно, мы можем изменить эти местоположения при установке новой виртуальной машины.
2.1. Список всех виртуальных машин
Сначала давайте проверим, существуют ли виртуальные машины.
Чтобы просмотреть список всех доступных виртуальных машин, запустите:
sudo virsh list --all
Пример вывода:
Как видите, существующих виртуальных машин нет.
2.2. Создание виртуальных машин KVM
Давайте создадим виртуальную машину Ubuntu 18.04 с 2 ГБ ОЗУ, 1 ядром ЦП и жестким диском 10 ГБ. Для этого запустите:
sudo virt-install --name Ubuntu-18.04 --ram=2048 --vcpus=1 --cpu host --hvm --disk path=/var/lib/libvirt/images/ubuntu-18.04-vm1,size=10 --cdrom /home/ostechnix/ubuntu18.iso --network bridge=br0 --graphics vnc
Давайте разберем приведенную выше команду и посмотрим, что делает каждая опция.
- --name Ubuntu-18.04: имя виртуальной машины.
- --ram=2048 : выделяет виртуальной машине 2 ГБ ОЗУ.
- --vcpus=1 : указывает количество ядер ЦП в виртуальной машине.
- --cpu хост : оптимизирует свойства ЦП для виртуальной машины, предоставляя гостю конфигурацию ЦП хоста.
- --hvm : запросите полную виртуализацию оборудования.
- --disk path=/var/lib/libvirt/images/ubuntu-18.04-vm1,size=10 : место для сохранения жесткого диска виртуальной машины и его размера. В данном случае я выделил размер жесткого диска 10 ГБ.
- --cdrom /home/ostechnix/ubuntu18.iso : место, где находится фактический ISO-образ установщика Ubuntu.
- --network Bridge=br0 : указать виртуальной машине использовать сеть-мост. Если вы не настроили мостовую сеть, игнорируйте этот параметр.
- --graphics vnc : разрешает доступ VNC к виртуальной машине с удаленного клиента.
Пример вывода приведенной выше команды будет:
WARNING Graphics requested but DISPLAY is not set. Not running virt-viewer.
WARNING No console to launch for the guest, defaulting to --wait -1
Starting install...
Allocating 'ubuntu-18.04-vm1' | 10 GB 00:00:06
Domain installation still in progress.
Waiting for installation to complete.
Это сообщение будет отображаться до тех пор, пока вы не подключитесь к виртуальной машине из удаленной системы через любое приложение VNC и не завершите установку ОС.
Поскольку наша хост-система KVM (сервер Ubuntu) не имеет графического интерфейса, мы не можем продолжить установку гостевой ОС. Итак, я собираюсь использовать запасную машину с графическим интерфейсом для завершения установки гостевой ОС с помощью клиента VNC.
На этом мы закончили с сервером Ubuntu. Следующие шаги необходимо выполнить в клиентской системе.
2.3. Доступ к виртуальным машинам из удаленных систем через клиент VNC
Перейдите к удаленным системам с графической средой рабочего стола и установите любое клиентское приложение VNC, если оно еще не установлено. У меня есть рабочий стол Ubuntu с установленным клиентом удаленного рабочего стола Remmina.
SSH в хост-систему KVM:
ssh ostechnix@192.168.225.52
Здесь,
- ostechnix — имя пользователя на хосте KVM (сервер Ubuntu 20.04).
- 192.168.225.52 — IP-адрес хоста KVM.
Найдите порт VNC, используемый работающей виртуальной машиной, с помощью команды:
sudo virsh dumpxml Ubuntu-18.04 | grep vnc
Замените «Ubuntu-18.04» на имя вашей виртуальной машины.
Пример вывода:
<graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1'>
Номер порта VNC — 5900.
Введите следующую команду переадресации портов SSH со своего терминала:
ssh ostechnix@192.168.225.52 -L 5900:127.0.0.1:5900
Запустите клиентское приложение VNC и выберите протокол «VNC», затем введите localhost:5900 в адресной строке и, наконец, нажмите ENTER:
Приложение VNC теперь покажет вам окно предполагаемой установки ОС.
Просто продолжайте установку гостевой ОС. После завершения установки закройте окно приложения VNC.
2.4. Получение списка работающих виртуальных машин
Запустите команду «virt list», чтобы увидеть список запущенных виртуальных машин:
sudo virsh list
Пример вывода:
Id Name State
------------------------------
2 Ubuntu-18.04 running
Как видите, виртуальная машина Ubuntu 18.04 в настоящее время работает, и ее идентификатор равен 2.
2.5. Запустить виртуальные машины
Чтобы запустить виртуальную машину, запустите:
sudo virsh start Ubuntu-18.04
Вы также можете использовать идентификатор виртуальной машины для ее запуска:
sudo virsh start 2
2.6. Перезагрузите виртуальные машины
Чтобы перезапустить работающую виртуальную машину, выполните:
sudo virsh reboot Ubuntu-18.04
Или,
sudo reboot 2
2.7. Приостановить виртуальные машины
Чтобы приостановить работающую виртуальную машину, выполните:
sudo suspend Ubuntu-18.04
Или,
sudo suspend 2
2.8. Возобновить виртуальные машины
Чтобы возобновить приостановленную виртуальную машину, выполните:
sudo virsh resume Ubuntu-18.04
Или,
sudo resume 2
2.9. Выключение виртуальных машин
Чтобы выключить работающую виртуальную машину, выполните:
sudo virsh shutdown Ubuntu-18.04
Или,
sudo shutdown 2
2.10. Удаление виртуальных машин
Чтобы полностью удалить виртуальную машину, выполните:
sudo virsh undefine Ubuntu-18.04
sudo virsh destroy Ubuntu-18.04
Вирш имеет множество команд и опций. Чтобы узнать их все, обратитесь к разделу помощи virsh:
virsh --help
3. Управляйте гостями KVM графически
Запомнить все команды virsh практически невозможно. Если вы начинающий администратор Linux, вам может быть сложно выполнять все операции управления Kvm из командной строки. Не беспокойся! Существует несколько веб-инструментов для графического управления гостевыми машинами KVM. В следующих руководствах подробно объясняется, как управлять гостями Kvm с помощью Cockpit и Virt-manager.
- Управление виртуальными машинами KVM с помощью веб-консоли Cockpit
- Как управлять виртуальными машинами KVM с помощью Virt-Manager
4. Включите доступ к консоли Virsh для виртуальных машин.
После создания гостей KVM я могу получить к ним доступ через SSH, клиент VNC, Virt-viewer, Virt-manager, веб-консоль Cockpit и т. д. Но я не смог получить к ним доступ с помощью команды «virsh console». Чтобы получить доступ к гостям KVM с помощью «консоли virsh», обратитесь к следующему руководству:
- Как включить доступ к консоли Virsh для гостей KVM
Другие руководства, связанные с KVM
- Создание виртуальной машины KVM с использованием образа Qcow2 в Linux
- Как перенести виртуальные машины Virtualbox в виртуальные машины KVM в Linux
- Включить поддержку UEFI для виртуальных машин KVM в Linux
- Как включить вложенную виртуализацию в KVM в Linux
- Отображение статистики систем виртуализации с помощью Virt-top в Linux
- Как узнать IP-адрес виртуальной машины KVM
- Как переименовать гостевую виртуальную машину KVM
- Доступ к образам дисков виртуальных машин и их изменение с помощью Libguestfs
- Быстро создавайте образы виртуальных машин с помощью Virt-builder
- Как спасти виртуальные машины с помощью Virt-Rescue
- Как увеличить размер диска виртуальной машины KVM в Linux
- Настройка общей папки между хостом и гостем KVM
- Как изменить расположение пула хранения данных KVM Libvirt по умолчанию
- [Решено] Невозможно получить доступ к файлу хранилища, в разрешении отказано. Ошибка в KVM Libvirt
- Как экспортировать и импортировать виртуальные машины KVM в Linux
Заключение
В этом руководстве мы обсудили, как установить и настроить KVM в серверной версии Ubuntu 20.04 LTS.
Мы также рассмотрели, как создавать виртуальные машины KVM и управлять ими из командной строки с помощью инструмента virsh
и инструментов с графическим интерфейсом Cockpit и Virt-manager.
Наконец, мы увидели, как включить доступ к консоли virsh для виртуальных машин KVM. На этом этапе у вас должна быть полностью работающая среда виртуализации на вашем сервере Ubuntu 20.04.
Ресурс:
- Веб-сайт KVM