Windows VM stürzt ab.


Lot4ek
Go to solution Solved by alturismo,

Recommended Posts

Hallo alle zusammen. 

 

Bin neu hier und probiere Unraid schon ein halbes Jahr aus.

Seit kurzem habe ich ein Problem dass mir die Windows VM immer wieder abstürzt.

Mal sind es direkt beim login mal nach 10-30 Minuten. 

Hatte einiges beim Bios ausprobiert bin mir aber nicht sicher was der Grund dafür ist.

Sowohl über VNC als auch Remote ist auf einmal die Verbindung weg.

In der VM Übersicht sagt er mir nach einem betätigen der Pause oder Shutdown "Domain nicht erreichbar" und ich muss diese neu starten.

Habe schon vieles ausprobiert, aber alles noch ohne erfolg.

 

Des weiteren kriege ich noch nicht die interne GPU sowie die zweite 9600 GT zum laufen. 

 

Wäre über Tipps und Lösungsvorschläge sehr dankbar.

 

Meine Hardware:

1.st Unraid Server aus altem Rechner zum testen und lernen.

 

Unraid 6.9.2

Gigabyte Mainboard  B250-HD3P-CF

Intel i7 7700 (ohne K)

16GB Ram

 

Array: 1TB Parity, 400GB Pool, 500GB NvmE Chache, (erstmal zum testen)

64 GB USB

Link to comment
38 minutes ago, Lot4ek said:

Des weiteren kriege ich noch nicht die interne GPU sowie die zweite 9600 GT zum laufen. 

 

 

fangen wir mal einfach an, interne GPU, was willst du damit machen ? Docker Nutzung wie zum Beispiel hw transcoding ?

 

BIOS, primär auf iGPU gesetzt ?

Anleitung befolgt zur Aktivierung ? https://unraid.net/de/blog/unraid-6-9-beta35

/dev/dri device in dem jeweiligen container hinzugefügt ?

Link to comment
11 hours ago, alturismo said:

fangen wir mal einfach an, interne GPU, was willst du damit machen ? Docker Nutzung wie zum Beispiel hw transcoding ?

 

BIOS, primär auf iGPU gesetzt ?

Anleitung befolgt zur Aktivierung ? https://unraid.net/de/blog/unraid-6-9-beta35

/dev/dri device in dem jeweiligen container hinzugefügt ?

 

allgemein will ich das system verstehen und die ganzen Möglichkeiten ausloten. Grundsätzlich dachte ich mir die interne Intel GPU für ein kleines MAC OS zu benutzen. 

 

zu 1. Ja

zu 2. ich habe mir das intel-gvt-g plugin installiert. 

zu 3. da habe ich keine Ahnung was du dadrunter meinst. Ich vermute die xml von der vm welche ich hier eingefügt habe. 

 

Grundsätzlich muss ich sagen dass die interne diesmal, beim erstellen der Antwort hier, eingebunden wurde und ich die Grafikkarte sehen kann habe wie bei der beschreibung von intel-gvt-g plugin auch den Treiber aktualisiert auf den neuesten. Da hatte ich zwar Remote Desktop Abbrüche mit Error code: 0x11 aber ich denke das ist normal bei einer Grafiktreiberinstallation. Das blöde ist nur dass ich nach dem neu verbinden des Remote Desktops den Treiber Setupassistant nicht zu ende führen konnte da es zwar noch in der Taskleiste angezeigt wurde aber nicht zu sehen war. 

 

Zu dieser Windows VM habe ich mich diesmal strickt an die Anleitung von mgutt gehalten bis auf den Punkt dass ich schon bei der Installation den Netztwerktreiber installiert habe um mich bei der Installation mit dem Microsoft Account anzumelden. (Ich hasse es immer erst den localen Nutzer anzulegen)

 

Muss ich die Grafikkarte jetzt noch im VM Manager bzw. der XML noch einstellen. 

Ich benutze Remote Desktop von einem alten iMac aus: gibt es dazu bessere alternativen wie ich auf die VMs zugreifen kann.

 

