[QEMU/KVM]Windows guests klok out of sync na sleep

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Ben.Hahlen
  • Registratie: December 2003
  • Laatst online: 11-09 11:32
Een paar weken terug heb ik de sprong gewaagd om na jaren VirtualBox gebruik over te stappen naar QEMU/KVM onder Fedora 21, op mijn laptop.
Over het algemeen ben ik zeer tevreden over QEMU/KVM, het CPU gebruik lijkt wat lager te liggen dan met VirtualBox en ik begin ook aan de interface en CLI te wennen.

Één van mijn belangrijkste VM's, is een Windows VM, welke ik gebruik voor Office taken (Outlook, Powerpoint, Word, etc).
Mijn laptop gaat in suspend door het dichtklappen van de laptop lid, en bij het openen kan ik weer rustig verder werken.
Echter, en dit is het probleem: de tijd van de Windows VM staat dan nog op de tijd zoals die was toen ik de laptop in suspend deed. QEMU probeert dit automatisch bij te werken, door extra ticks te zenden. Alleen: als je de laptop een paar uur in suspend hebt gehad, dan duurt het wel even voordat de tijd bij is, wat ook betekent dat je niet netjes je mail kan binnenhalen e.d., want de tijd klopt niet.

Nu ben ik al een tijd aan het zoeken geweest, en het zit volgens mij in de clock offset tag in de VM.xml van QEMU. Maar ik kan de juiste syntax niet vinden.

Iemand die dit probleem heeft gehad en het heeft weten op te lossen?
Op Google is genoeg te vinden, maar niet de oplossing die ik zoek.

Extra info:
Het relevante stuk van de vm.xml is dit:
XML: /etc/libvirt/qemu/VM.xml
1
2
3
<clock offset='localtime'>
  <timer name='hypervclock' present='yes'/>
</clock>


Ik heb een script gemaakt welke de draaiende VMs suspend bij het sluiten van de lid. Het script is het volgende:
Bash: /usr/lib/systemd/system-sleep/suspend-resume-vms.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/bin/bash
PS_VM=/var/log/paused_vms
SR_LOG=/var/log/sleep-resume.log

is_there_virsh () {
if [[ -z `which virsh` ]]
then echo "no actions for suspend or resume required" >> $SR_LOG
exit 0
fi
}
case $1/$2 in
    pre/*)
        echo "" >> $SR_LOG
  echo "`/bin/date +%Y%m%d-%H%M%S` - Going to state [$2]" >> $SR_LOG
        is_there_virsh
  echo "Suspending running VMs" >> $SR_LOG
        for i in $(virsh list --state-running | grep running | awk {'print $2'})
        do echo $i > $PS_VM
     echo $i >> $SR_LOG
           virsh suspend $i
           echo "`/bin/date +%Y%m%d-%H%M%S` - Done suspending VMs" >> $SR_LOG
        done
        ;;
    post/*)
  echo "`/bin/date +%Y%m%d-%H%M%S` - Waking up from state [$2]" >> $SR_LOG
        is_there_virsh
        echo "Resuming suspended VMs" >> $SR_LOG
        for i in $(cat $PS_VM)
        do echo $i >> $SR_LOG
     virsh resume $i
     rm $PS_VM
           echo "`/bin/date +%Y%m%d-%H%M%S` - Done resuming VMs" >> $SR_LOG
 
        done
        ;;
esac

Blog


Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 11-09 21:28

CAPSLOCK2000

zie teletekst pagina 888

Doen al je VM's dit of alleen die ene? Zit er nog verschil tussen Linux en Windows VMs?

Het kan zijn zijn dat je nog wat drivers moet installeren op Windows. Bv deze: https://fedoraproject.org...o_Drivers#Direct_download

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • Ben.Hahlen
  • Registratie: December 2003
  • Laatst online: 11-09 11:32
Alleen die ene VM, maar dat komt voornamelijk omdat ik, op dit moment, alleen maar die Windows VM in gebruik heb.
Een vriend van mij heeft meerdere VM's draaien, daar vraag ik het wel even na.

De drivers die ik heb gebruikt zijn alleen de VirtIO drivers. Ik zou me nog kunnen voorstellen dat de Guest Agent misschien iets helpt, maar ik kan daar verder helemaal niks over vinden. Wat deze doet en welk nut die heeft.

Just checked: alleen Windows VM's hebben er last van. Linux VM's niet.
Guest Agent installeren helpt ook niet...

Daarbij heb ik nu weer een ander probleem dat mijn laptop niet meer in suspend wil als de WinVM draait... :S

[ Voor 21% gewijzigd door Ben.Hahlen op 15-05-2015 15:24 ]

Blog


Acties:
  • 0 Henk 'm!

  • Ben.Hahlen
  • Registratie: December 2003
  • Laatst online: 11-09 11:32
Goed, een paar dagen verder, nog steeds niks kunnen vinden wat de oplossing bied, so far.
Zijn er nog mensen die ook de overweging KVM vs VirtualBox hebben gemaakt? Waarom voor welke gekozen?

Blog


Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 11-09 21:28

CAPSLOCK2000

zie teletekst pagina 888

Doet die Windows bak zelf nog iets met de tijd, bv NTP? Mogelijk zit dat in de weg.

Ik heb gekozen voor KVM omdat VirtualBox niet veilig met data omgaat, het negeert fsync. Dat is wel lekker snel maar niet erg veilig. Verder heb ik een afkeer van alles waar Oracle zich mee bemoeit. Ten derde vind ik KVM prettiger omdat het helemaal in de Linux-kernel zit en geen extra drivers nodig heeft zoals VB (ik weet niet zeker of dat tegenwoordig nog waar is).

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • Ben.Hahlen
  • Registratie: December 2003
  • Laatst online: 11-09 11:32
De Windows bak doet inderdaad NTP, maar dat had ik op VBox ook en dat gaf geen problemen.
Mijn vermoeden, op dit moment, dat de VM het niet herkent dat ie in sleep gaat. De VBoxVM leek ook te herkennen dat ie een "laptop" was en gaf ook een batterij icoon aan. Dat heb ik nu niet. Dus ik vermoed dat het sleep commando niet helemaal goed doorkomt, ofzo.

Het fsync gebeuren heb ik mij nog nooit in verdiept, ga ik nog eens naar kijken.
VBox heeft nog steeds extra "drivers" nodig, maar dat gaat redelijk pijnloos, middels dkms. Bij een kernel-update wordt dat automagisch gebuild.

Blog


Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 11-09 21:28

CAPSLOCK2000

zie teletekst pagina 888

Als je NTP doet moet je dat of op de host of op de client doen, niet allebij want dan willen ze allebij tegelijk de klok aanpassen om voor elkaar te compenseren. Dat geeft allerlei vreemde problemen. Ik denk niet dat het door oorzaak van je huidige probleem is maar het zou kunnen.

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • Ben.Hahlen
  • Registratie: December 2003
  • Laatst online: 11-09 11:32
Opgelost!
Had op FedoraForum ook een post gemaakt. Daar werd ik gewezen op deze bug en meer specifiek op comment 23.

De guest agent alleen was niet genoeg. Naast het moeten hebben van het channel in je configuratie, moet je het resumen een commando aanroepen zodat de domaintime gesynct wordt:
code:
1
virsh domtime <naam> --now

En dat werkt :-).

Blog

Pagina: 1