@F1eex

Проброс видеокарты в виртуальную машину и снимки состояния?

Недавно получилось пробросить видекарту (AMD RX 560) в виртуалку (хост Ubuntu 20.04, QEMU KVM, гость Win 8.1) После чего узнал, что снимки с такой конфигурацией делать нельзя, хотя возможна гибернация в гостевой Win 8.1 Есть ли другие виртуальные машины, в которых можно делать снимки с проброшенной видяхой? Существует ли вообще возможность делать снимки состояния виртуальной машины, в которую проброшена видеокарта? Или же есть какое-то фундаментальное ограничение?
  • Вопрос задан
  • 426 просмотров
Пригласить эксперта
Ответы на вопрос 3
gbg
@gbg
Любые ответы на любые вопросы
Это принципиально невозможно снаружи ВМ, потому что непонятно, как при пробуждении ВМ восстановить контекст видеокарты.

Гибернация на то и гибернация, что она может "попросить" драйвер карты усыпить девайс штатным образом.
Ответ написан
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
Недавно получилось пробросить видекарту (AMD RX 560) в виртуалку (хост Ubuntu 20.04, QEMU KVM, гость Win 8.1)

Вау! А можешь немного подробнее поделиться? Какая версия ядра, QEMU, libvirt, какая мать, какие настройки делались? Тут множество желающих повторить сие найдется.
Ответ написан
@F1eex Автор вопроса
Итак, мой ответ на мой же вопрос, подведение итогов. Снимок состояния с проброшенной видяхой фундаментально на данный момент (13.05.2021) невозможен. Остается вариант - отправить машину в гибернацию, после чего уже сделать снимок. При этом в последующих случаях восстановления снимка, машина очевидно будет выключена и в состоянии гибернации. Поэтому потребует ее включение. Может быть не очень удобно, но кое-что.

Опишу, как делать эту процедуру в QEMU KVM c gpu passthrough.
Отправлять в гибернацию винду я буду из хостовой ubuntu через команду virsh dompmsuspend https://libvirt.org/manpages/virsh.html#dompmsuspend. Для этого нужно сделать следующие шаги:

1. В xml виртуалки в разделе pm>нужно исправить suspend-to-mem enabled="no"/ и suspend-to-disk enabled="no"/ на "yes":
spoiler
<pm>
    <suspend-to-mem enabled="yes"/>
    <suspend-to-disk enabled="yes"/>
  </pm>


2. xml виртуалки в раздел нужно добавить devices:
spoiler
<channel type='unix'>
   <source mode='bind' path='/var/lib/libvirt/qemu/f16x86_64.agent'/>
   <target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>


3. В гостевой Windows нужно установить QEMU Guest Agent. Я скачал его с ISO образа с драйверами Windows VirtIO https://fedorapeople.org/groups/virt/virtio-win/di...QEMU Guest Agent находится в папке guest-agent образа.

Собственно в гибернацию машину можно отправить командой virsh dompmsuspend domain disk, где domain - это имя виртуалки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы