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 мост настроен, и мы можем продолжить установку виртуалки.
1 comment
[…] Установка и настройка KVM (интерфейс Мост) на CentOS 7 / RHEL 7 […]