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:
Ik heb een script gemaakt welke de draaiende VMs suspend bij het sluiten van de lid. Het script is het volgende:
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 |