Siduction Forum

Siduction Forum => Software - Support => Topic started by: Isegrimm666 on 2024/10/11, 12:41:57

Title: [gelöst] QEMU/KVM Fehlermeldung bei Snapshot.
Post by: Isegrimm666 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 ...


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 (https://www.youtube.com/watch?v=Zei8i9CpAn0) (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.


Lief einwandfrei.

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


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:


<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 (https://forum.siduction.org/index.php?topic=9475.msg75447#msg75447)" kann ich ohne weiteres leben.  :)
Title: Re: QEMU/KVM Fehlermeldung bei Snapshot.
Post by: ro_sid 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:
QuoteFehler 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?
Title: Re: QEMU/KVM Fehlermeldung bei Snapshot.
Post by: Isegrimm666 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
Title: Re: [gelöst] QEMU/KVM Fehlermeldung bei Snapshot.
Post by: Isegrimm666 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.
Title: Re: [gelöst] QEMU/KVM Fehlermeldung bei Snapshot.
Post by: ro_sid 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.
Title: Re: [gelöst] QEMU/KVM Fehlermeldung bei Snapshot.
Post by: Isegrimm666 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.
Title: Re: [gelöst] QEMU/KVM Fehlermeldung bei Snapshot.
Post by: ro_sid 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).