Установка и настройка гипервизора KVM на CentOS
В данной статье мы рассмотрим установку и базовую настройку гипервизора KVM на сервере под управлением Linux CentOS. Покажем, как создать виртуальную машину в KVM, изменить ее настройки, установить гостевую операционную систему и основные команды управления ВМ.
KVM (Kernel-based Virtual Machine) средство виртуализации в среде Linux, которое использует аппаратную виртуализацию на базе Intel VT или AMD SVM. С помощью KVM вы можете создавать изолированные виртуальные машины с собственным виртуальным аппаратным обеспечением: сетевыми картами, дисками, видеокартами и другими устройствами. На виртуальные машины можно уставить любую ОС (не только Linux).
Содержимое
Установка KVM в CentOS
При настройке KVM на сервере, нужно начать с проверки вашего процессора. Нужно узнать, поддерживает ли аппаратную виртуализацию CPU, установленный на вашем сервере. Из консоли сервера, выполните команду:
1
|
# cat /proc/cpuinfo | egrep "(vmx|svm)"
|
Если ваш процессор поддерживает технологию VT-x, у вас должен быть примерно такой вывод:

Если же команда ничего не выдала, но ваш процессор точно поддерживает виртуализацию, проверьте, вохможно данная опция отключена в BIOS сервера. Ищите параметры “Intel Virtualization Technology” или “SVM MODE”.
На моем сервере поддержка данной технологии включена, поэтому можно приступать к установке необходимых компонентов в CentOS через пакетный менеджер yum/dnf:
1
|
# yum install libvirt libvirt-python libguestfs-tools qemu-kvm virt-install –y
|
- qemu-kvm – сам гипервизор KVM;
- libvirt – библиотеки управления вирилизацией;
- virt-install – команды для управления виртуальными машинами KVM.
На сервер будет установлено большое количество пакетов, следите, чтобы у вас не возникло ошибок в процессе установки.
Теперь нужно добавить сервис libvirtd в автозагрузку и запустить его:
1
2
|
# systemctl enable libvirtd
# systemctl start libvirtd
|
Проверьте, загрузились ли модули ядра kvm_intel и kvm:
1
|
[root@localhost /]# lsmod | grep kvm
|
1
2
3
|
kvm_intel 188688 0
kvm 636931 1 kvm_intel
irqbypass 13503 1 kvm
|
Если у вас ничего не выводится, перезагрузите сервер и проверьте повторно.
Настройка сети в KVM
Теперь создадим каталоги, в которых будут храниться диски виртуальных машин и iso образы:
1
|
# mkdir -p /vz/{disk,iso}
|
Чтобы созданные виртуальные машины имели доступ в интернет, нам нужно настроить сеть через bridge. Для этого потребуется пакет bridge-utils, проверьте установлен ли он в Linux командой:
1
|
# rpm -qa | grep bridge-utils
|
Если нужно, установите его:
1
|
# yum install bridge-utils -y
|
После установки пакетов для KVM, в системе появился сетевой интерфейс virbr0:
1
|
# ip a
|
Чтобы создать сетевой мост(bridge), нужно настроить файл конфигурации для сетевого интерфейса сервера:
1
|
# cp /etc/sysconfig/network-scripts/ifcfg-enp1s0f0 /etc/sysconfig/network-scripts/ifcfg-enp1s0f0_bak – делаем бэкап файла
|
1
|
# nano /etc/sysconfig/network-scripts/ifcfg-enp1s0f0 — открываем для редактирования
|
Удалите все содержимое и замените на следующее:
1
2
3
|
DEVICE="enp1s0f0"
ONBOOT="yes"
BRIDGE=br0
|
В вашем случае, имя интерфейса может отличаться (смотрите через команду ip a).
После чего создайте файл:
1
|
# nano /etc/sysconfig/network-scripts/ifcfg-br0
|
с содержимым:
1
2
3
4
5
6
7
8
9
|
DEVICE="br0"
TYPE=BRIDGE
ONBOOT=yes
BOOTPROTO=static
IPADDR="IP_адрес_сервера"
NETMASK="255.255.255.0"
GATEWAY="Основной_шлюз"
DNS1="77.88.8.8"
DNS2="8.8.4.4"
|
Где укажите свои данные: IP-адрес сервера и основной шлюз. После правки конфигурационных файлов сетевых интерфейсов нужно перезапустить сервис:
1
|
# service network restart
|
Если у вас после рестарта network пропал доступ к серверу, попробуйте перезагрузить его. Иногда это требуется для корректной настройки bridge.
Чтобы проверить состояние bridge, используйте команду:
1
|
# brctl show
|
1
2
3
|
bridge name bridge id STP enabled interfaces
br0 8000.ac1f6b945206 no enp1s0f0
virbr0 8000.5254003f23cf yes virbr0-nic
|
Последним шагом нужно настроить перенаправление сетевого трафика:
1
|
# echo -e "net.ipv4.ip_forward=1" >> /etc/sysctl.conf && sysctl -p
|
Теперь перезапустите сервис libvirtd:
1
|
# service libvirtd restart
|
На этом базовая настройка KVM закончена, можно создать виртуальную машину.
KVM: создание виртуальной машины
Перед созданием виртуальной машины, я скачал образ CentOS 8 с официального зеркала в директорию /vz/iso:
1
|
# cd /vz/iso && wget
|
Чтобы создать новую виртуалную машину KVM, выполните:
1
2
3
4
5
6
7
8
9
|
virt-install -n test-centos \
--noautoconsole \
--network=bridge:br0 \
--ram 2048 --arch=x86_64 \
--vcpus=4 --cpu host --check-cpu \
--disk path=/vz/disk/test-centos.img,size=32 \
--cdrom /vz/iso/CentOS-8.1.1911-x86_64-dvd1.iso \
--graphics vnc,listen=IP,password=123456789 \
--os-type linux --os-variant=rhel7 --boot cdrom,hd,menu=on
|
- test-centos — имя ВМ;
- noautoconsole – после создания не нужно подключаться к консоли виртуальной машины автоматически;
- network – тип сети(в нашем случае bridge);
- ram — количество оперативной памяти в ВМ;
- vcpus – количество ядер процессора (настройка vCPU в KVM);
- disk – виртуальный диск, path – путь до диска. size – объем (в дальнейшем его можно расширить/уменьшить);
- сdrom – виртуальный cdrom, в который монтируется iso образ для установки гостевой ОС;
- graphics — параметры подключения к машине с помощью графической консоли. Мы подключаемся через VNC, поэтому в listen указывает IP сервера, где создали ВМ и пароль для подключения в консоли виртуальной машины (password).
Чтобы ВМ загружалась автоматически, выполните:
1
|
# virsh autostart test-centos
|
Подключение к ВМ на KVM через VNC, установка ОС
Чтобы подключиться к виртуальной машине через VNC, нам нужно узнать порт, на котором она работает:
1
|
[root@local vz]# virsh vncdisplay test-centos
|
1
|
IP:0
|
0 означает, что порт для подключения по VNC 5900, если у вас будет другой результат, просто прибавляйте к 5900 цифру, которую выдаст вам команда.
Для подключения по VNC к серверам, я использую утилиту TightVNC. Запустите ее и укажите IP-адрес сервера и VNC порт, который мы узнали ранее (через двойное двоеточие).
Нажмите “Connect”, в открывшемся окне укажите пароль, который задали при создании ВМ. Если все сделали верно, у вас откроется консоль сервера, на которой запущена установка CentOS (или другой ОС, образ которой вы смонтировали).
Если у вас на сервере установлен файервол, откройте сетевые порты для VNC 5900-5910 в firewalld/iptables, этого количества должно хватить. После установки гостевой ОС на виртуальную машину, запустите ВМ с консоли сервера:
Чтобы выключить виртуальную машину KVM, используйте команду:
1
|
# virsh shutdown test-centos
|
Чтобы вывести список всех зарегистрированных виртуальных машин KVM:
1
|
# virsh list --all
|
Если вы предпочитаете графической управление, можете испольховат графическую консоль KVM — virt-manager.
На этом базовая настройка сервера для KVM и создание виртуальной машины окончено. На KVM можно создать неограниченное количество виртуальных машин, все зависит от ресурсов вашего сервера и ваших потребностей.