Welcome, Guest. Please login or register.
Did you miss your activation email?

Author Topic: [DE] [gelöst] QEMU/KVM Fehlermeldung bei Snapshot.  (Read 837 times)

Offline Isegrimm666

  • User
  • Posts: 136
[DE] [gelöst] QEMU/KVM Fehlermeldung bei Snapshot.
« on: 2024/10/11, 12:41:57 »
Hallo zusammen ...

Ich hatte schon seit einiger Zeit vor, mir wieder eine bzw. mehrere VMs zu installieren. Früher habe ich das mit "VMware" realisiert und wollte es doesmal mit einer OpenSource-Lösung umsetzen. So habe ich mir "qemu" installiert ...

Code: [Select]
doas apt update
doas apt install qemu-kvm bridge-utils virt-manager libosinfo-bin

... und anschließend neu gebootet.

Um meine Installation zu testen, habe ich mir eine VM mit einem "Linux Mint"-ISO erstellt, die auch einwandfrei läuft. Danach habe ich mir (nach dieser Anleitung hier (ab Timecode 2:03)) eine Maschine mit Windows 10 aufgesetzt. Auch diese läuft einwandfrei.

Nachdem bei allen beiden Maschinen die Grundinstallationen und Updates abgeschlossen waren, wollte ich Snapshots erstellen.

  • Die Linux-Mint-VM aktiviert ...
  • ... in Snapshots gegangen ...
  • ... über "+" einen neuen Snapshot ausgewählt und benannt
  • ... und mit einem Klick auf "Fertig" den Snapshot erstellt.

Lief einwandfrei.

Jetzt habe ich das obige bei der Windows 10 VM wiederholt ... und erhalte folgende Fehlermeldung:

Code: [Select]
Fehler beim Erzeugen des Schnappschusses: Angeforderte Operation ist nicht gültig: cannot migrate domain: Migration disabled: vhost-user backend lacks VHOST_USER_PROTOCOL_F_LOG_SHMFD feature.; Migration disabled: vhost-user backend lacks VHOST_USER_PROTOCOL_F_LOG_SHMFD feature.

Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 72, in cb_wrapper
    callback(asyncjob, *args, **kwargs)
  File "/usr/share/virt-manager/virtManager/details/snapshots.py", line 237, in _do_create_snapshot
    self.vm.create_snapshot(xml)
  File "/usr/share/virt-manager/virtManager/object/domain.py", line 1197, in create_snapshot
    self._backend.snapshotCreateXML(xml, flags)
  File "/usr/lib/python3/dist-packages/libvirt.py", line 3141, in snapshotCreateXML
    raise libvirtError('virDomainSnapshotCreateXML() failed')
libvirt.libvirtError: Angeforderte Operation ist nicht gültig: cannot migrate domain: Migration disabled: vhost-user backend lacks VHOST_USER_PROTOCOL_F_LOG_SHMFD feature.; Migration disabled: vhost-user backend lacks VHOST_USER_PROTOCOL_F_LOG_SHMFD feature.

Ich habe jetzt mit der Fehlermeldung gegoogelt und versucht, eine Lösung zu finden ... allerdings ohne Erfolg.

Der XML-Dump sieht wie folgt aus:

