Настройка гипервизора Linux (Libvirt / QEMU / KVM)

Настройкагипервизораlinuxlibvirtqemukvm

Одна из лучших особенностей Linux – это то, насколько легко можно собрать несколько инструментов и получить отличную систему. Это особенно актуально для подготовки виртуальных машин. Возможно, это одна из ключевых вещей, которая удерживает меня на рабочем столе Linux в моей повседневной работе! Однако эти инструменты также можно использовать для превращения старого ноутбука или настольного компьютера в вопиющий гипервизор. Таким образом, вы можете смеяться над всеми своими друзьями их $ 16 , 05 инвестиции в домашнюю лабораторию, пока вы получить все то же самое добро на обычном оборудовании :).

Эта установка это то, что я использую изо дня в день, чтобы создавать среды Kubernetes простым и управляемым способом, без лишних абстракций. Если вас интересует понимание и запуск виртуальных машин на хостах Linux, этот пост для вас!

KVM, ESXi, Hyper-V, qemu, xen … в чем дело? У вас не мало вариантов в этом пространстве. Мне нравится думать, что мой стек довольно минимален, и я могу сделать все, что мне нужно. Это следующие инструменты.

основные системные инструменты:

Это ключевые инструменты / услуги / функции, которые делают возможным витализацию.

  • kvm :
    • Виртуальная машина на основе ядра
    • Модуль ядра, обрабатывающий Связь с ЦП и памятью
  • qemu :
    • Быстрый эмулятор
    • Эмулирует многие аппаратные ресурсы, такие как диск, сеть и USB. Хотя он может эмулировать ЦП, вы будете подвержены воздействию qemu / kvm, который делегирует подобные проблемы KVM (который HVM ).
    • Связь памяти между qemu / kvm немного сложнее но можно прочитать здесь .
  • libvirt :
    • Предоставляет согласованный API поверх многих технологий виртуализации. API-интерфейсы используются клиентскими инструментами для подготовки виртуальных машин и управления ими.

Инструменты пользователя / клиента:

С этими инструментами могут взаимодействовать пользователи / службы.

  • virsh
    • Инструменты командной строки для взаимодействия с libvirt
  • virt-manager
    • Графический интерфейс для управления KVM, qemu / kvm, xen и lxc.
    • Содержит VNC и СПЕЦИЯ клиент для прямого графического доступа к виртуальным машинам.
    • Альтернатива графического интерфейса virsh , хотя и менее способный.
  • virt-install
    • Вспомогательные инструменты для создания новых гостевых виртуальных машин.
    • Часть вирт- менеджер проект.
  • virt-viewer
    • Пользовательский интерфейс для взаимодействия с виртуальными машинами через VNC / SPICE.
    • Часть virt-manager проект.

вспомогательные системные инструменты:

Эти инструменты используются для поддержки перечисленных выше системных инструментов.

  • dnsmasq : легкий DNS / DHCP-сервер. В основном используется для выделения IP-адресов виртуальным машинам.
  • dhclient : используется для разрешения DHCP; вероятно, уже в вашем дистрибутиве
  • dmidecode : печатает таблицу SMBIOS компьютеров в читаемом формате. Необязательная зависимость, в зависимости от вашего менеджера пакетов.
  • ebtables : используется для настройки сети NAT хоста
  • мост -utils : используется для простого создания мостовых интерфейсов. (инструмент [устарел с } ( https://lwn.net/Articles/ 901517), , но все еще используется)
  • openbsd-netcat : включает удаленное управление через SSH

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

Как вы устанавливаете эти инструменты, зависит от вашего менеджера пакетов. Моя ОС гипервизора, как правило, Arch, следующее установит вышеуказанное.

  pacman -Sy --needed  qemu  dhclient  openbsd-netcat  virt-viewer  libvirt  dnsmasq  dmidecode  ebtables  virt-install  virt-manager  bridge-utils  

Разрешения

Основная сложность заключается в правильном получении разрешений. Необходимо настроить несколько ключевых элементов, чтобы вы могли взаимодействовать с системой qemu: /// . Это позволяет виртуальным машинам запускаться от имени пользователя root, что обычно , что вам нужно. Это также значение по умолчанию, используемое virt-manager.

Ознакомьтесь с этим сообщением в блоге Колина Робинсона, в котором различия.

virsh , будет использовать qemu: /// session по умолчанию, что означает, что вызовы CLI не выполняются как sudo будет смотреть на другого пользователя. Чтобы все клиентские утилиты по умолчанию были qemu: /// system , добавьте следующую конфигурацию в ваш . config каталог.

  sudo cp -rv /etc/libvirt/libvirt.conf ~ / .config / libvirt / &&  sudo chown $ {YOURUSER}: $ {YOURGROUP} ~ / .config / libvirt / libvirt.conf  

Заменить $ {YOURUSER} и $ {YOURGROUP} выше.

Когда используешь qemu: /// system , доступ определяется polkit . Здесь у вас есть много вариантов. Поскольку фиксация

e 703776 e 94979 группа libvirt включен, который будет иметь доступ к libvirtd. Теперь у вас есть следующие возможности.

  • Добавить пользователя в polkit группа.

  • Будьте частью группа администраторов . В Arch Linux колесо является одной из этих групп, будучи частью колеса , вам будет предложено ввести sudo пароль для взаимодействия с virt-manager или virsh .

  • Добавьте вашу группу в конфигурацию polkit. В следующем примере показано добавление колеса в polkit . Вам не будет предложено ввести пароль при взаимодействии с virt-manager или virsh .

    • редактировать / etc / polkit-1 / rules.d / 55 - libvirt.rules

        / Разрешить пользователям в группе wheel управлять демоном libvirt без аутентификации / polkit.addRule (function (action, subject) {if (action. id == "org.libvirt.unix.manage" && subject.isInGroup ("wheel")) {return polkit.Result.YES;}});   

    Это подход, который я использую.

В зависимости от выбранного вами варианта может потребоваться повторный вход в систему или, по крайней мере, перезапуск libvirtd ( см. ниже).

Настройте и запустите libvirtd

Чтобы начать взаимодействие с qemu / kvm, вам необходимо запустить демон libvirt.

sudo systemctl start libvirtd

 

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

  sudo systemctl enable libvirtd  
 

Это то, что я делаю на выделенных «серверах». Я не включаю libvirtd на моих настольных компьютерах.

libvirt хранит свои файлы в / var / lib / libvirt / . Внутри есть несколько каталогов.

drwxr-xr-x 2 root root 9015 4 апр 10: 10 boot drwxr-xr-x 2 root root 94979 6 мая : dnsmasq drwxr-xr-x 2 root root 9015 4 апр 10: 10 файловые системы drwxr-xr-x 2 корень корень 9015 6 мая 16: 055 образы drwxr-xr-x 3 root root 94979 6 мая 11: 64 lockd drwxr-xr-x 2 root root 9015 4 апр 10: 09 lxc drwxr-xr-x 2 root root 9015 4 апр. 10: 10 сеть drwxr-xr-x 18 никто не kvm 94979 6 мая 19: 19 qemu drwxr-xr-x 2 root корень 4096 4 апр. 10: 09 swtpm

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

qcow2 ).

Обычно я храню ISO локально, если только в моей сети не настроен поток PXE. Для хранения ISO-образов вы можете создать isos в каталоге / var / lib / libvirtd .

  mkdir / var / lib / libvirt / isos  

Создайте виртуальную машину с помощью virt-manager

virt-manager предоставляет более простой способ создать новую виртуальную машину. В этом разделе вы создадите новую виртуальную машину из установочного ISO.

  • Загрузите установочный ISO-образ в предпочитаемый каталог.

    sudo wget -P / var / lib / libvirt / isos https://mirrors.mit.edu/ubuntu-releases/50. 05. 4 / ubuntu - 52. 10. 4-live -server-amd 92. iso

      

    Это каталог, созданный в последнем раздел.

  • Запуск virt-manager .

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

    1. Выберите локальный установочный носитель.

    2. Найдите ISO.

    3. Добавить новый пул.

    4. Назовите пул isos .

    5. Установите целевой путь на / var / lib / libvirt / iso s .

    6. Нажмите Готово.

    7. Выберите ISO-образ и нажмите «Выбрать объем».

    8. Пройдите по подсказкам, выбрав нужные системные ресурсы.

    9. Вам будет предложено создать сеть по умолчанию или выбрать сеть по умолчанию (NAT).

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

    10. Нажмите Готово.

    11. Ждать virt-viewer , чтобы открыть всплывающее окно и пройти процесс установки.

    12. После установки вы можете ssh гостю на основе назначенного ему IP-адреса.

    13. Создайте виртуальную машину с помощью интерфейса командной строки

  • После настройки в предыдущем разделе вы можете запустить ту же процедуру установки через командную строку. Это можно сделать напрямую с помощью qemu, но чтобы поддерживать взаимодействие с virt-manager на уровне, я покажу virt-install CLI.

    Эквивалент приведенному выше будет быть:

     virt-install  --name ubuntu 2016  --баран 2048  - путь к диску = / var / lib / libvirt / images / u 52. qcow2, size = 8  --vcpus 2  --os-type linux  --os-variant generic  --console pty, target_type = serial  --cdrom / var / lib / libvirt / isos / ubuntu - 52. 05 .4-live-server-amd 358. iso  

    Клонировать виртуальную машину

    Клонирование виртуальной машины может быть таким простым, как репликация файловой системы. Аналогично virt-install есть инструмент, ориентированный на клонирование виртуальных машин, который называется virt-clone . Этот инструмент выполняет клонирование через libvirt, обеспечивая копирование образа диска и установку нового гостя с тем же виртуальным оборудованием. Часто я создаю «базовый образ» и использую virt-clone , чтобы искоренить многие его экземпляры. Вы можете запустить клон следующим образом.

    virt-clone - оригинальный ubuntu 19. 09 --name cloned-ubuntu --file /var/lib/libvirt/images/cu.qcow2

    значение для - исходное можно найти, просмотрев существующие имена виртуальных машин в virt-manager или запустив список virsh - -все.

    Leave a comment

    Your email address will not be published. Required fields are marked *