Установка и настройка гипервизора KVM на CentOS

В данной статье мы рассмотрим установку и базовую настройку гипервизора KVM на сервере под управлением Linux CentOS. Покажем, как создать виртуальную машину в KVM, изменить ее настройки, установить гостевую операционную систему и основные команды управления ВМ.

KVM (Kernel-based Virtual Machine) средство виртуализации в среде Linux, которое использует аппаратную виртуализацию на базе Intel VT или AMD SVM . С помощью KVM вы можете создавать изолированные виртуальные машины с собственным виртуальным аппаратным обеспечением: сетевыми картами, дисками, видеокартами и другими устройствами. На виртуальные машины можно уставить любую ОС (не только Linux).

Установка KVM в CentOS

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

# cat /proc/cpuinfo | egrep "(vmx|svm)"

Если ваш процессор поддерживает технологию VT-x , у вас должен быть примерно такой вывод:

centos проверка поддержки аппаратной виртуализации процессором

Если же команда ничего не выдала, но ваш процессор точно поддерживает виртуализацию, проверьте, вохможно данная опция отключена в BIOS сервера. Ищите параметры “Intel Virtualization Technology” или “SVM MODE” .

На моем сервере поддержка данной технологии включена, поэтому можно приступать к установке необходимых компонентов в CentOS через пакетный менеджер yum /dnf:

# yum install libvirt libvirt-python libguestfs-tools qemu-kvm virt-install –y

  • qemu-kvm – сам гипервизор KVM;
  • libvirt – библиотеки управления вирилизацией;
  • virt-install – команды для управления виртуальными машинами KVM.

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

Теперь нужно добавить сервис libvirtd в автозагрузку и запустить его:

# systemctl enable libvirtd
# systemctl start libvirtd

включить libvirtd в centos linux

Проверьте, загрузились ли модули ядра kvm_intel и kvm :

[root@localhost /]# lsmod | grep kvm

kvm_intel 188688 0_x000D_kvm 636931 1 kvm_intel_x000D_irqbypass 13503 1 kvm

Если у вас ничего не выводится, перезагрузите сервер и проверьте повторно.

Настройка сети в KVM

Теперь создадим каталоги, в которых будут храниться диски виртуальных машин и iso образы:

# mkdir -p /vz/{disk,iso}

Чтобы созданные виртуальные машины имели доступ в интернет, нам нужно настроить сеть через bridge . Для этого потребуется пакет bridge-utils , проверьте установлен ли он в Linux командой:

# rpm -qa | grep bridge-utils

Если нужно, установите его:

# yum install bridge-utils -y

После установки пакетов для KVM, в системе появился сетевой интерфейс virbr0 :

# ip a

настройка bridge интерфейса для виртуальных машин kvm в linux

Чтобы создать сетевой мост( bridge ), нужно настроить файл конфигурации для сетевого интерфейса сервера:

# cp /etc/sysconfig/network-scripts/ifcfg-enp1s0f0 /etc/sysconfig/network-scripts/ifcfg-enp1s0f0_bak – делаем бэкап файла

# nano /etc/sysconfig/network-scripts/ifcfg-enp1s0f0 — открываем для редактирования

Удалите все содержимое и замените на следующее:

DEVICE="enp1s0f0"_x000D_ONBOOT="yes"_x000D_BRIDGE=br0

В вашем случае, имя интерфейса может отличаться (смотрите через команду ip a).

После чего создайте файл:

# nano /etc/sysconfig/network-scripts/ifcfg-br0

с содержимым:

DEVICE="br0"_x000D_TYPE=BRIDGE_x000D_ONBOOT=yes_x000D_BOOTPROTO=static_x000D_IPADDR="IP_адрес_сервера"_x000D_ NETMASK="255.255.255.0"_x000D_GATEWAY="Основной_шлюз"_x000D_DNS1="77.88.8.8"_x000D_DNS2="8.8.4.4"

Где укажите свои данные: IP-адрес сервера и основной шлюз. После правки конфигурационных файлов сетевых интерфейсов нужно перезапустить есервис:

# service network restart

Если у вас после рестарта network пропал доступ к серверу, попробуйте перезагрузить его. Иногда это требуется для корректной настройки bridge.

Чтобы проверить состояние bridge, используйте команду:

# brctl show

bridge name bridge id STP enabled interfaces_x000D_br0 8000.ac1f6b945206 no enp1s0f0_x000D_virbr0 8000.5254003f23cf yes virbr0-nic

Последним шагом нужно настроить перенаправление сетевого трафика:

# echo -e "net.ipv4.ip_forward=1" >> /etc/sysctl.conf && sysctl -p

Теперь перезапустите сервис libvirtd :

# service libvirtd restart

На этом базовая настройка KVM закончена, можно создать виртуальную машину.

KVM: создание виртуальной машины

Перед созданием виртуальной машины, я скачал образ CentOS 8 с официального зеркала в директорию /vz/iso :

# cd /vz/iso && wget https://mirror.yandex.ru/centos/8.1.1911/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso

Чтобы создать новую виртуалную машину KVM, выполните:

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).

Чтобы ВМ загружалась автоматически, выполните:

# virsh autostart test-centos

Подключение к ВМ на KVM через VNC, установка ОС

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

[root@local vz]# virsh vncdisplay test-centos

IP:0

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

Для подключения по VNC к серверам, я использую утилиту TightVNC . Запустите ее и укажите IP-адрес сервера и VNC порт, который мы узнали ранее (через двойное двоеточие).

VNC подключение к консоли виртуальной машины в kvm на centos

Нажмите “ Connect ”, в открывшемся окне укажите пароль, который задали при создании ВМ. Если все сделали верно, у вас откроется консоль сервера, на которой запущена установка CentOS (или другой ОС, образ которой вы смонтировали).

установка гостевой ОС в kvm

Если у вас на сервере установлен файервол, откройте сетевые порты для VNC 5900-5910 в firewalld / iptables , этого количества должно хватить. После установки гостевой ОС на виртуальную машину, запустите ВМ с консоли сервера:

virsh управление виртуальными машинами

Чтобы выключить виртуальную машину KVM, используйте команду:

# virsh shutdown test-centos

Чтобы вывести список всех зарегистрированных виртуальных машин KVM:

# virsh list --all

Подробнее об управлении виртуальными машинами KVM из консоли сервера с помощью virsh, добавление памяти, CPU, дисков и сетевых интерфейсов.

Если вы предпочитаете графической управление, можете испольховат графическую консоль KVM — virt-manager .

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

EnglishRussianUkrainian