Установка и настройка KVM (интерфейс Мост) на CentOS 7 / RHEL 7

by itisgood

KVM  – это инфраструктура виртуализации для Linux, для которой процессор с аппаратным расширением виртуализации может принимать гостевые системы.

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

В приведенном ниже руководстве представлена установка и настройка KVM (QEMU) вместе с конфигурацией Linux Bridge в операционной системе CentOS7 / RedHat7.

1. Проверьте поддержку виртуализации оборудования процессора

Наш процессор должен поддерживать аппаратную виртуализацию (VT-x), чтобы стать Hypervisor KVM и хостом виртуальных машин  (гостевые операционные системы):

# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    2
Core(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 42
Model name:            Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz
Stepping:              7
CPU MHz:               800.000
BogoMIPS:              4988.58
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K
NUMA node0 CPU(s):     0-3

2. Отключите и остановите NetworkManager

Известно, что NetworkManager вызывает проблемы при работе с Linux Bridge, поэтому для нас лучше отключить его:

# systemctl stop NetworkManager
# systemctl disable NetworkManager
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.

3. Установите пакеты, связанные с KVM

# yum install qemu-kvm qemu-img libvirt libvirt-python libvirt-client virt-install virt-viewer virt-manager

4. Запустите и включите демон libvirtd

# systemctl enable libvirtd
# systemctl start libvirtd

5. Установите общесистемные привилегии для KVM

Нам нужно добавить нашего обычного пользователя tuxfixer в группу kvm, чтобы он мог запустить virt-manager

# usermod -a -G kvm tuxfixer

Нам также необходимо установить правила polkit (policy kit) для KVM.
Редактируем файл 49-polkit-pkla-compat.rules:

# vim /etc/polkit-1/rules.d/49-polkit-pkla-compat.rules

и добавьте следующее:

polkit.addRule(function(action, subject) {
    if (action.id == "org.libvirt.unix.manage" &&
        subject.isInGroup("kvm")) {
            return polkit.Result.YES;
        }
});

6. Создайте мост KVM Linux Bridge (модемный сетевой интерфейс гипервизора KVM с сетевыми интерфейсами VM)

В этом уроке мы хотим, чтобы виртуальные машины получали свои IP-адреса из той же сети, где подключен хост KVM Hypervisor, поэтому мы подключим его основной сетевой интерфейс (em1) к сетевым интерфейсам VM.

Для этого нам нужно создать Linux Bridge из интерфейса em1 на хосте KVM Hypervisor.

Текущая конфигурация сети Hypervisor (сразу после установки KVM):

# ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN 
    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: em1:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether d0:67:e5:33:15:3f brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.3/24 brd 192.168.2.255 scope global dynamic em1
       valid_lft 73193sec preferred_lft 73193sec
    inet6 fe80::d267:e5ff:fe33:153f/64 scope link 
       valid_lft forever preferred_lft forever
3: wlp3s0:  mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 00:24:d7:f4:dc:e8 brd ff:ff:ff:ff:ff:ff
4: virbr0:  mtu 1500 qdisc noqueue state DOWN 
    link/ether 52:54:00:b7:22:b3 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
5: virbr0-nic:  mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 500
    link/ether 52:54:00:b7:22:b3 brd ff:ff:ff:ff:ff:ff

Файл конфигурации ifcfg-em1 (до создания моста KVM Linux Bridge):

# cat /etc/sysconfig/network-scripts/ifcfg-em1 
DEVICE="em1"
TYPE="Ethernet"
BOOTPROTO="none"
NAME="em1"
ONBOOT="yes"
HWADDR="D0:67:E5:33:15:3F"
IPADDR=192.168.2.3
PREFIX=24
GATEWAY=192.168.2.1
PEERDNS="no"
NM_CONTROLLED="no"

Для настройки сети KVM мы будем использовать приложение virt-manager, которое является удобным интерфейсом GUI для интерфейса командной строки KVM.

Примечание. Интерфейс virbr0 был создан автоматически вместе с установкой KVM и представляет виртуальную сеть, существующую «внутри» среды KVM с NAT (трансляция сетевых адресов).

Поскольку мы не нуждаемся в NAT в среде KVM (мы хотим скрыть интерфейс Hypervisor), мы можем удалить существующую виртуальную сеть KVM на основе интерфейса virbr0.

Запустите virt-manager от пользователя root:

# virt-manager

… должно появиться окно virt-manager:

Правый щелчок на QEMU/KVM -> Details -> Virtual Networks -> Disable network: “default” -> Delete network: “default” based on virbr0

Теперь мы можем подключить интерфейс Hypervisor KVM (em1):

Щелкните правой кнопкой мыши:QEMU/KVM -> Details -> Network Interfaces -> Add Interface:

  • Interface type: Bridge
  • Interface name: br-em1
  • Start mode: on boot
  • Activate now: enabled
  • IP settings: copy configuration from ’em1′
  • Bridge settings: STP on, delay 0.00 sec

… нажмите Finish, чтобы переопределить существующую конфигурацию и создать KVM Linux Bridge.

Теперь мы можем проверить вновь созданный Linux Bridge (br-em1):

Проверьте текущую конфигурацию IP (теперь IP назначается br-em1, а em1 действует теперь только как интерфейс):

# ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN 
    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: em1:  mtu 1500 qdisc pfifo_fast master br-em1 state UP qlen 1000
    link/ether d0:67:e5:33:15:3f brd ff:ff:ff:ff:ff:ff
3: wlp3s0:  mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 00:24:d7:f4:dc:e8 brd ff:ff:ff:ff:ff:ff
6: br-em1:  mtu 1500 qdisc noqueue state UP 
    link/ether d0:67:e5:33:15:3f brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.3/24 brd 192.168.2.255 scope global br-em1
       valid_lft forever preferred_lft forever
    inet6 fe80::d267:e5ff:fe33:153f/64 scope link 
       valid_lft forever preferred_lft forever

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

# brctl show
bridge name	bridge id		   STP enabled interfaces
br-em1		8000.d067e533153f  yes		   em1

Теперь KVM Linux мост настроен, и мы можем продолжить установку виртуалки.

 

You may also like

1 comment

Как установить KVM на RHEL 8 — Information Technology is good 07.12.2018 - 09:29

[…] Установка и настройка KVM (интерфейс Мост) на CentOS 7 / RHEL 7 […]

Reply

Leave a Comment