Uspání virtuálního PC

Uspání virtuálního PC
« kdy: 07. 01. 2020, 11:33:38 »
Jak proběhne uspání virtuálního PC (je to trochu ze široka, Windows 7,8, LInux, virtuální OS X) v různých virtualizačních nástrojích?
Resp. půjde to vůbec (zda guest os nabídne vůbec možnost přechod do režimu spánku S3 či hibernace S4) dle toho, zda provádí nějakou detekci ACPI podporovaných režimu ? Tím  - tedy - nebízí virtualizační nástroj tuto možnost?

Otázka míří na  spíš na S3(RAM), neboť pro S4 není potřeba z hlediska PC nic navíc, vše ohledně rozmrznutí si obstarává OS.


Re:Uspání virtuálního PC
« Odpověď #1 kdy: 07. 01. 2020, 12:55:56 »
Funguje to běžně, běžně uspávám laptop se zapnutým VirtualBoxem, po otevření víka vše funguje v pohodě.

Nevidím důvod proč by to nemělo fungovat, procesor se normálně zastaví, do RAM jde dále šťáva, ... U hibernace podobně s tím, že RAM se uloží na disk.

Re:Uspání virtuálního PC
« Odpověď #2 kdy: 07. 01. 2020, 13:47:15 »
Ale dotaz byl na uspání virtuálního stroje, ne hostitelského serveru.
Zběžným nakouknutím jsem zjistil, že Hyper-V BIOS toto nejspíš nepodporuje, takže virtualizované Windows 10 možnost uspání ani nenabízejí.

k3dAR

  • *****
  • 3 193
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Uspání virtuálního PC
« Odpověď #3 kdy: 07. 01. 2020, 17:27:07 »
jde o to proc to chces, zda vyzadujes aby virtualizovanej os prosel vlastnim procesem suspendu nebo hibernace, nebo ti jde o to aby virtual byl "nejak" uspanej(=nezral cpu,io,lan) a nejak hibernovanej(=+uvolnil ram)... v druhem pripade, z praxe:
hostitel Xubuntu 18.04 64bit, virtualizace kvm/qemu/virt-manager, virtual W10 64bit:
- suspend - v menu VirtualniStroj dam "uspat" (~pausa), pro probuzeni Pokracovat
- hibernace - v menu VirualniStroj dam "Vypnout/Ulozit", pro probuzeni Obnovit

Re:Uspání virtuálního PC
« Odpověď #4 kdy: 07. 01. 2020, 21:17:27 »
- hibernace - v menu VirualniStroj dam "Vypnout/Ulozit", pro probuzeni Obnovit
Běžně to takto přes virt-manager nepoužívám, tak jsem to zkusil na VM s Win 7. Po obnovení je na hodinách ve VM čas z doby "Uložení" a ani po několika minutách se nesrovnal. Také se mi ve VM začaly objevovat grafické artefakty (používám QXL což je výchozí ovladač ve virt-manageru).

- suspend - v menu VirtualniStroj dam "uspat" (~pausa), pro probuzeni Pokracovat
Toto mně fungovalo jen když jsem VM s Win 7 pozastavil na jednotky minut. Pokud jsem VM pozastavil na cca 15 min, tak po obnovení VM sice fungovala myš, ale Windows nijak nereagoval. Po chvilce vyskočila hláška:
"libvirt.libvirtError: Při operaci překročen časový limit: nedaří se získat zámek změny stavu (drženo monitor=remoteDispatchDomainResume)". Takto se mi to u Win 7 stalo několikrát.
Zkusil jsem to i na VM s Debianem a výsledek stejný - po obnovení VM po 15 minutách Debian nereagoval a pak stejná chybová hláška. Napodruhé VM s Debianem fungovala i po 15 minutách a čas se během 1-2 minut srovnal.

Obě VM jsou už pár let staré, takže možná si dnes virt-manager vytváří VM s jinou konfigurací kde tento problém není. Tys takový problém nezaznamenal?


Re:Uspání virtuálního PC
« Odpověď #5 kdy: 08. 01. 2020, 09:05:07 »
Máte v tom Windows stroji naistalované guest tools? https://www.linux-kvm.org/page/WindowsGuestDrivers

Re:Uspání virtuálního PC
« Odpověď #6 kdy: 08. 01. 2020, 11:51:27 »
zda vyzadujes aby virtualizovanej os prosel vlastnim procesem suspendu nebo hibernace, nebo ti jde o to aby virtual byl "nejak" uspanej(=nezral cpu,io,lan)
Ano, první možnost, že sám guest OS provede rituál S3. Naproti tomu "uspání" tlačítkem pause z rozhraní virtualizačního nástroje je zásah z vnějšího světa, který vůbec nezávisí na tom jaký OS běží uvnitř či zda to platforma virtualizačního nástroje umí.

