Как установить KVM на Fedora / CentOS / RHEL 8

cockpit + kvm

KVM (Kernel-based Virtual Machine) — это инструмент с открытым исходным кодом, использующийся для виртуализации. Он отличается высоким уровнем интеграции с операционными системами семейства GNU / Linux. Данное приложение представляет собой загружаемый модуль ядра, который модифицирует вашу ОС в гипервизор Типа 1 (bare-metal). С помощью него можно создавать платформу для запуска виртуальных машин (ВМ).

Как работает KVM

Для начала поговорим про основные принципы, на базе которых реализована KVM. Начнем с того, что все виртуальные системы в ней обособлены как отдельные процессы Linux. То есть все они обладают своим виртуальным аппаратным обеспечением:

  • процессором;
  • оперативной памятью;
  • сетевой картой;
  • жестким диском.

Также каждая виртуальная машина управляется ядром.

С помощью KVM можно реализовать вложенную виртуализацию, запуская виртуальные системы в уже работающих виртуальных системах. Это приложение может эмулировать различное аппаратное обеспечение архитектуры x86 и поддерживает средства аппаратной виртуализации — Intel VT и AMD-V. В результате чего она обладает рядом следующих преимуществ:

  • эффективная изоляция виртуальных систем и повышенный уровень безопасности;
  • использование SELinux (Security-Enhanced Linux) с технологией sVirt, обеспечивающей безопасную виртуализацию;
  • наследование функции управления памятью ядра;
  • миграция в автономном режиме в реальном времени (передачи активной виртуальной системы между разными физическими хостами).

Все это и многое другое делает KVM стандартным инструментом многих системных администраторов и других IT-специалистов по всему миру.

Установка KVM на Fedora / CentOS / RHEL 8

Сперва следует проверить, поддерживает ли Ваше аппаратное обеспечение технологию виртуализации. Для этого введите в командную строку Linux следующие команды:

# grep -e 'vmx' /proc/cpuinfo #Intel systems
# grep -e 'svm' /proc/cpuinfo #AMD systems

Теперь следует убедиться, что модули KVM уже загружены в ядро Вашей операционной системы. Для этого вводим следующую команду:

# lsmod | grep kvm

Пример вывода (тестовая платформа на базе Intel):

Мы решили дополнительно использовать веб-интерфейс Cockpit, с помощью которого будем создавать виртуальные системы GNU / Linux и заниматься их администрированием.

Настройка Cockpit

Cockpit — это удобный и простой в освоении инструмент, предназначенный для мониторинга и администрирования серверов под управлением Linux через веб-браузер. С его помощью можно легко выполнять следующие виды задач:

  • мониторинг трафика и настройка сетевых подключений;
  • управление дисковым пространством;
  • создание виртуальных систем;
  • чтение системных логов.

Авторизация в веб-интерфейсе этого инструмента происходит с использованием данных локальной учетной записи Вашей системы. Права доступа, которыми обладает выбранная учетная запись, определяют доступные Cockpit возможности по управлению системой. То есть для выполнения большинства операций нужно авторизоваться с помощью данных аккаунта, имеющего права суперпользователя (sudo).

Системы под управлением дистрибутивов CentOS 8 и RHEL 8 уже содержат установленный и активированный инструмент Cockpit. Если приложение отсутствует, его поможет установить простая команда dnf.

Также для работы с виртуальными системами на основе Libvirt следует установить соответствующее расширение cockpit-machines. Для этого введите в командную строку следующую команду:

# dnf install cockpit cockpit-machines

Далее нужно дождаться установки указанного пакета, после чего можно активировать сокет Cockpit:

# systemctl start cockpit.socket

Также важно настроить его автозапуск после включения системы:

# systemctl enable cockpit.socket

Теперь следует проверить статус сокета, чтобы убедиться в его работоспособности. Для этого введите в консоль следующую команду:

# systemctl status cockpit.socket

Далее добавьте службу Cockpit в исключения Вашего брандмауэра и перезагрузите его. Для этого введите команду firewall-cmd:

# firewall-cmd --add-service=cockpit --permanent
# firewall-cmd --reload

Теперь запустите свой веб-браузер и введите в адресную строку следующий URL-адрес:

https://ваш_ip_адрес:9090/

В результате у Вас должен открыться веб-интерфейс Cockpit. Стоит отметить, что данный инструмент использует самозаверенный сертификат SSL для включения HTTPS. То есть, для доступа к нему Вам нужно в ответ на предупреждение от браузера подтвердить свои действия. В результате Вы должны увидеть окно авторизации, куда можно ввести данные вашей учетной записи Linux.

Если Вы правильно ввели свои данные и правильно выполнили предыдущие шаги — откроется веб-консоль приложения.

Установка модуля виртуализации KVM на CentOS 8

Следующий шаг — установка модуля виртуализации. Для этого воспользуемся следующей командой:

# dnf module install virt