Zu dem Absturzproblem habe ich nun überraschenderweise keinen gehabt. Soll ich irgendein Log nebenbei laufen lassen um das Problem bei einem Absturz mitzuschneiden?

 

Vielen Dank alturismo für die schnelle Antwort hatte gestern gar nicht mehr damit gerechnet und danke im voraus für eure Unterstützung.

 

Spoiler

<?xml version='1.0' encoding='UTF-8'?>
<domain type='kvm' id='1'>
  <name>Windows 10</name>
  <uuid>885c94fb-5f1b-e068-407f-110ddd6ba25a</uuid>
  <metadata>
    <vmtemplate xmlns="unraid" name="Windows 10" icon="windows.png" os="windows10"/>
  </metadata>
  <memory unit='KiB'>12582912</memory>
  <currentMemory unit='KiB'>12582912</currentMemory>
  <memoryBacking>
    <nosharepages/>
  </memoryBacking>
  <vcpu placement='static'>6</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='1'/>
    <vcpupin vcpu='1' cpuset='5'/>
    <vcpupin vcpu='2' cpuset='2'/>
    <vcpupin vcpu='3' cpuset='6'/>
    <vcpupin vcpu='4' cpuset='3'/>
    <vcpupin vcpu='5' cpuset='7'/>
  </cputune>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-q35-5.1'>hvm</type>
    <loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader>
    <nvram>/etc/libvirt/qemu/nvram/885c94fb-5f1b-e068-407f-110ddd6ba25a_VARS-pure-efi.fd</nvram>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
      <vendor_id state='on' value='none'/>
    </hyperv>
  </features>
  <cpu mode='host-passthrough' check='none' migratable='on'>
    <topology sockets='1' dies='1' cores='3' threads='2'/>
    <cache mode='passthrough'/>
  </cpu>
  <clock offset='localtime'>
    <timer name='hypervclock' present='yes'/>
    <timer name='hpet' present='no'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/local/sbin/qemu</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='writeback'/>
      <source file='/mnt/user/domains/Windows 10/vdisk1.img' index='3'/>
      <backingStore/>
      <target dev='hdc' bus='virtio'/>
      <boot order='1'/>
      <alias name='virtio-disk2'/>
      <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/user/isos/Windows 10_21H1_German_x64.iso' index='2'/>
      <backingStore/>
      <target dev='hda' bus='sata'/>
      <readonly/>
      <boot order='2'/>
      <alias name='sata0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/user/isos/virtio-win-0.1.190-1.iso' index='1'/>
      <backingStore/>
      <target dev='hdb' bus='sata'/>
      <readonly/>
      <alias name='sata0-0-1'/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <controller type='usb' index='0' model='nec-xhci' ports='15'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </controller>
    <controller type='sata' index='0'>
      <alias name='ide'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pcie-root'>
      <alias name='pcie.0'/>
    </controller>
    <controller type='pci' index='1' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='1' port='0x10'/>
      <alias name='pci.1'/>
      <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'/>
      <alias name='pci.2'/>
      <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'/>
      <alias name='pci.3'/>
      <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'/>
      <alias name='pci.4'/>
      <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'/>
      <alias name='pci.5'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x4'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <alias name='virtio-serial0'/>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:71:60:83'/>
      <source bridge='br0'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/0'/>
      <target type='isa-serial' port='0'>
        <model name='isa-serial'/>
      </target>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/0'>
      <source path='/dev/pts/0'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <channel type='unix'>
      <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-1-Windows 10/org.qemu.guest_agent.0'/>
      <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/>
      <alias name='channel0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='tablet' bus='usb'>
      <alias name='input0'/>
      <address type='usb' bus='0' port='1'/>
    </input>
    <input type='mouse' bus='ps2'>
      <alias name='input1'/>
    </input>
    <input type='keyboard' bus='ps2'>
      <alias name='input2'/>
    </input>
    <graphics type='vnc' port='5900' autoport='yes' websocket='5700' listen='0.0.0.0' keymap='de'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
    </video>
    <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci' display='off'>
      <source>
        <address uuid='a8a1ffb7-d570-4276-ab5d-67075fd6099e'/>
      </source>
      <alias name='hostdev0'/>
      <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
    </hostdev>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
    </memballoon>
  </devices>
  <seclabel type='dynamic' model='dac' relabel='yes'>
    <label>+0:+100</label>
    <imagelabel>+0:+100</imagelabel>
  </seclabel>
</domain>
 

 

Link to comment
  • Solution
19 minutes ago, Lot4ek said:

Grundsätzlich muss ich sagen dass die interne diesmal, beim erstellen der Antwort hier, eingebunden wurde und ich die Grafikkarte sehen kann habe wie bei der beschreibung von intel-gvt-g plugin auch den Treiber aktualisiert auf den neuesten.

 

ok, also gvt-g in einer VM

 

53 minutes ago, Lot4ek said:

zu 2. ich habe mir das intel-gvt-g plugin installiert. 

 

perfekt, damit ist alles grundsätzlich auch erledigt, daher greift auch die iGPU in der Windows VM ... und auch in Docker(s)

Ich gehe davon aus du hast im Plugin auch die vgpu erstellt zu deiner VM (so sehe ich das mal in deiner xml), bedenken, neue VM, neu zuweisen, ...

 

1 hour ago, Lot4ek said:

Muss ich die Grafikkarte jetzt noch im VM Manager bzw. der XML noch einstellen. 

das macht das plugin für Dich wie beschrieben

 

schau einfach im Gerätemanager nach deiner Grafikkarte, Doppelklick ob es irgendwelche Probleme gibt ...

 

Nutzung in Windows, normal keine größeren Probleme dies umzusetzen, du hast ja bereits eine VM damit laufen. ich empfehle hier nachdem RDP eingerichtet ist evtl. eine Alternative, entweder nativ VNC (Bsp. TightVNC) oder chrome remote desktop (läuft erstaunlich gut) oder parsec (beste Variante was die flüssige Darstellung angeht).

 

zu deinen Abstürzen, ich schließe mal aus deiner Vorgehensweise dass du RDP genutzt hast, was passiert da (leider) gerne, RDP zieht sich mehr vram als es sollte und die gvt-g vgpu schmiert im Hintergrund ab und legt das komplette System lahm ... wenn das passiert und man noch reagieren kann sieht man im syslog viele Einträge "unRAID kernel: gvt: guest page write error, ...).

 

Unser Problem hier liegt bei der Speicherzuweisung, Beispiel, ich habe auch 1GB Ram der igpu zugewiesen, wird aber leider ignoriert ... schön zu sehen bei diesem Befehl

lspci -vv -s 00:02.0 | grep prefetchable

        Region 0: Memory at 6222000000 (64-bit, non-prefetchable) [size=16M]
        Region 2: Memory at 4000000000 (64-bit, prefetchable) [size=256M]

mehr wie 256mb sind es nicht ... hängt am BIOS der Mainboard Hersteller ... es gibt Anleitung zu "Hacks" hierzu mit custom Bios ... aber ... auf eigene Gefahr, ich mache es nicht ;)

 

mit den anderen Tools wie TightVNC (nutzt auch die igpu zur Hardware Beschleunigung), Parsec und co ... treten diese Probleme nicht auf, ich konnte das nur nachstellen mit RDP Verbindungen, kann man auch recht einfach selbst nachstellen da RDP ja in der Regel die client Resolution nimmt, sprich, wenn dein Mac eine höhere Auflösung wie 1920x1080 nutzt schaltet die VM auch in diesen Modus und benötigt mehr vram ... das crasht gerne dann komplett das System nach einer gewissen Nutzungsdauer, erst die VM, dann unraid wenn man nicht schnell genug ist ;) daher meine grundsätzliche Empfehlung RDP zu lassen (ist normal auch mein favorisiertes Protokoll, aber ...)

Ich habe dann auch RDP mit erzwungenen max 1920x1080 getestet, läuft länger ok, aber leider ... nicht permanent wie mit anderen Protokollen ...

 

Thema Mac VM und gvt-g, ich mache es kurz, wird nichts nach aktuellem Stand ;) ich wüsste niemand der das hinbekommen hat (mich eingeschlossen)

du kannst Dich hierzu im macinabox thread eher kundig machen und schauen ob da jemand mehr Input liefern kann, wobei ich damit durch bin und meine macos VM mit Nvidia (High Sierra) dann sauber am Laufen hatte, das Thema macos an sich aber gekippt habe da für mich absolut uninteressant ;)

Empfehlung, aktuelles macos geht ja nur mit AMD Karten, hier eine günstige kompatible besorgen und hoffen das AMD passthrough geht, ist leider anfälliger als Nvidia aber für macos die aktuell einzige nennenswerte Option ...

 

---

was ich noch vorschlage bei gvt-g VM's, wenn RDP, Parsec, ... läuft, den unraid qxl vnc Adapter zu entfernen, das geht leider nur manuell in der xml, dazu folgende Einträge entfernen (löschen).

    <graphics type='vnc' port='5900' autoport='yes' websocket='5700' listen='0.0.0.0' keymap='de'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
    </video>

somit hast du nur noch einen Bildschirm in der VM ... und lieber nativ VNC wie oben erwähnt dann direkt zur VM (oder parsec oder ...)

 

Zusammengefasst, RDP ist/kann kritisch werden wegen den oben genannten Aspekten zu vram der vgpu ...und ist wahrscheinlich der Grund deiner Crashes.

 

12 hours ago, alturismo said:

/dev/dri device in dem jeweiligen container hinzugefügt ?

 

50 minutes ago, Lot4ek said:

zu 3. da habe ich keine Ahnung was du dadrunter meinst. Ich vermute die xml von der vm welche ich hier eingefügt habe. 

 

 

das wäre jetzt die parallele Nutzung der igpu in einem Docker, Beispiel Mediaserver wie Plex, Emby, ... die intel hardware transcoding unterstützen.

 

Beispiel im Plex Docker als Device hinzufügen

 

image.png.78d8a8e43828c03ae64cc9615c39c7d2.png

 

so kann die Hardware (igpu) auch in einem Docker genutzt werden sofern dieser dies unterstützt (alle gängigen Mediaserver usw ... unterstützen vaapi, QSV, ...) und du musst nicht zum Streaming mit der CPU encoden, interessant für Mediaserver remote Zugang, Beispiel, Plex im Browser was anschauen ... auf einem Mobilgerät ... usw

 

Bei Fragen ... einfach in die Tasten hauen ;)

  • Thanks 1
Link to comment

Vielen Dank für die ausführliche Antwort. 

Habe den Post gleich gelesen gehabt und ausprobiert. 

Funktioniert seitdem super. Nur bin ich nicht dazu gekommen zu antworten was ich jetzt nachhole. 

 

On 2/4/2022 at 10:58 AM, alturismo said:

was ich noch vorschlage bei gvt-g VM's, wenn RDP, Parsec, ... läuft, den unraid qxl vnc Adapter zu entfernen, das geht leider nur manuell in der xml, dazu folgende Einträge entfernen (löschen).

    <graphics type='vnc' port='5900' autoport='yes' websocket='5700' listen='0.0.0.0' keymap='de'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
    </video>

somit hast du nur noch einen Bildschirm in der VM ... und lieber nativ VNC wie oben erwähnt dann direkt zur VM (oder parsec oder ...)

 

Zusammengefasst, RDP ist/kann kritisch werden wegen den oben genannten Aspekten zu vram der vgpu ...und ist wahrscheinlich der Grund deiner Crashes.

 

hier habe ich nicht den Port 5900 als vnc Post stehen sondern -1 aber ich glaube das ist so richtig oder?

 

 <graphics type='vnc' port='-1' autoport='yes' websocket='-1' listen='0.0.0.0' keymap='de'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <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>

 

Funktioniert aber nachdem ich es gelöscht habe.

 

  • Like 1
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.