Re:Uspání virtuálního PC
« Odpověď #7 kdy: 08. 01. 2020, 12:51:21 »
Máte v tom Windows stroji naistalované guest tools? https://www.linux-kvm.org/page/WindowsGuestDrivers
Mám tam nainstalované Virtio ovladače (virtio-scsi, virtio-ethernet, virtio-serial, virtio-balloon) no a ten qxl. Jelikož se mi to stalo i u VM s Debianem, tak virtio ovladače s tím podle mě nesouvisí.

Zkusím to dnes ještě párkrát, uvidíme jestli to byl včera jen náhodný problém libvirtu.

Re:Uspání virtuálního PC
« Odpověď #8 kdy: 08. 01. 2020, 15:16:40 »
zda vyzadujes aby virtualizovanej os prosel vlastnim procesem suspendu nebo hibernace, nebo ti jde o to aby virtual byl "nejak" uspanej(=nezral cpu,io,lan)
Ano, první možnost, že sám guest OS provede rituál S3. Naproti tomu "uspání" tlačítkem pause z rozhraní virtualizačního nástroje je zásah z vnějšího světa, který vůbec nezávisí na tom jaký OS běží uvnitř či zda to platforma virtualizačního nástroje umí.

Muzu se zeptat na co to potrebujes? Popravde mi to neni moc jasne....pokud virtual nic nedela, zere uplne minimum systemovych prostredku, host stejne musi bezet kvuli zbylym virtualkam, a pokud tim chces setrit treba pamet, tak mas spis spatne nadimenzovane prostredi. Cim ho chces navic z toho suspendu probouzet?

Re:Uspání virtuálního PC
« Odpověď #9 kdy: 08. 01. 2020, 16:48:26 »
Máte v tom Windows stroji naistalované guest tools? https://www.linux-kvm.org/page/WindowsGuestDrivers
Mám tam nainstalované Virtio ovladače (virtio-scsi, virtio-ethernet, virtio-serial, virtio-balloon) no a ten qxl. Jelikož se mi to stalo i u VM s Debianem, tak virtio ovladače s tím podle mě nesouvisí.
Zkusím to dnes ještě párkrát, uvidíme jestli to byl včera jen náhodný problém libvirtu.
Tak jsem to dnes ještě zkusil - pauznul jsem VM Win7 i VM Debian9 na cca 50 minut a ani jedna z nich se neprobrala. V hlavním okně virt-managera jsou obě VM uvedeny jako "spuštěné", ale když nahoře v menu kliknu na "Otevřít", tak se cca 10 sekund nic neděje a poté se místo GUI daného OS objeví hláška:
Citace
Chyba při připojování ke grafické konzoli:
Při operaci překročen časový limit: nedaří se získat zámek změny stavu (drženo monitor=remoteDispatchDomainResume)
Zkoušel jsem se připojit přes Remote-viewer a taky se nepřipojí, jen nápis "Connecting ...". Zkrátka to vypadá, že OS po probuzení totálně vytuhne. Díval jsem se jestli v těch VM nejsou nastaveny nějaké exotické zařízení, ale zdá se, že ne. Pokud pauznu VM na pár sekund nebo minut, tak to naopak funguje jak má, takže mám podezření, že se OS nevyrovná s rozdílným časem po probuzení. Nevím, je to jen odhad, protože nevím jak to debbugnou. Testoval jsem na hostiteli Manjaro.

Re:Uspání virtuálního PC
« Odpověď #10 kdy: 08. 01. 2020, 17:15:52 »
Citace
takže mám podezření, že se OS nevyrovná s rozdílným časem po probuzení. Nevím, je to jen odhad, protože nevím jak to debbugnou.
co na guesta nainstalovat ntp daemona, případně pod Windows zatrhnout tahání času z Internetu, aby si synchronizoval ten čas? třeba pak přestane zlobit, pokud by to bylo tímhle.

Re:Uspání virtuálního PC
« Odpověď #11 kdy: 08. 01. 2020, 18:08:06 »
Citace
takže mám podezření, že se OS nevyrovná s rozdílným časem po probuzení. Nevím, je to jen odhad, protože nevím jak to debbugnou.
co na guesta nainstalovat ntp daemona
To na Debianu9 nastavené je. Když pozastavím VM Debianu na pár minut, tak po probuzení VM se po 1-2 minutách čas synchronizuje.

případně pod Windows zatrhnout tahání času z Internetu
To je také ve Win nastavené, ale jde o to, že když VM hned po probuzení vytuhne, tak se nic nezesynchronizuje.

Na netu jsem našel pár bugů, které se týkaly obnovení VM, např. https://bugzilla.redhat.com/show_bug.cgi?id=1635581 , ale žádné řešení. Jelikož to nepoužívám, tak se mi tomu nechce věnovat čas - jen jsem to zkusil. Jen mě zajímá jestli to na jiných distribucích funguje spolehlivě nebo jestli s takovým probouzením virtuálky bývají problémy.

k3dAR

  • *****
  • 3 193
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Uspání virtuálního PC
« Odpověď #12 kdy: 08. 01. 2020, 22:10:36 »
@LarryLin pauzu sem pouzival casto pravazne s W7 a castecne s W10 na >=hodinu, neozivenej cas sem neresil, nicemu to nevadilo...

ulozeni sem pouzil jen obcas, vcera zkusil W10Pro64bit ulozit na hodinu, probuzeni bez problemu, ulozil znovu a chtel probudit ted po ~24h a problem:

Kód: [Vybrat]
Chyba pri obnovovani domeny:
operation failed: domain is not running"
Nedari se navazat v chodu domeny. Prejete si odebrat zachyceny stav a provest normalni spusteni?

Traceback (most recent call last):
  File "/usr/local/share/virt-manager/virtManager/asyncjob.py", line 75, in cb_wrapper
    callback(asyncjob, *args, **kwargs)
  File "/usr/local/share/virt-manager/virtManager/asyncjob.py", line 111, in tmpcb
    callback(*args, **kwargs)
  File "/usr/local/share/virt-manager/virtManager/object/libvirtobject.py", line 66, in newfn
    ret = fn(self, *args, **kwargs)
  File "/usr/local/share/virt-manager/virtManager/object/domain.py", line 1355, in startup
    self._backend.create()
  File "/usr/lib/python3/dist-packages/libvirt.py", line 1062, in create
    if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirt.libvirtError: operation failed: domain is not running

problem s casem asi neni, nastavil sem cas jako ${cas_ulozeni}+5m a stejna hlaska (qcow2 image i domain.save soubory maji cas zmeny ze vcera = po zmene casu 5m pred)

k3dAR

  • *****
  • 3 193
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Uspání virtuálního PC
« Odpověď #13 kdy: 08. 01. 2020, 22:16:02 »
btw: v en_US: Error restoring domain: operation failed: domain is not running

EDIT: a celkem me zarazi ze google na to najde jen 1 vysledek a to jeste irelevantni
« Poslední změna: 08. 01. 2020, 22:18:43 od k3dAR »

Re:Uspání virtuálního PC
« Odpověď #14 kdy: 08. 01. 2020, 23:03:49 »
Mně to nedalo a taky jsem ještě něco zkusil:

1) Ve virt-manageru jsem spustil VM Windows7
2) Ukončil jsem virt-managera i libvirtd
3) Napojil jsem se na VM napřímo:
Kód: [Vybrat]
sudo nc -U /var/lib/libvirt/qemu/domain-2-windows7/monitor.sock4) Pauznul jsem VM pomocí QMP:
Kód: [Vybrat]
{ "execute": "qmp_capabilities" }
{ "execute": "stop" }
5) nechal jsem cca hodinu odležet
6) Probudil jsem VM:
Kód: [Vybrat]
{ "execute": "cont" }
Takto jsem to udělal 2x a VM nevytuhla ani jednou, přitom když jsem pauzoval ve virt-manageru na desítky minut, tak VM s Win7 vytuhla vždy. Takže si myslím, že to vytuhnutí při pauznutí a obnovení ve virt-manageru je zřejmě bug libvirtu (nějaký problém se zámky stavů).

Ale to není všechno. Po probuzení té VM jsem si všiml, že čas není opožděn, ale naopak je na hodinách víc než ve skutečnosti. Po bližším pohledu jsem si všiml, že jedna minuta trvá jen cca 6 sekund. Když jsem si hodiny rozklikl, abych viděl ty windowsovské ručičkové hodiny, tak jsem se začal smát - vteřinová ručička uháněla jako při cestování časem :). Až po několika minutách se to vrátilo do normální rychlosti. Kdybych hledal řešení s problémy s časem, tak bych asi zkusil odstranit "no-hpet" nebo přidat "-cpu hv_time ..." (což u svých VM v Qemu scriptu takto mám).

Každopádně mě Libvirt a Virt-manager zase zklamal. Zase jsem se utvrdil v tom, že někdy věci usnadňuje, ale někdy je to zase zbytečná vrstva nad Qemu, která je zdrojem bugů (snad libvirtu nekřivdím, protože to může být i bug přímo v qemu).

PS: ani já jsem přes google nenašel jasnou odpověď na "monitor=remoteDispatchDomainResume"