Code: [Select]
<domain type="kvm">
  <name>win10</name>
  <uuid>a0f8c593-1b64-49c3-a55e-98be42ab9ee1</uuid>
  <metadata>
    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
      <libosinfo:os id="http://microsoft.com/win/10"/>
    </libosinfo:libosinfo>
  </metadata>
  <memory unit="KiB">8388608</memory>
  <currentMemory unit="KiB">8388608</currentMemory>
  <memoryBacking>
    <source type="memfd"/>
    <access mode="shared"/>
  </memoryBacking>
  <vcpu placement="static">8</vcpu>
  <os>
    <type arch="x86_64" machine="pc-q35-9.1">hvm</type>
    <bootmenu enable="yes"/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv mode="custom">
      <relaxed state="on"/>
      <vapic state="on"/>
      <spinlocks state="on" retries="8191"/>
    </hyperv>
    <vmport state="off"/>
  </features>
  <cpu mode="host-passthrough" check="none" migratable="on">
    <topology sockets="1" dies="1" clusters="1" cores="4" threads="2"/>
  </cpu>
  <clock offset="localtime">
    <timer name="rtc" tickpolicy="catchup"/>
    <timer name="pit" tickpolicy="delay"/>
    <timer name="hpet" present="no"/>
    <timer name="hypervclock" present="yes"/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <pm>
    <suspend-to-mem enabled="no"/>
    <suspend-to-disk enabled="no"/>
  </pm>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type="file" device="disk">
      <driver name="qemu" type="qcow2" discard="unmap"/>
      <source file="/var/lib/libvirt/images/win10.qcow2"/>
      <target dev="vda" bus="virtio"/>
      <boot order="2"/>
      <address type="pci" domain="0x0000" bus="0x04" slot="0x00" function="0x0"/>
    </disk>
    <disk type="file" device="cdrom">
      <driver name="qemu" type="raw"/>
      <target dev="sdb" bus="sata"/>
      <readonly/>
      <boot order="1"/>
      <address type="drive" controller="0" bus="0" target="0" unit="1"/>
    </disk>
    <disk type="file" device="cdrom">
      <driver name="qemu" type="raw"/>
      <target dev="sdc" bus="sata"/>
      <readonly/>
      <boot order="3"/>
      <address type="drive" controller="0" bus="0" target="0" unit="2"/>
    </disk>
    <controller type="usb" index="0" model="qemu-xhci" ports="15">
      <address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/>
    </controller>
    <controller type="pci" index="0" model="pcie-root"/>
    <controller type="pci" index="1" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="1" port="0x10"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0" multifunction="on"/>
    </controller>
    <controller type="pci" index="2" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="2" port="0x11"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x1"/>
    </controller>
    <controller type="pci" index="3" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="3" port="0x12"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x2"/>
    </controller>
    <controller type="pci" index="4" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="4" port="0x13"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x3"/>
    </controller>
    <controller type="pci" index="5" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="5" port="0x14"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x4"/>
    </controller>
    <controller type="pci" index="6" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="6" port="0x15"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x5"/>
    </controller>
    <controller type="pci" index="7" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="7" port="0x16"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x6"/>
    </controller>
    <controller type="pci" index="8" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="8" port="0x17"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x7"/>
    </controller>
    <controller type="pci" index="9" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="9" port="0x18"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0" multifunction="on"/>
    </controller>
    <controller type="pci" index="10" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="10" port="0x19"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x1"/>
    </controller>
    <controller type="pci" index="11" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="11" port="0x1a"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x2"/>
    </controller>
    <controller type="pci" index="12" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="12" port="0x1b"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x3"/>
    </controller>
    <controller type="pci" index="13" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="13" port="0x1c"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x4"/>
    </controller>
    <controller type="pci" index="14" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="14" port="0x1d"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x5"/>
    </controller>
    <controller type="sata" index="0">
      <address type="pci" domain="0x0000" bus="0x00" slot="0x1f" function="0x2"/>
    </controller>
    <controller type="virtio-serial" index="0">
      <address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
    </controller>
    <filesystem type="mount" accessmode="passthrough">
      <driver type="virtiofs"/>
      <source dir="/home/isegrimm/Downloads/VMs"/>
      <target dir="shared"/>
      <address type="pci" domain="0x0000" bus="0x06" slot="0x00" function="0x0"/>
    </filesystem>
    <filesystem type="mount" accessmode="passthrough">
      <driver type="virtiofs"/>
      <source dir="/media/isegrimm/FILES"/>
      <target dir="FILES"/>
      <address type="pci" domain="0x0000" bus="0x07" slot="0x00" function="0x0"/>
    </filesystem>
    <interface type="network">
      <mac address="52:54:00:04:d2:af"/>
      <source network="default"/>
      <model type="virtio"/>
      <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
    </interface>
    <serial type="pty">
      <target type="isa-serial" port="0">
        <model name="isa-serial"/>
      </target>
    </serial>
    <console type="pty">
      <target type="serial" port="0"/>
    </console>
    <channel type="spicevmc">
      <target type="virtio" name="com.redhat.spice.0"/>
      <address type="virtio-serial" controller="0" bus="0" port="1"/>
    </channel>
    <channel type="spiceport">
      <source channel="org.spice-space.webdav.0"/>
      <target type="virtio" name="org.spice-space.webdav.0"/>
      <address type="virtio-serial" controller="0" bus="0" port="2"/>
    </channel>
    <input type="tablet" bus="usb">
      <address type="usb" bus="0" port="1"/>
    </input>
    <input type="mouse" bus="ps2"/>
    <input type="keyboard" bus="ps2"/>
    <graphics type="spice" autoport="yes">
      <listen type="address"/>
      <image compression="off"/>
    </graphics>
    <graphics type="vnc" port="-1" autoport="yes">
      <listen type="address"/>
    </graphics>
    <sound model="ich9">
      <address type="pci" domain="0x0000" bus="0x00" slot="0x1b" function="0x0"/>
    </sound>
    <audio id="1" type="none"/>
    <video>
      <model type="qxl" ram="65536" vram="65536" vgamem="16384" heads="1" primary="yes"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x0"/>
    </video>
    <redirdev bus="usb" type="spicevmc">
      <address type="usb" bus="0" port="2"/>
    </redirdev>
    <redirdev bus="usb" type="spicevmc">
      <address type="usb" bus="0" port="3"/>
    </redirdev>
    <watchdog model="itco" action="reset"/>
    <memballoon model="virtio">
      <address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/>
    </memballoon>
  </devices>
