О 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/, а для отдельных виртуальных машин rootfs устанавливается в файлы образов, хранящиеся в/var/lib/libvirt/images.

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

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

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

$ virsh dumpxml VM1
$ virsh edit VM1

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

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

root @ 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 root root 3527 20 апреля 19:10 VM1.xml
-rw ——- 1 root root 3527 20 апреля 19:09 VM2.xml

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

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

Заключение

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

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

Оцените статью
nanomode.ru
Добавить комментарий