Автор Тема: Управление виртуальными машинами с по мощью virsh  (Прочитано 3009 раз)

Оффлайн SUNNY

  • Участник
  • *
  • Сообщений: 61
Здравствуйте! Изучаю системы виртуализации. Хочу создать виртуальную машину в QEMU-KVM. Задача: удалённо настроить гипервизор, создать и запустить виртуальную машину, потом удалённо подключиться к ней через VNC/RDP и также удалённо установить гостевую ОС.
Установил пакеты: dbus kernel-modules-kvm-std-def qemu-system libvirt-docs libvirt-kvm libvirt-qemu libvirt-daemon-driver-qemu libvirt-client virt-install. Перезагрузился. Теперь пытаюсь действовать по инструкции http://www.altlinux.org/KVM. Сначала хочу проверить как работает средство управления виртуальными машинами virsh
iskatel@iskatel-dsk:~$ virsh -c qemu:///system list --all
ошибка: не удалось подключиться к гипервизору
ошибка: нет действительного соединения
ошибка: authentication failed: polkit: polkit\56retains_authorization_after_challenge=1
Authorization requires authentication but no agent is available.
Какой настройки не хватает?

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 151
    • Домашняя страница
Не настройки, а не запущены службы kvm и libvirtd
Андрей Черепанов (cas@)

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
Не настройки, а не запущены службы kvm и libvirtd

chkconfig qemu-kvm on
service qemu-kvm start
chkconfig libvirtd on
service libvirtd start

Оффлайн SUNNY

  • Участник
  • *
  • Сообщений: 61
Точно, были не запущены.
Ещё вопрос, как сделать чтобы консольные утилиты virsh и virt-install работали не от рута?

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
Точно, были не запущены.
Ещё вопрос, как сделать чтобы консольные утилиты virsh и virt-install работали не от рута?

Добавить пользователя в группу vmusers и перелогиниться
Делаю вывод из таких соображений:

cat /etc/udev/rules.d/90-qemu-kvm.rules
KERNEL=="kvm", MODE="0660", GROUP="vmusers"
« Последнее редактирование: 15.06.2015 08:44:25 от Антон Мидюков »

Оффлайн SUNNY

  • Участник
  • *
  • Сообщений: 61
А вот не получается. Запуск от пользователя как в группе vmusers даёт ошибку как в первом посте.

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
authentication failed: polkit: polkit\56retains_authorization_after_challenge=1

У вас система инициализации какая? sysv? Тогда проблема в polkit: http://forum.altlinux.org/index.php/topic,30252.msg214115.html#msg214115
Но даже в systemd с polkit он будет запрашивать пароль пользователя. Я такое правило добавил:
touch /etc/polkit-1/rules.d/95-libvirtd.rulesС таким вот содержанием:
polkit.addRule(function(action, subject) {
if (action.id.indexOf("org.libvirt.unix.manage") == 0 && subject.isInGroup("vmusers")) {
return polkit.Result.YES;
}
});

Посмотрите вот эту тему: http://forum.altlinux.org/index.php?topic=34428.0
Судя по ней polkit можно поставить без перехода на systemd, но в нём будут работать только rules.

Оффлайн SUNNY

  • Участник
  • *
  • Сообщений: 61
Добавление правила помогло, не совсем понял что я сделал, но да, virsh стал отвечать на команды пользователя.

Правда вопрос тут в том, что я не совсем владею информации о том предмете с которым собрался работать и с этого наверное нужно было начинать. Как понимаю я: 1) есть KVM - гипервизор работающий в пространстве ядра, пакет kernel-modules-kvm-*** содержит три модуля ядра kvm.ko, kvm-amd.ko и kvm-intel.ko и больше ничего; есть qemu - фронтенд для KVM, который в принципе может работать и не как фронтенд, а как самостоятельный эмулятор, представлен пакетами qemu-system, qemu-user и qemu-common, я так понимаю из множества эмуляторов, содержащихся в этих пакетах: qemu-x86_64, qemu-system-x86_64, qemu-kvm мне нужен qemu-kvm, мне нужно создать образ диска с помощью qemu-img и написать скрипт, который будет подгружать с помощью modprobe модули KVM и запускать qemu-kvm с кучей параметров, такие как тип процессора, память, образ диска, конфигурация сети; 3)есть libvirt с консольными утилитами virsh и virt-install, нужный для того чтобы не нужно было писать вышеобозначенный скрипт, параметры у virt-install примерно такие же как у qemu-kvm.

Непонятно следующее: где именно virt-install сохраняет данные созданных виртуальных машин? Когда я запустил только что созданную виртуальную машину командой "virsh -c qemu:///system start virtual1" программа ответила "Домен virtual1 запущен", что за домен?
« Последнее редактирование: 18.06.2015 16:35:57 от SUNNY »

Оффлайн grumbler

  • alt linux team
  • ***
  • Сообщений: 126
Правда вопрос тут в том, что я не совсем владею информации о том предмете с которым собрался работать

Именно :)

О QEMU.
Гипервизор (то есть собственно софт, который обеспечивает работу виртуальной машины) QEMU-KVM состоит из двух компонент:
  • QEMU - приложение user-space
  • KVM - модуль ядра (ныне состоит из трёх модулей: kvm.ko загружает либо kvm-intel.ko, либо kvm-amd.ko в зависимости от платформы)
Приложение qemu может работать и без загруженных модулей KVM, но заметно медленнее (поскольку ядерные модули задействуют аппаратную поддержку виртуализации).

Ещё важно: каждая виртуальная машина работает в отдельном процессе qemu.

"Множество эмуляторов": qemu-system и qemu-user это один и тот же бинарник, эмулирующий x86, просто он выполняется с правами суперпользователя или обычного пользователя, а qemu-arm и прочие - отдельные бинарники для эмуляции соответствующих архитектур.

qemu-img - программа для создания и копирования образов диска.

О *virt*
libvirt - надстройка над разными гипервизорами, которая позволяет единым образом описывать разные виртуальные машины и предоставляет интерфейс для управления ими.
virt-install - скрипт, который создаёт описание виртуальной машины и может запустить свежесозданную ВМ. Соответственно, virt-install  сохраняет XML-текст там же, где и сама программа virsh.