Про QEMU

Jul 16, 2015 09:13

Обнаружил тут, что не существует удобного GUI для QEMU/KVM ( Read more... )

проа-конкурс, open source, непричесанные мысли, qemu

Leave a comment

Comments 39

nasse July 16 2015, 07:33:07 UTC
Я была бы очень рада возможности запустить машинку без привязки к монитору и иметь возможность отдавать ей команды из скрипта.

Reply

vitus_wagner July 16 2015, 08:07:21 UTC
Ну это-то никто тебе не мешает делать и так. Без GUI.
Берешь запускаешь qemu/kvm с -monitor tcp -video vnc
(там потребуетcя еще после tcp и vnc кое-какие параметры указать, см в мане), и после этого
передаешь ему команды посредством

echo command |nc localhost $monitorport

А можно сделать не tcp, а unix-domain сокет. Тогда вместо неудобопонятного имени порта можно будет использовать имя файла в каком-нибудь специальном каталоге, совпадающее с именем машины. Правда, вместо хорошо знакомого netcat придется использовать socat.

И при необходимости к консоли vncviewer-ом коннектишься.

Reply


tzirechnoy July 16 2015, 07:45:51 UTC

>В управление сетевыми устройствами

Тут сразу возникает вопрос -- а зачем нужна GUI-запускалка без GUI-создателя образов и launch commandline. Поскольку по-моему, если человек можэт это делать в cli, то и с shutdown он как-нибудь разберётся.

Ну и, разумеется, надо будет непосредственно commandline монитора выдать. Ну, ты в любом случае не всё продумаешь.

Так-то можно накидать вещей, которые периодически нужны, но, думаю, что будет нужно -- допилят, а не допилят -- значит не было нужно.

PS А события system_suspend нет потому, что нет такой кнопки в типичном компьютэре. poweroff есть, RESET возможэн независимо от, а вот suspend -- нету. Есть только state в APM/ACPI.

Reply

vitus_wagner July 16 2015, 08:03:31 UTC
Образы жестких дисков создаются раз в несколько лет. Для такого случая можно и qemu-img руками запустить. Там все просто. А вот подключать-отключать removable устройства нужно каждый день.

И набирать 8 шестнацатиричных цифр USB-шного vendor_id:product_id в мониторе лениво, хочется устройство из меню выбрать.

Задача не "сделать за пользователя то, в чем он разобраться не может", а "сделать удобно и минимумом телодвижений и достаточно удобочитаемой визуализацией (достаточно удобочитаемая - это не максимальная, это словам тесно, а информации просторно) то, что пользователю надо делать наиболее часто.

Кнопка suspend в типичном компьютере как раз есть. На ноутбуке это обычно Fn+какая-то функциональная клавиша, а на десктопах уже лет десять как специальную клавишу с изображением луны на клавиатуру лепят.

Вопрос в том, а зачем тогда команда wakeup, если у команды suspen нет.

Reply

tzirechnoy July 16 2015, 08:57:09 UTC

>набирать 8 шестнацатиричных цифр USB-шного vendor_id:product_id в мониторе лениво

Допишы нормальный compmletion в qemu cli.

Reply

vitus_wagner July 16 2015, 09:04:47 UTC
Издеваисси! Пользователь по хорошему счету вообще не должен видеть таких вещей как IP-адреса, USB-id и прочей цифровой абракадабры. Поэтому нужна менюшка: "вот у нас есть такие девайсы:
Integrated Camera, StoreJet Transcend и BCM43142A0 - который из них подключаем?"

Пользователь будет все равно путаться, потому что воткнул две одинаковых флэшки - пойди разбери какая там какая. Но USB-id у них тоже будет одинаковый. (кстати, надо предусмотреть такую фишку - если имеются два устройства с одинаковым usb_id, поключать их по bus/address/port)

Reply


permea_kra July 16 2015, 08:04:33 UTC
Разумеется, нужен VNC , web-интерфейс и удаленный клиент (если уж он гуевый)

Reply

vitus_wagner July 16 2015, 08:11:26 UTC
Это совсем другая задача. Под нее есть virt-manager и Proxmos.

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

Мне - не нужен web-интерфейс, при крайней необходимости клиента я могу через ssh X forwarding запустить.

Reply

permea_kra July 16 2015, 08:25:19 UTC
>при крайней необходимости клиента я могу через ssh X forwarding запустить
Есть мнение, что в этом случае если между машинами интернет, как правило будет наблюдаться слайд-шоу. VNC в этом смысле несколько лучше.

Reply

vitus_wagner July 16 2015, 08:45:26 UTC
Клиента - я имею в виду GUI через который подключать-отключать образы дисков и USB-устройства. Ему и такой темп перерисовки годится.

Reply


_past July 16 2015, 08:27:28 UTC
Spice работает в proxmox вполне успешно.

Reply

vitus_wagner July 16 2015, 08:50:31 UTC
А как он работает? Какой нужно взять spice-viewer, чтобы у него не было зависимости от libvirt, как именно его встраивать в приложения и какие возможности там будут?

Будет там проброс USB-устройств с рабочего места пользователя на удаленный сервер с vm?
А шейринг клипборда с хостом?

И не потребуется ли писать офигенно толстый демон, который будет менеджить коннекты клиентов к QEMU?

Reply


amarao_san July 16 2015, 09:55:00 UTC
Вопрос: а зависимости самого libvirt'а тоже несносные? В принципе, делать управление через libvirt (как альтернативу virt-manager) - имхо хорошая идея.

Штука к qemu тоже интересная, но проблема в том, что qemu, если утрировать, то это просто такой хитрый процесс в системе, который "сам по себе" и ничего не знает ни о сети, ни о дисках, ни о концепции "виртуальной машины". Этакая сильно перенизкоуровневая jvm, перепиленная под другие архитектуры, и умеющая kvm.

Reply

vitus_wagner July 16 2015, 10:10:41 UTC
libvirt это библиотека написанная людьми, которых. похоже в детстве Поттеринг покусал ( ... )

Reply

amarao_san July 16 2015, 20:57:34 UTC
qemu знает про диски только пока запущен. Как только виртуалка остановилась, "состав" виртуалки исчезает, остаётся только файл диска /lv и всё. libvirt же при этом помнит, какой диск к какой виртуалке относится, в какой бридж должна быть воткнута виртуалка (и может этот бридж поднять).

У меня по продакшену к libvirt'у одна претензия - xml в определении домена. был бы yaml, был бы душка.

Reply

vitus_wagner July 17 2015, 04:47:28 UTC
Хранить конфигурацию виртуальных машин как-то надо.

Но городить для этого охрененную библиотеку с демонами - это явный overengineering.

Типичный unix-way для сохранения набора команд для какой-то программы, написать скрипт, интерпретатором которого будет эта программа

Скрипт выглядит примерно так:
#!/usr/bin/qemu-system-x86_64 -readconfig
# qemu config file

[drive]
file = "/home/virtual/images/Asta.qcow2"
if = "ide"
media = "disk"

[chardev "vdagent"]
backend = "spicevmc"
name = "vdagent"

[device]
driver = "virtio-serial"
...

Этот формат современный qemu вполне умеет.

Reply


Leave a comment

Up