Также нужно установить некоторые пакеты. Например, virt-install позволит Вам легко создавать виртуальные системы через интерфейс командной строки. А пакет virt-viewer — позволяет осуществлять мониторинг существующих виртуальных машин. Для их установки введите:

# dnf install virt-install virt-viewer

Стоит проверить, сконфигурирован ли хост для активации драйверов гипервизора Libvirt. Для этого предназначена команда virt-host-validate:

# virt-host-validate

Осталось запустить демон Libvirt при помощи команды:

# systemctl start libvirtd.service

Его обязательно нужно добавить в список приложений, автоматически запускающихся при включении системы:

# systemctl enable libvirtd.service

Рекомендуем дополнительно убедиться в работоспособности Libvirt, проверив его статус:

# systemctl status libvirtd.service

Настройка сетевого моста в Cockpit

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

После запуска демона Libvirt, в качестве сетевого интерфейса по умолчанию активируется virbr0. Это виртуальный сетевой коммутатор, работающий в NAT-режиме.

Специально для этой статьи мы создадим сетевой интерфейс в режиме моста с именем bridge0. Он обеспечит присутствие виртуальных систем в сети, к которой подключен хост-компьютер.

Сперва зайдем в веб-интерфейс Cockpit и там выберем пункт панели инструментов «Сети» (Networking). После этого выберем подпункт «Добавить мост» (Add Bridge).

Далее Вы должны увидеть всплывающее окно. В нем нужно указать следующие данные:

  • имя моста;
  • подчиненные устройства моста или портовые устройства (к примеру — enp4s0f0, интерфейс Ethernet).

После этого нажмем кнопку «Принять» (Apply).

В списке доступных интерфейсов должен появиться Ваш мост. Спустя пару секунд интерфейс Ethernet будет деактивирован.

Создание виртуальных машин и управление ими через Cockpit

Для начала вернитесь в панель инструментов Cockpit. Там выберите пункт «Виртуальные машины» (Virtual Machines) — Вы должны увидеть подпункт «Создать ВМ» (Create VM).

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

  • Имя (Name, например – CentOS_8_DB);
  • Тип установки (указываем с ISO образа);
  • Источник установки (указываем путь где лежит ISO образ);
  • Операционная система (Определяется автоматически)
  • Хранилище (я выбираю Create new raw volume);
  • Размер хранилища (указываем необходимое значение под виртуальную машину);
  • память (указываем необходимое значение ).

Важно: данные о поставщике операционной системы и о самой ОС автоматически заполнялся после указания источника для установки.

Также, очень важно, если у вас на виртуалке будет реальный IP, то выберите пункт Create and edit чтобы до запуска установки, настроить сеть!

В результате Ваша виртуальная машина должна автоматически запуститься с использованием указанного ISO-образа. После этого можно продолжить установку ОС.

Нажатие кнопки «Сетевые интерфейсы» (Network Interfaces) на панели управления виртуальной машиной покажет Вам, что в качестве источника используется созданный ранее мост.

Если вы хотите, чтобы ваша машина получала IP автоматически перейдите по ссылке сеть

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

  • Имя (Название виртуальной сети)
  • Режим пересылки (выбираем NAT)
  • Устройство (выбираем ранее созданный мост bridge0)
  • Настройка IP (выбираем только IPv4 или оба IPv4 и IPv6)
  • IPv4 (указываем IP адрес виртуальной машины)
  • Маска или длина префекса (указываем 24 что равнозначно 255.255.255.0)
  • Ставим галку Задать диапазон DHCP и указываем диапазон выделяемых IP адресов как на рисунке

В настройках сети виртуальной машины указываем следующее

  • Тип интерфейса (Virtual network)
  • Источник (указываем название созданной виртуальной сети IN)
  • Модель (выбираем virtio)

В принципе все, можно приступать к установке и настройке

Если же у вас предусмотрен внешний IP адрес для каждой виртуальной машины, то необходимо следующее. В настройках сетевого интерфейса

  • Тип интерфейса (Bridge to LAN)
  • Источник (bridge0)
  • Модель (выбираем virtio)

А далее при установке ОС необходимо вручную указать IP адрес, маску и шлюз. Для простоты в CentOS есть замечательная утилита NMTUI.

Защитите ваш Cockpit

Cockpit работает на популярном порту 9090 и поэтому лучше сменить порт в целях безопасности. Создадим директорию в которой будет храниться файл listen.conf

mkdir -p /etc/systemd/system/cockpit.socket.d/
mcedit /etc/systemd/system/cockpit.socket.d/listen.conf

И добавляем в него следующее содержимое

[Socket]
ListenStream=
ListenStream=4433

где 4433 наш новый порт, сохраняем и выходим, и наконец, перезапустите службы, чтобы изменения вступили в силу:

systemctl daemon-reload
systemctl restart cockpit.socket

Не забудьте внести изменения в ваш firewall, чтобы вы смогли войти

firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="ваш_ip_адрес" port port="4433" protocol="tcp" accept'
firewall-cmd --reload

Micro
Author: Micro

///

Поделиться в социальных сетях
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии