[devel] qemu и все-все-все

Anton Farygin rider на altlinux.com
Чт Янв 13 06:16:09 UTC 2011


  12.01.2011 23:24, Alexey Shabalin пишет:
> День добрый.
> Посвятил несколько дней для разборок с нашими qemu, qemu-kvm, libvirt,
> virt-manager и остальным.
> На первый взгляд вроде ничего, но стоит капнуть поглубже - ужас-ужас :)
>
> Пробую добавить поддержку spice в qemu-kvm. Ок, всё собралось. А
> дальше вылазит занятная ситуация:
> - изображаю простого пользователя и использую libvirt (для запуска,
> создания виртуалок) и GUI - virt-manager + virt-viewer
> - qemu-kvm конечно можно поставить самостоятельно, но ещё хочется и
> создавать виртуалки, а утилиты qemu-img в пакете qemu-kvm нет - типа
> используйте от родного qemu.
> - ставим qemu только ради qemu-img
> - а теперь самое интересное - как ведёт себя libvirt. Когда говоришь
> запустить виртуальную машину - он по чесному запускает через
> /usr/bin/kvm или /usr/bin/qemu-kvm
>    А вот при создании/настройках виртуалки, libvirt'у надо понимать с
> чем он имеет дело и какие возможности имеются. для этого он смотрит
> вывод команды с ключём --help и  парсит его. А вот команду с ключём
> --help он запускает совсем не /usr/bin/kvm или /usr/bin/qemu-kvm (что
> хотелось бы), а /usr/bin/qemu-system-x86_64. А этот файл принадлежит
> старому qemu (не qemu-kvm). Как вы помните пакет qemu мы удалить не
> можем - нужен qemu-img. А если бы и удалили, то без
> /usr/bin/qemu-system-x86_64 libvirt вообще свихнётся.
>    В результате получаем, что как бы мы ни модифицировали qemu-kvm,
> каких бы фишек не добавили, libvirt нам не даст с ними работать - он
> видит фишки от старого qemu.
>
> Конечно бага в libvirt, но мне кажется разработчики libvirt не
> подозревают, что на машине пользователя будут/могут одновременно
> установлены qemu и qemu-kvm.
>
> В общем посмотрел я на всё это и взялся за напильник.
> Я бы предпочел иметь в репо единственную версию qemu (qemu или
> qemu-kvm - пока не важно - но единую) - так было бы всем легче. Тем
> более что сейчас их апстримы постоянно мержатся между собой. Но не
> давно на меня ругались в багзиле, что бы я отстал от всех, разные это
> проекты и всё тут. Хорошо пусть будут оба.
> Выходов несколько - собирать всё нужное из проектов (и qemu-img тоже)
> и раставить конфликты, либо не делать конфликты используя алтернативы.
> Я выбрал альтернативы.
> На ваш суд предлагается тестовая сборка всего барахла.
> Основные изменения:
> - везде включена поддержка spice. погонял денёк - работает. Правда  на
> карте vga, с qxl пока не получилось.
> - для работы spice все проекты собраны из снапшотов.
> - некоторые git-репо(virt-manager, virt-viewer,python-virtinst)
> переделаны(импорт из апстримного mercurial) - не обижайтесь, если не
> устраивает то верну обратно. Вы только скажите :)
> - в qemu и qemu-kvm добавлены алтернативы для qemu-img, qemu-io,
> qemu-system-x86_64, qemu-nbd
> - в них же выделены подпакеты img (хотя можно этого и не делать)
> - для тестирования(ещё надо смотреть), в qemu-kvm используются ромы из
> внешних пакетов vgabios, seabios, gpxe-roms-qemu
>    для qemu пока этого не делал.
> - если установлена libcgroup и запущены сервисы, libvirt начинает
> использовать cgroup.
> - в libvirt включены многие опции.
> - разные мелкие фиксы
>
> Заинтересованных прошу посмотреть, высказать мнение/рекомендации. task #36894
> Ну и в конечном итоге всё это хочется видеть в сизифе.
> Так что давайте договариваться об acl, NMU, approve и т.п. :)
>
> PS: у qemu-kvm в acl @everybody, но без одобрения rider@ обновлять не хочется.
Я не возражаю, но надо бы протестировать обновление. Плюс - внешние ромы 
как-то стрёмно - может быть, всё-таки, останемся на внутренних ? ты не 
сравнивал разницу между ними ?
> PPS: конечно там всё не идеально и ещё есть чего сделать. например:
> возможно "синхронизировать" спеки для qemu и qemu-kvm, убрать
> qemu-common - я не понял почему так назвали пакет с документацией и
> почему он обязательный а не опциональный. Надо бы сделать общий
> control и init-скрипт для модуля kvm, т.к. qemu тоже умеет kvm. Ну и
> так далее.
ok



Подробная информация о списке рассылки Devel