libvirt

О Libvirt

О Libvirt
Libvirt - один из самых популярных инструментов управления виртуализацией. Он состоит из API управления и демона, с которым вы можете взаимодействовать со своим стеком виртуализации. Libvirt стремится унифицировать процесс управления для всех различных технологий виртуализации от KVM до VMWare ESX и даже BHyve. Он также может управлять контейнерами LXC и даже некоторыми технологиями паравиртуализации, такими как Xen.

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

Задний план

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

  1. Установите KVM и Libvirt в Debian
  2. Libvirt с Python

Если вы уже знакомы с такими инструментами, как virsh, virt-install, virt-manager, oVirt и т. Д., То вы уже используете libvirt, даже не подозревая об этом. Вышеупомянутые инструменты используют libvirt в бэкэнде и предоставляют удобный интерфейс, будь то командная строка или графический интерфейс.

Архитектура

Libvirt разработан для работы с любым гипервизором и с годами вырос для работы с широким спектром гипервизоров. Демон libvirt предоставляет API, который может использоваться такими приложениями, как virt-manager или virsh (и даже вашими пользовательскими скриптами Python). Запросы пользователей принимаются API. Эти запросы могут быть чем угодно, например, создать гостевую систему KVM или показать мне память, используемую данным контроллером LX, и т. Д.

Затем демон libvirt делегирует запрос соответствующему драйверу гипервизора libvirt. Этот драйвер понимает и реализует все особенности данной технологии виртуализации и выполняет инструкции соответственно.

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

Бассейны и объемы

Виртуальным машинам нужно много места для хранения. Сама технология хранения сильно различается от гипервизора к гипервизору. VMWare использует свой собственный формат vmdk, QEMU любит использовать qcow2, есть также необработанные образы дисков и образы LXC - это тоже отдельная история. Более того, вы хотите сгруппировать вместе все образы дисков ВМ и предоставить им другой носитель, например, сервер NFS, набор данных ZFS или просто каталог. Это позволяет использовать libvirt в различных сценариях использования - от одного домашнего сервера до масштабируемого решения виртуализации корпоративного уровня.

В языке libvirt одно виртуальное устройство хранения, связанное с любой виртуальной машиной, например файл образа qcow2, raw или vmdk виртуальной машины или монтируемого ISO, называется объем. Носитель данных, используемый на хосте для хранения группы связанных томов, известен как бассейн. Вы можете использовать серверы NFS в качестве пула или набора данных ZFS, как упоминалось ранее. Если у вас нет необычного решения для хранения, вы можете просто использовать каталог.

По умолчанию libvirt имеет два разных пула. Сначала это / var / lib / libvirt / images и / var / lib / libvirt / boot. Тома для одной виртуальной машины можно разделить на несколько пулов. Например, я храню все чистые облачные образы и ISO-образы установщика ОС в пуле / var / lib / libvirt / boot, а для отдельных виртуальных машин rootfs устанавливается в файлы образов, хранящиеся в / var / lib / libvirt / images.

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

Конфигурации

Virsh - популярный инструмент для настройки всего: от виртуальной машины, сети виртуальных машин и даже хранилища. Сами файлы конфигурации живут в формате XML. Вы обнаружите, что вводите такие команды, как:

$ virsh dumpxml VM1
$ virsh редактировать ВМ1

И аналогично, есть подкоманды, такие как net-dumpxml и pool-edit, для просмотра или настройки конфигурации пулов, сетей и т. Д. Если вам интересно, где находятся эти файлы конфигурации, вы можете перейти в / etc / libvirt / и найти соответствующий каталог гипервизоров.  Родительский каталог / etc / libvirt / сам по себе содержит множество глобальных конфигураций, таких как драйверы (e.g qemu.conf и lxc.conf), а также их конфигурацию и поведение libvirt по умолчанию.

Чтобы просмотреть конкретную конфигурацию отдельных компонентов, таких как виртуальные машины, пулы и тома, вам необходимо перейти в соответствующие каталоги. Для гостей qemu это / etc / libvirt / qemu

корень @ deb: / etc / libvirt / qemu # ls -al
всего 24
drwxr-xr-x 4 root root 4096 21 апр, 10:39 .
drwxr-xr-x 6 root root 4096 28 апр 17:19…
drwxr-xr-x 2 root root 4096 21 апр, 10:39 автозапуск
drwxr-xr-x 3 root root 4096 14 апр, 13:49 сети
-rw ------- 1 корень корень 3527 20 апр, 19:10 VM1.xml
-rw ------- 1 корень корень 3527 20 апр 19:09 VM2.xml

Каталог автозапуска будет содержать символические ссылки на ВМ1.xml и VM2.xml, если вы настроили автоматический запуск виртуальных машин при загрузке хост-системы ($ virsh autostart VM1).

Точно так же / etc / libvirt / qemu / network содержит конфигурации для сети по умолчанию - гостя qemu. / Etc / libvirt / storage содержит XML-файлы, определяющие пулы хранения.

Заключение

Если вы заинтересованы в настройке собственного хоста виртуализации, хорошим местом для начала будет эта статья, в которой я покажу, как установить гостевые системы QEMU-KVM на хост Debian с помощью libvirt и связанных инструментов.

После этого вы можете начать играть с virsh CLI и просматривать такие объекты, как домен, и управлять ими (libvirt вызывает гостевые виртуальные машины как домен) сети, пулы хранения и тома. Это сделает вас достаточно комфортным с технологией, чтобы вы могли перейти к другим концепциям, таким как снимки состояния и сетевой фильтр. Надеюсь, эта статья станет для вас хорошей отправной точкой.

Добавьте жесты мыши в Windows 10 с помощью этих бесплатных инструментов
В последние годы компьютеры и операционные системы сильно эволюционировали. Было время, когда пользователям приходилось использовать команды для навиг...
Контроль и управление перемещением мыши между несколькими мониторами в Windows 10
Диспетчер мыши с двумя дисплеями позволяет контролировать и настраивать движение мыши между несколькими мониторами, замедляя ее движения возле границы...
WinMouse позволяет настраивать и улучшать движение указателя мыши на ПК с Windows
Если вы хотите улучшить функции указателя мыши по умолчанию, используйте бесплатное ПО WinMouse. Он добавляет дополнительные функции, которые помогут ...