Пятница, 23.01.2026 16:54

Установка KVM/QEMU в РЕДОС. Виртуализация в РЕДОС. Часть 1.

Установка KVM/QEMU в РЕДОС. Виртуализация в РЕДОС. Часть 1.

При переходе на отечественные операционные системы возникает необходимость переводить виртуальные машины с HYPER-V на гипервизор работающий в экосистеме Linux.

В настоящее время единственным вариантом является переход на KVM/QEMU. KVM – гипервизор встроенный в ядро Linux, а QEMU – эмулятор разнообразных платформ и устройств и утилиты для управления виртуальными машинами и дисками. Jни работают совместно, для обеспечения работоспособности виртуализации под Linux.

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

Сегодня мы рассмотрим установку этого гипервизора в РЕДОС, настроим сетевой мост, виртуальную сеть для виртуальной машины и установим РЕДОС в виртуальную машину.

Установка будет производиться на только что установленный сервер РЕДОС 8, с выбранным типом пакетов – «Сервер с рабочим столом Mate» без установки каких-либо дополнительных пакетов.

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

Диск на сервере разбит следующим образом:

/dev/vda3 53G 11G 40G 21% /
/dev/vda2 1,1G 286M 665M 31% /boot
/dev/vda5 151G 29k 143G 1% /srv

Образы ISO и диски виртуальных машин мы будем хранить в папке /srv

Установка KVM/QEMU

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

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

Запустим обновление:

sudo dnf update

Проверка наличия виртуализации на сервере

Прежде чем мы продолжим проверим поддерживает ли ваш процессор аппаратную виртуализацию:

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

В моем случае вывод был таким:

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush … arch_capabilities
vmx flags : vnmi preemption_timer posted_intr … vid shadow_vmcs
flags : fpu vme de pse tsc msr … arat vnmi umip md_clear arch_capabilities
vmx flags : vnmi preemption_timer … vapic_reg vid shadow_vmcs

Я сильно сократил вывод, так как в данном случае его содержимое не важно. 

Если результат выполнения команды не пустой, то ваш процессор поддерживает виртуализацию. В противном случае вы должны включить её в настройках BIOS вашего ПК.

Установка пакетов KVM/QEMU

Установим пакеты KVM/QEMU:

sudo dnf install qemu-kvm libvirt virt-install virt-manager openssh-askpass OVMF boost-random boost-program-options boost-regex bridge-utils -y

После завершения установки пакетов включим автозапуск службы libvirtd:

sudo systemctl enable libvirtd --now

После завершения установки пакетов проверим состояние службы libvirtd:

sudo systemctl status libvirtd | grep enabled
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; preset: enabled)
sudo systemctl status libvirtd | grep active
Active: active (running) since Sun 2026-01-18 01:08:41 MSK; 1min 42s ago

Служба активна и работает.

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

sudo reboot

После перезагрузки проверим состояние службы службы libvirtd:

sudo systemctl status libvirtd

Так же проверим, статус загрузки модулей ядра:

lsmod | grep kvm
kvm_intel 413696 0
kvm 1331200 1 kvm_intel
irqbypass 12288 1 kvm

Модули загружены.

Отключаем IP6 на сервере

Если вы не используете протокол IP6 в вашей сети, то во, избежание проблем, хорошей идеей будет отключить назначение ip6-адресов на сервере.

echo "net.ipv6.conf.all.disable_ipv6 = 1" | sudo tee - /etc/sysctl.d/ipv6.conf

Для внесения изменений в настройки перезагрузим сервер:

sudo reboot

Настройка сетевого моста для виртуальной машины

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

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
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 12:34:56:78:90:01 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.21/24 brd 192.168.1.255 scope global noprefixroute enp1s0
valid_lft forever preferred_lft forever
inet6 fe80::1234:ff:f678:9012/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 12:34:56:78:90:02 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

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

3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 12:34:56:78:90:02 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

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

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

У меня это единственный адаптер - enp1s0

