Установка 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 enabledLoaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; preset: enabled)sudo systemctl status libvirtd | grep activeActive: active (running) since Sun 2026-01-18 01:08:41 MSK; 1min 42s agoСлужба активна и работает.
Для загрузки всех необходимых модулей обязательно перезагрузим сервер:
sudo rebootПосле перезагрузки проверим состояние службы службы libvirtd:
sudo systemctl status libvirtdТак же проверим, статус загрузки модулей ядра:
lsmod | grep kvmkvm_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 a1: 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 bridgefilename: /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 deviceDEVICE 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 br0bridge 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 a1: 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.ruPING 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/vmsudo 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.
Добавить комментарий