</domain>

... und der sagt mir als QEMU-Anfänger erst mal nix.

Die Frage für mich ist jetzt natürlich primär, warum tritt der Fehler auf und wie kann ich ihn beheben.

Stefan

Update (2024-10-13, 10:33h):


Mit der "Lösung" kann ich ohne weiteres leben.  :)
« Last Edit: 2024/10/13, 10:33:18 by Isegrimm666 »

Offline ro_sid

  • User
  • Posts: 316
Re: QEMU/KVM Fehlermeldung bei Snapshot.
« Reply #1 on: 2024/10/11, 16:27:28 »
Achtung, bisher habe ich es bei libvirt nur mit xen zu tun gehabt, nicht kvm. Falls es also jemand besser weiß ...
Aber was mich nervös macht:
Quote
Fehler beim Erzeugen des Schnappschusses: Angeforderte Operation ist nicht gültig: cannot migrate domain: Migration disabled: ...
ist das Wort Migration.
Falls damit gemeint ist, eine Live-Migration (also im laufenden Betrieb) auf einen anderen "Host" durchzuführen - oder auch nur durchführen zu können, weil eigentlich kein anderer "da" ist -, weiß ich, daß an die Komponenten (Driver, Memory, "operating system"  ...) Anforderungen gestellt werden, die Win 10 vielleicht nicht erfüllt!
Im Zusammenhang damit: War die Win 10 VM "abgestellt", als der Schnappschuß versucht wurde?

Offline Isegrimm666

  • User
  • Posts: 136
Re: QEMU/KVM Fehlermeldung bei Snapshot.
« Reply #2 on: 2024/10/11, 16:58:14 »
Hi ro_sid …

… ganz im Gegenteil … die VMs waren - zum Zeitpunkt des Screenshots - beide an.

Als ich bei der WIN-10-VM einen Snapshot im abgeschalteten Zustand machen wollte, ging der ohne Probleme (hätte ich vielleicht schon im Ausgangspost schreiben sollen :( )

Wie gesagt, ich bin Newbie in QEMU und dachte, für einen Snapshot müsste die VM laufen. :P

Offline Isegrimm666

  • User
  • Posts: 136
Re: [gelöst] QEMU/KVM Fehlermeldung bei Snapshot.
« Reply #3 on: 2024/10/13, 10:30:14 »
Da es absolut kein Problem darstellt, den Snapshot bei einer ausgeschalteten Maschine zu machen, ist das Problem für mich zwar nicht gelöst, aber nicht mehr gegenständig.

Danke für die Hilfe.

Offline ro_sid

  • User
  • Posts: 316
Re: [gelöst] QEMU/KVM Fehlermeldung bei Snapshot.
« Reply #4 on: 2024/10/13, 16:59:36 »
Bitte!

Wo läge denn der Vorteil eines Schnappschusses bei eingeschalteter VM?
Ein Schnappschuß ist ja keine "eingefrorene" VM, die man wieder "auftauen" kann und die dann an gleicher Stelle fortfährt.
Das ging - glaube ich - noch nicht einmal bei VMware.

Andererseits kann man eine VM in den"Suspend-" oder "Hibernation-Modus" versetzen, wenn man sie mit dieser Möglichkeit installiert hat.

Offline Isegrimm666

  • User
  • Posts: 136
Re: [gelöst] QEMU/KVM Fehlermeldung bei Snapshot.
« Reply #5 on: 2024/10/13, 17:10:16 »
Nein … so ein 'Schnappschuss' wäre ja auch unsinnig … es wäre ja so, als würde man bei einem Spiel mittendrin abspeichern … dann müsste ja auch der Zustand des Arbeitsspeichers mit 'eingefroren' werden.

Wahrscheinlich hatte es mich nur irritiert, weil es bei der Linux-Mint-VM möglich war, auch bei angeschalteter VM einen Snapshot zu machen.

Vielleicht ist der Grund der, das Windows beim Start Systemdateien exklusiv sperrt, Linux - meines Wissen nach - nicht.

Offline ro_sid

  • User
  • Posts: 316
Re: [gelöst] QEMU/KVM Fehlermeldung bei Snapshot.
« Reply #6 on: 2024/10/13, 20:18:18 »
Na ja, von einem - wie auch immer gearteten - Sperren weiß der VM-Host ja nichts.
Aber die Geräte-Treiber des Hosts sind (fast alle) "migrationsfähig", was auch von der Speicherverwaltung in der Linux VM unterstützt wird. Damit läßt sich die Linux VM in einen "gesicherten Modus" versetzen, so als ob sie migriert würde. In dem Zustand kann man einen konsistenten Schnappschuß erstellen. [Der ist aber auch nicht "besser" als ein im abgeschalteten Modus erstellter.]

Diese Voraussetzungen fehlen bei Windows (anscheinend).