Добавление сетевого моста

Обратите внимание! Для настройки сетевого моста вам необходим либо физический доступ к серверу, либо иные способы управления сервером, подразумевающие прямой доступ к его консоли в не зависимости от работоспособности основного сетевого адаптера! В процессе настройки на некоторое время доступ к сети на сервере пропадет, и вы не сможете им управлять по SSH!

Проверим наличие модуля для работы сетевого моста:

modinfo bridge
filename: /lib/modules/6.12.56-1.red80.x86_64/kernel/net/bridge/bridge.ko
description: Ethernet bridge driver
alias: rtnl-link-bridge
version: 2.3
license: GPL
srcversion: B53ADE38F15E69425FD6942
depends: stp,llc
intree: Y
name: bridge
retpoline: Y
vermagic: 6.12.56-1.red80.x86_64 SMP preempt mod_unload
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 73:B6:63:F9:EC:DF:8A:C6:5F:0B:FA:E7:CA:99:49:E5:F4:7F:BB:5D
sig_hashalgo: sha512
signature: 01:AA:1D:F6:F9:48:7D:7D:CA:10:7A:A9:F7:19:11:70:EF:3E:7F:B5:
…
A2:7E:F6:48:79:2F:AF:28:AC:7C:59:1B

Проверим список сетевых устройств:

nmcli device
DEVICE TYPE STATE CONNECTION
enp1s0 ethernet подключено enp1s0
virbr0 bridge подключено (внешнее) virbr0
lo loopback подключено (внешнее) lo

Как мы уже рассмотрели выше у меня на сервере один активный сетевой адаптер - enp1s0 

Добавим новый интерфейс для моста:

sudo nmcli con add con-name br0 type bridge ifname br0 ipv4.addresses 192.168.1.21/24 ipv4.gateway 192.168.1.254 ipv4.dns 192.168.1.254 ipv4.method manual autoconnect yes ipv6.method ignore

Для того, чтобы сетевой мост работал, на всех интерфейсах, входящих в его состав, не должны быть настроены IP-адреса.

Добавим интерфейс к сетевому мосту:

sudo nmcli conn add type ethernet slave-type bridge con-name br0 ifname enp1s0 master br0

Проверим статус моста:

sudo brctl show br0
bridge name bridge id STP enabled interfaces
br0 8000.123456789000 yes enp1s0

Получим список UUID всех соединений:

nmcli conn show  --active

Отключим enp1s0:

sudo nmcli conn down e7f7aefe-ba88-3e15-809d-0c218d21d830

Перезагрузим сервер.

sudo reboot

Если все прошло нормально, то теперь у нас появится новый интерфейс:

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
…
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 12:34:56:78:90:01 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.21/24 brd 192.168.130.255 scope global noprefixroute br0
valid_lft forever preferred_lft forever

А enp1s0 изменить статус:

2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
link/ether 12:34:56:78:90:01 brd ff:ff:ff:ff:ff:ff

Проверим работу сети:

ping ya.ru
PING ya.ru (77.88.44.242) 56(84) bytes of data.
64 bytes from ya.ru (77.88.44.242): icmp_seq=1 ttl=55 time=126 ms
64 bytes from ya.ru (77.88.44.242): icmp_seq=2 ttl=55 time=126 ms

Интернет и DNS настроены и работают.

Обратите внимание! На настройку сетевого моста может потребоваться время. Поэтому при возникновении ошибки:

ping ya.ru
ping: ya.ru: Временный сбой в разрешении имени

Немного подождите и попробуйте снова. Или проверьте ip-адрес моста. Возможно вы допустили в нем или маске подсети ошибку!

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

Для доступа к дискам QEMU использует пулы (pool) дисков. Для создания виртуальных машин нам потребуется два пула. Пул с образами iso и пул для хранения дисков виртуальных машин.

Пулы могут представлять собой как обычные папки, так и цели iSCSI, разнообразные файловые системы, блочные устройства и так далее.

Создадим папки для пулов:

sudo mkdir /srv/iso
sudo mkdir /srv/vm
sudo virsh pool-define-as iso dir --target /srv/iso
Пул iso определён
sudo virsh pool-define-as vm dir --target /srv/vm
Пул vm определён

Запустим пулы

sudo virsh pool-start iso
sudo virsh pool-start vm

Проверим список пулов:

sudo virsh pool-list
 Имя Состояние Автозапуск
-----------------------------------
 default активен yes
 iso активен no
 vm активен no

Добавим пулы в автозапуск

sudo virsh pool-autostart vm
sudo virsh pool-autostart iso

Проверим:

sudo virsh pool-list
 Имя Состояние Автозапуск
-----------------------------------
 default активен yes
 iso активен yes
 vm активен yes

Добавление образа ISO РЕДОС 8

Для того, чтобы добавить iso-образ в пул iso достаточно скопировать файл в папку /srv/iso

Загрузим образ с сайта разработчика. Ссылка на образ может измениться!

sudo cd /srv/iso
sudo wget https://files.red-soft.ru/redos/8.0/x86_64/iso/redos-8-20250711.4-Everything-x86_64-DVD1.iso

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

Далее я буду использовать образ:

redos-8-20250711.4-Everything-x86_64-DVD1.iso

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

В QEMU при использовании обычных папок как пулов, в нашем случае это /srv/vm все виртуальные диски хранятся в виде файлов с расширением .qcow2.

Тут следует различать диск и разделы, создаваемые на виртуальном на диске. Один файл .qcow2 может содержать несколько разделов, например ext4 или brtfs. Виртуальные машины при этом не ограничены одним виртуальным диском.

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

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

sudo virsh vol-create-as vm qcow2-disk.qcow2 20G --format qcow2 --allocation 0 --prealloc-metadata
sudo qemu-img create -f qcow2 /srv/vm/redos01.qcow2 20G

Эта команда создаст файл с виртуальным диском в формате qcow2 - /srv/vm/redos01.qcow2 размером 20 гигабайт.

Далее мы будем использовать виртуальный диск, который будет автоматически создан в пуле vm при создании виртуальной машины.

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

Существует два способа создания виртуальных машин - запуск из консоли с помощью qemu-system-x86_64 и установка с помощью virt-install. Мы будем второй способ, так как нам нужна постоянно действующая виртуальная машина.

Запустим:

sudo virt-install \
--name REDOS01 \
--memory 4096 \
--vcpus 3 \
--disk pool=vm,size=20,format=qcow2 \
--cdrom /srv/iso/redos-8-20250711.4-Everything-x86_64-DVD1.iso \
--network bridge=br0,model=virtio \
--vnc \
--os-variant rhel8.0 \
--noautoconsole

Будет создана виртуальная машина.

Добавим виртуальную машину в автозапуск при перезагрузке сервера виртуализации:

virsh autostart REDOS01

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

Чтобы получить доступ к консоли запустим Virtual Machine Manager

virt-manager

Или через меню:

Изображение удалено.

Откроется окно программы со списком виртуальных машин:

Изображение удалено.

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

Изображение удалено.

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

Изображение удалено.

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

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

Изображение удалено.

Для создания снапшота нажмите на кнопку:

Изображение удалено.

Обратите внимание! В имени снапшота не должно быть пробелов!

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

Заключение

Сегодня мы рассмотрели установку гипервизора KVM/QEMU в РЕДОС Linux:

Установили требуемые пакеты;

Настроили сетевой мост для виртуальной машины;

Создали пулы для образов iso и дисков виртуальных машин;

Добавили образ iso РЕДОС 8 в пул iso;

Добавили виртуальную машину на сервер;

Рассмотрели доступ к консоли виртуальной машины с помощью virt-manager.

Категория РЕД ОС Linux
Теги РЕДОС KVM QEMU

Добавить комментарий

Простой текст

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.
Просмотров: 271