Установка и настройка KVM на CentOS 7

Обновлено и опубликовано Опубликовано:

Тематические термины: KVM виртуализация, Linux, CentOS

Подготовка сервера

Проверяем наличие поддержки со стороны процессора:

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

Если команда ничего не вернет, на сервере отсутствует поддержка виртуализации или она отключена в настройках БИОС. Сам KVM поставить на такой сервер можно, но при попытке ввести команду управления гипервизором мы получим ошибку «WARNING  KVM acceleration not available, using 'qemu'». В таком случае необходимо перезагрузить сервер, войти в БИОС, найти поддержку технологии виртуализации (Intel VT или AMD-V) и включить ее.

Создадим каталоги, в которых будем хранить все, что касается виртуализации (предлагаемые по умолчанию не удобные):

mkdir -p /kvm/{images,iso}

* каталог /kvm/images для виртуальных дисков; /kvm/iso — для iso-образов.

Установка и запуск

Установка выполняется из репозитория следующей командой:

yum install qemu-kvm libvirt virt-install

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

Разрешаем автозапуск:

systemctl enable libvirtd

Запускаем KVM:

systemctl start libvirtd

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

В данной инструкции рассмотрим использование сетевого моста.

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

Устанавливаем пакет для работы с bridge:

yum install bridge-utils

Смотрим список сетевых интерфейсов и их настроек:

ip a

В моем примере были следующие данные:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    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: enp4s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:16:76:04:26:c6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.24/24 brd 192.168.1.255 scope global enp4s0f0
       valid_lft forever preferred_lft forever
    inet6 fe80::216:76ff:fe04:26c6/64 scope link
       valid_lft forever preferred_lft forever
3: enp5s5: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 00:16:76:04:26:c7 brd ff:ff:ff:ff:ff:ff
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
    link/ether 52:54:00:cd:86:98 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: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
    link/ether 52:54:00:cd:86:98 brd ff:ff:ff:ff:ff:ff

* из этого для нас важны enp4s0f0 — реальный сетевой интерфейс с настроенным IP-адресом 192.168.1.24, через который идет подключение сервера к локальной сети (из него мы будем делать мост); 00:16:76:04:26:c6 — mac-адрес реального ethernet адаптера; virbr0 — виртуальный сетевой адаптер.

Редактируем настройки реального адаптера:

vi /etc/sysconfig/network-scripts/ifcfg-enp4s0f0

Приводим его к виду:

ONBOOT=yes
BRIDGE=br0
TYPE=Ethernet
DEVICE=enp4s0f0
BOOTPROTO=none

Создаем интерфейс для сетевого моста:

vi /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.24
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=77.88.8.8

Перезапускаем сетевую службу:

systemctl restart network

Сетевые настройки должны измениться — в моем случае:

2: enp4s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000
    link/ether 00:16:76:04:26:c6 brd ff:ff:ff:ff:ff:ff
3: enp5s5: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 00:16:76:04:26:c7 brd ff:ff:ff:ff:ff:ff
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
    link/ether 52:54:00:cd:86:98 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: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
    link/ether 52:54:00:cd:86:98 brd ff:ff:ff:ff:ff:ff
6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether 00:16:76:04:26:c6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.24/24 brd 192.168.1.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::216:76ff:fe04:26c6/64 scope link
       valid_lft forever preferred_lft forever

Настаиваем перенаправления сетевого трафика:

vi /etc/sysctl.conf

net.ipv4.ip_forward=1

Применяем настройки:

sysctl -p /etc/sysctl.conf

Перезапускаем libvirtd:

systemctl restart libvirtd

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

Смотрим доступные варианты гостевых операционных систем:

virt-install --os-variant list

Для создания первой виртуальной машины вводим следующую команду:

virt-install -n FirstTest \
--noautoconsole \
--network=bridge:br0 \
--ram 1024 --arch=x86_64 \
--vcpus=1 --cpu host --check-cpu \
--disk path=/kvm/images/FirstTest-disk1.img,size=16 \
--cdrom /kvm/iso/CentOS-7-x86_64-Minimal-1611.iso \
--graphics vnc,listen=0.0.0.0,password=my_password \
--os-type linux --os-variant=rhel7 --boot cdrom,hd,menu=on

* где:

  • FirstTest — имя создаваемой машины;
  • noautoconsole — после создания не подключается автоматически к консоли виртуальной машины;
  • network — тип сети (в нашем примере сетевой мост);
  • ram — объем оперативной памяти, который будет выделен;
  • vcpus — количество виртуальных процессоров;
  • disk — виртуальный диск: path — путь до диска; size — его объем;
  • cdrom — виртуальный привод с образом системы;
  • graphics — параметры подключения к виртуальной машины с помощью графической консоли (в данном примере используем vnc); listen — на какой адресе принимает запросы vnc (в нашем примере на всех); password — пароль для подключения при помощи vnc;
  • os-variant — гостевая операционная система (весь список мы получали командой virt-install --os-variant list, в данном примере устанавливаем Reв Hat 7 / CentOS 7).

Разрешаем автостарт для созданной ВМ:

virsh autostart FirstTest

Подключение к виртуальной машине

Для дальнейшей установки операционной системы скачиваем VNC-клиент на компьютер администратора, например, TightVNC и устанавливаем его.

На сервере смотрим, на каком порту слушает VNC созданной машины:

virsh vncdisplay FirstTest

в моем случае было:

:0

Это значит, что нужно к 5900 прибавить 0. Если результат команды будет :1 — 5900 + 1 = 5901 и так далее.

Открываем порт на брандмауэре:

firewall-cmd --permanent --add-port=5900-5905/tcp

* в данном примере добавлено сразу 6 tcp-портов от 5900 до 5905.

Запускаем установленный TightVNC Viewer, в открывшемся окне вводим IP-адрес сервера KVM и порт, на котором слушает наша ВМ (в данном примере, 5900):

Пример подключения к виртуальной машине с помощью TightVNC

Нажимаем Connect. Программа запросит пароль — вводим тот, что указали при создании ВМ, (в данном примере, my_password). Мы подключимся к виртуальной машине, как будто, к ней подключен монитор или удаленная консоль KVM.

Базовые команды управления ВМ

Получить список созданных машин:

virsh list --all

Включить виртуальную машину:

virsh start FirstTest

* где FirstTest — имя созданной машины.

Выключить:

virsh shutdown FirstTest

Управление через веб-интерфейс

Существуют различные веб-интерфейсы для управления гипервизором KVM. В данной инструкции мы рассмотрим oVirt.

Для его установки вводим команды:

yum install http://resources.ovirt.org/pub/yum-repo/ovirt-release41.rpm

yum install ovirt-engine

После разворачиваем и настраиваем портал:

engine-setup

* после запуска команды система задаст ряд вопросов, на все, кроме ввода пароля, можно ответить по умолчанию (просто нажать Enter).

После окончания установки в браузере вводим https://kvm/ovirt-engine/sso/, где kvm — имя сервера. В открывшемся окне вводим логин admin и пароль, который создали при выполнении команды engine-setup. После успешного входа можно управлять виртуальными машинами через веб-интерфейс.

# Сервера # Виртуализация # CentOS
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет