KVM (Kernel-based Virtual Machine) — это инструмент с открытым исходным кодом, использующийся для виртуализации. Он отличается высоким уровнем интеграции с операционными системами семейства GNU / Linux. Данное приложение представляет собой загружаемый модуль ядра, который модифицирует вашу ОС в гипервизор Типа 1 (bare-metal). С помощью него можно создавать платформу для запуска виртуальных машин (ВМ).
Каким образом можно установить KVM на системы под управлением дистрибутивов Fedora / CentOS / RHEL 8? Давайте попробуем разобраться вместе!
Содержание:
- Как работает KVM
- Установка KVM на Fedora / CentOS / RHEL 8
- Настройка Cockpit
- Установка модуля виртуализации KVM на CentOS 8
- Настройка сетевого моста в Cockpit
- Создание виртуальных машин и управление ими через Cockpit
- Подключение к ОС виртуальной машины с помощью SSH
- Выводы
Как работает KVM
Для начала поговорим про основные принципы, на базе которых реализована KVM. Начнем с того, что все виртуальные системы в ней обособлены как отдельные процессы Linux. То есть все они обладают своим виртуальным аппаратным обеспечением:
- процессором;
- оперативной памятью;
- сетевой картой;
- жестким диском.
Также каждая виртуальная машина управляется ядром.
С помощью KVM можно реализовать вложенную виртуализацию, запуская виртуальные системы в уже работающих виртуальных системах. Это приложение может эмулировать различное аппаратное обеспечение архитектуры x86 и поддерживает средства аппаратной виртуализации — Intel VT и AMD-V. В результате чего она обладает рядом следующих преимуществ:
- эффективная изоляция виртуальных систем и повышенный уровень безопасности;
- использование SELinux (Security-Enhanced Linux) с технологией sVirt, обеспечивающей безопасную виртуализацию;
- наследование функции управления памятью ядра;
- миграция в автономном режиме в реальном времени (передачи активной виртуальной системы между разными физическими хостами).
Все это и многое другое делает KVM стандартным инструментом многих системных администраторов и других IT-специалистов по всему миру.
Установка KVM на Fedora / CentOS / RHEL 8
Сперва следует проверить, поддерживает ли Ваше аппаратное обеспечение технологию виртуализации. Для этого введите в командную строку Linux следующие команды:
Теперь следует убедиться, что модули KVM уже загружены в ядро Вашей операционной системы. Для этого вводим следующую команду:
Пример вывода (тестовая платформа на базе Intel):
Мы решили дополнительно использовать веб-интерфейс Cockpit, с помощью которого будем создавать виртуальные системы GNU / Linux и заниматься их администрированием.
Настройка Cockpit
Cockpit — это удобный и простой в освоении инструмент, предназначенный для мониторинга и администрирования серверов под управлением Linux через веб-браузер. С его помощью можно легко выполнять следующие виды задач:
- мониторинг трафика и настройка сетевых подключений;
- управление дисковым пространством;
- создание виртуальных систем;
- чтение системных логов.
Авторизация в веб-интерфейсе этого инструмента происходит с использованием данных локальной учетной записи Вашей системы. Права доступа, которыми обладает выбранная учетная запись, определяют доступные Cockpit возможности по управлению системой. То есть для выполнения большинства операций нужно авторизоваться с помощью данных аккаунта, имеющего права суперпользователя (sudo).
Системы под управлением дистрибутивов CentOS 8 и RHEL 8 уже содержат установленный и активированный инструмент Cockpit. Если приложение отсутствует, его поможет установить простая команда dnf
.
Также для работы с виртуальными системами на основе Libvirt следует установить соответствующее расширение cockpit-machines. Для этого введите в командную строку следующую команду:
Далее нужно дождаться установки указанного пакета, после чего можно активировать сокет Cockpit:
Также важно настроить его автозапуск после включения системы:
Теперь следует проверить статус сокета, чтобы убедиться в его работоспособности. Для этого введите в консоль следующую команду:
Далее добавьте службу Cockpit в исключения Вашего брандмауэра и перезагрузите его. Для этого введите команду firewall-cmd
:
Теперь запустите свой веб-браузер и введите в адресную строку следующий URL-адрес:
Также можно попробовать такой URL:
В результате у Вас должен открыться веб-интерфейс Cockpit. Стоит отметить, что данный инструмент использует самозаверенный сертификат SSL для включения HTTPS. То есть, для доступа к нему Вам нужно в ответ на предупреждение от браузера подтвердить свои действия. В результате Вы должны увидеть окно авторизации, куда можно ввести данные вашей учетной записи Linux.
Если Вы правильно ввели свои данные и правильно выполнили предыдущие шаги — откроется веб-консоль приложения.
Установка модуля виртуализации KVM на CentOS 8
Следующий шаг — установка модуля виртуализации. Для этого воспользуемся следующей командой:
Также нужно установить некоторые пакеты. Например, virt-install позволит Вам легко создавать виртуальные системы через интерфейс командной строки. А пакет virt-viewer — позволяет осуществлять мониторинг существующих виртуальных машин. Для их установки введите:
Стоит проверить, сконфигурирован ли хост для активации драйверов гипервизора Libvirt. Для этого предназначена команда virt-host-validate
:
Осталось запустить демон Libvirt при помощи команды:
Его обязательно нужно добавить в список приложений, автоматически запускающихся при включении системы:
Рекомендуем дополнительно убедиться в работоспособности Libvirt, проверив его статус:
Настройка сетевого моста в Cockpit
Теперь поговорим о том, как создать виртуальный сетевой коммутатор — сетевой мост. Он нужен для того, чтобы подключить виртуальные машины к той же сети, в которой работает хост.
После запуска демона Libvirt, в качестве сетевого интерфейса по умолчанию активируется virbr0. Это виртуальный сетевой коммутатор, работающий в NAT-режиме.
Специально для этой статьи мы создадим сетевой интерфейс в режиме моста с именем br0. Он обеспечит присутствие виртуальных систем в сети, к которой подключен хост-компьютер.
Сперва зайдем в веб-интерфейс Cockpit и там выберем пункт панели инструментов «Сети» (Networking). После этого выберем подпункт «Добавить мост» (Add Bridge).
Далее Вы должны увидеть всплывающее окно. В нем нужно указать следующие данные:
- имя моста;
- подчиненные устройства моста или портовые устройства (к примеру — enp2s0, интерфейс Ethernet).
После этого нажмем кнопку «Принять» (Apply).
В списке доступных интерфейсов должен появиться Ваш мост. Спустя пару секунд интерфейс Ethernet будет деактивирован.
Создание виртуальных машин и управление ими через Cockpit
Для начала вернитесь в панель инструментов Cockpit. Там выберите пункт «Виртуальные машины» (Virtual Machines) — Вы должны увидеть подпункт «Создать ВМ» (Create VM).
Снова появится всплывающее окно, куда вводим следующие параметры новой виртуальной машины:
- подключение (Connection);
- имя (Name, например — ubuntu18.04);
- тип источника для установки (Installation Source Type, в тестовой системе мы сохранили образы ISO в пуле хранения —
/var/lib/libvirt/images/
); - источник для установки (Installation Source);
- хранилище (Storage);
- размер (Size);
- память (Memory).
Важно: данные о поставщике операционной системы и о самой ОС автоматически заполнялся после указания источника для установки.
Также обязательно поставьте отметку в чекбоксе напротив опции немедленного запуска виртуальной машины. После этого можно нажать кнопку «Создать» (Create).
В результате Ваша виртуальная машина должна автоматически запуститься с использованием указанного ISO-образа. После этого можно продолжить установку ОС (например, Ubuntu 18.04).
Нажатие кнопки «Сетевые интерфейсы» (Network Interfaces) на панели управления виртуальной машиной покажет Вам, что в качестве источника используется созданный ранее мост.
Во время настройки сетевого интерфейса Вы увидите, как Ethernet виртуальной системы получает IP от DHCP-сервера сети, к которой подключена хост-система.
Важно: Вам следует установить пакет OpenSSH, чтобы иметь возможность подключаться через SSH к виртуальной операционной системе с любого компьютера, подключенного к хост-сети.
Как только операционная система установится, перезагрузите свою виртуальную машину. После этого выберите не панели инструментов пункт «Диски» (Disks) и отключите устройство cdrom.
Далее нажмите кнопку «Запуск» (Run), чтобы активировать виртуальную машину.
Теперь с помощью пункта панели инструментов «Консоли» (Consoles) можно войти в операционную систему с использованием той учетной записи, которую Вы создали во время ее установки.
Подключение к ОС виртуальной машины с помощью SSH
Попробуем с помощью SSH подключиться к установленной на виртуальную машину операционной системе из нашей хост-сети. Для этого вводим в командную строку следующий набор команд, не забыв заменить 10.42.0.197 на IP Вашей гостевой системы:
На панели управления виртуальной машиной есть дополнительные кнопки, позволяющие ее:
- выключить;
- остановить;
- перезапустить;
- удалить.
Создадим файл, чтобы воспользоваться хуками для проброса портов на нашу виртуальную машину. Для этого воспользуемся следующей командой:
В открывшемся текстовом редакторе нам нужно будет ввести текст:
Выводы
Как видите, совсем не трудно установить на системы под управлением дистрибутивов Fedora / CentOS / RHEL 8 KVM с пакетами виртуализации. Теперь Вы знаете, что каждый может научиться создавать и администрировать виртуальные системы с помощью простого веб-интерфейса Cockpit.
Спасибо за время, которое вы уделили прочтению статьи о том, как установить KVM!
Если возникли вопросы — задавайте их в комментариях!
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
6 комментариев. Оставить новый
Добрый день! Вы приложили скрипт, который лежит по пути /etc/libvirt/hooks/qemu
Вопрос такой, скажите, пожалуйста, как его использовать если у него несколько гостевых машин? Я предполагаю, что нужно их плодить под каждую гостивую машину?
Поддерживаю вопрос. Хотелось бы уточнить, что нужно сделать, чтобы корректно настроить проброс портов на несколько гостевых машин.
И второй вопрос, как настроить туда грамотный ssh доступ? Нужно делать проброс 24-ого порта?
Просто гипотетически у меня будет 4 машины, все приходят на 1 ip, а как дальше их разделать если все приходит на 80-ый порт? Заранее спасибо за ответы
Сергей, в этом-же файле, ниже, прописывайте правила для каждой гостевой машины.
Доброго времени суток
я по вашей статье начал поднимать КВМ и дошел до момента когда нужно МВ ставить
и вот там у меня ошибка выходит «error: failed to get emulator capabilities error: недопустимый аргумент: не найдено ни одного эмулятора, способного работать с архитектурой «x86_64» ERROR Host does not support any virtualization options» в биосе в разделе процессор включена виртуализация
но все ровно не могу подключить
за ранее благодарен за помощь
Добрый день. Все установил по инструкции (только ОС Centos 7). В веб-интерфейсе отсутствуют кнопки редактирования сетевой карты и жесткого диска, в чем может быть причина?
В CentOS 7 используется старая версия ovirt, как вариант установить отдельно https://www.ovirt.org/release/ но оптимальные мигрировать на AlmaLinux/RockLinux 8.