Bug 22321 - Die Einstellung der RTC Referenz kann nicht wieder zurückgesetzt werden
Die Einstellung der RTC Referenz kann nicht wieder zurückgesetzt werden
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: Virtualization - Xen
UCS 2.4
Other Linux
: P5 normal (vote)
: UCS 2.4-3
Assigned To: Philipp Hahn
Felix Botner
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2011-04-27 13:45 CEST by Felix Botner
Modified: 2011-09-14 10:57 CEST (History)
3 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:
hahn: Patch_Available+


Attachments
fix domxml-from-native xen-sxpr for /domain/clock/@offset='localtime' (1.05 KB, patch)
2011-04-27 15:19 CEST, Philipp Hahn
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Felix Botner univentionstaff 2011-04-27 13:45:17 CEST
Mit den Anpassungen aus Bug #22259 für DVS kann man die RTC Referenz einer virtuellen Instanz auf utc oder localtime setzen. Nach dem Anlegen einer Instanz kann man diese Einstellung auch Ändern, dies wird auch in der XEN Config berücksichtigt, aber man kann es nicht wieder zurück Ändern. Libvirt denkt noch das die ursprüngliche Einstellung aktiviert ist und ändert dann nichts. 

Instanz angelegt 

-> virsh edit 
   <clock offset='utc'/> gesetzt und geändert in
   <clock offset='localtime'/>

-> cd  /var/lib/xend/domains
-> grep -r localtim *
85664d3f-68dd-a4c2-4d2f-be7f276b95f0/config.sxp:    (platform ((device_model /usr/lib64/xen/bin/qemu-dm) (localtime 1)))
85664d3f-68dd-a4c2-4d2f-be7f276b95f0/config.sxp:            (localtime 1)

-> virsh edit
   <clock offset='utc'/> wird wieder angezeigt, obwohl localtime in
   der Konfig steht

Workaround:

-> virsh edit
   <clock offset='utc'/> an andere Position verschieben
Comment 1 Philipp Hahn univentionstaff 2011-04-27 15:16:08 CEST
Bug in libvirt-0.8.7 (oder Xen-3.4?):

# cat /tmp/pv.xml 
<domain type='xen'>
  <name>pv</name>
  <uuid>1e680b4c-f1d3-2d6b-b561-bcdec332736a</uuid>
  <memory>524288</memory>
  <vcpu>1</vcpu>
  <os>
    <type>linux</type>
    <kernel>/boot/vmlinuz</kernel>
  </os>
  <clock offset='localtime'/>
  <devices>
    <emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
  </devices>
</domain>

# virsh domxml-to-native xen-sxpr /tmp/pv.xml | tee /tmp/pv.sxpr
(vm
 (name 'pv')
 (memory 512)
 (maxmem 512)
 (vcpus 1)
 (uuid '1e680b4c-f1d3-2d6b-b561-bcdec332736a')
 (on_poweroff 'destroy')
 (on_reboot 'restart')
 (on_crash 'destroy')
 (localtime 1)
 (image
  (linux
   (kernel '/boot/vmlinuz')
   (device_model '/usr/lib64/xen/bin/qemu-dm')
)))

# xm new -F /tmp/pv.sxpr
# grep -B3 -A3 localtime /var/lib/xend/domains/1e680b4c-f1d3-2d6b-b561-bcdec332736a/config.sxp
(domain
    (platform
        (
            (device_model /usr/lib64/xen/bin/qemu-dm)
            (localtime 1)
        )
    )
    (image
        (linux
            (kernel /boot/vmlinuz)
            (localtime 1)
            (device_model /usr/lib64/xen/bin/qemu-dm)
        )
    )

# cat /tmp/hvm.xml 
<domain type='xen'>
  <name>hvm</name>
  <uuid>352c035b-28e4-4a80-a2d0-58cad9419ac2</uuid>
  <memory>524288</memory>
  <vcpu>1</vcpu>
  <os>
    <type>hvm</type>
    <loader>/usr/lib/xen/boot/hvmloader</loader>
    <boot dev='hd'/>
  </os>
  <clock offset='localtime'/>
  <devices>
    <emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
  </devices>
</domain>

# virsh domxml-to-native xen-sxpr /tmp/hvm.xml | tee /tmp/hvm.sxpr
(vm
 (name 'hvm')
 (memory 512)
 (maxmem 512)
 (vcpus 1)
 (uuid '352c035b-28e4-4a80-a2d0-58cad9419ac2')
 (on_poweroff 'destroy')
 (on_reboot 'restart')
 (on_crash 'destroy')
 (localtime 1)
 (image
  (hvm
   (kernel '/usr/lib/xen/boot/hvmloader')
   (vcpus 1)
   (boot c)
   (usb 1)
   (parallel none)
   (serial none)
   (localtime 1)
   (device_model '/usr/lib64/xen/bin/qemu-dm')
)))

# xm new -F /tmp/hvm.sxpr -x
# grep -B3 -A3 localtime /var/lib/xend/domains/352c035b-28e4-4a80-a2d0-58cad9419ac2/config.sxp
(domain
    (platform
        (
            (localtime 1)
        )
    )
    (image
        (hvm
            (localtime 1)
        )
    )
)
Comment 2 Philipp Hahn univentionstaff 2011-04-27 15:19:07 CEST
Created attachment 3233 [details]
fix domxml-from-native xen-sxpr for /domain/clock/@offset='localtime'

Patch ist für libvirt+git, lässt sich aber auch auch 0.8.7 anwenden:
patch libvirt-0.8.7/src/xen/xend_internal.c 22321_libvirt_xen_localtime.diff
Comment 3 Philipp Hahn univentionstaff 2011-07-22 16:06:25 CEST
Patch wurde für libvirt-0.8.7 angepasst uns als 72_xen_localtime.patch eingespielt.

svn9507, libvirt-0.8.7-1.88.201107221604
Comment 4 Philipp Hahn univentionstaff 2011-07-26 09:55:07 CEST
\item Für Xen-Instanzen wurde ein Fehler behoben, wenn die Realzeituhr in der lokalen Zeitzone anstatt in UTC läuft (\ucsBug{22321}).
Comment 5 Felix Botner univentionstaff 2011-07-26 10:30:57 CEST
OK
Funktioniert für vollvirtualisierte Maschinen.
Changelog Eintrag vorhanden.

Zwei Dinge noch:

   * paravirtualisierte Maschinen laufen immer mit utc, dies kann man auch nicht
     per uvmm ändern, das ist wahrschein XEN intern so vorgegeben, oder?

   * Manchmal kam es vor, dass ich die RTC Referenz geändert habe, per virsh
     dumpxml war dies auch zu sehen, im UMC UVMM aber erst nach einem refresh
     (ist wohl eher ein Anzeige Problem im UMC UVMM)
Comment 6 Philipp Hahn univentionstaff 2011-08-02 12:18:35 CEST
(In reply to comment #5)
>    * paravirtualisierte Maschinen laufen immer mit utc, dies kann man auch
> nicht
>      per uvmm ändern, das ist wahrscheinlich XEN intern so vorgegeben, oder?

Das war noch ein Bug: Bei HV-Maschinen steht die Information in domain/image/hvm/localtime, bei PV-Maschinen in domain/image/linux/localtime.

Der Patch wurde entsprechend angepasst: svn9530, libvirt_0.8.7-1.89.201108021149

Getestet wurden {PV,HV} * {utc,localtime} * {running,shutdown}:
1. vorher ntp deaktivieren
2. 'date' zeigt bei utc die richtige Zeit an, bei localtime derzeit +2h.
3. "hwclock --show" funktioniert bei PV nicht, da dort kein RTC emuliert wird.
4. "xenstore-ls | egrep 'utc|rtc|time'" zeigt bei HV rtc/timeoffset=0 an. Das scheint aber "normal" zu sein und wurde nicht weiter untersucht.

>    * Manchmal kam es vor, dass ich die RTC Referenz geändert habe, per virsh
>      dumpxml war dies auch zu sehen, im UMC UVMM aber erst nach einem refresh
>      (ist wohl eher ein Anzeige Problem im UMC UVMM)

Der UVMMd aktualisiert seine Daten intervallmäßig alle 10 Sekunden, von daher ist das Normal. Xen sendet leider nicht wie KVM ein Event an libvirtd (und damit auch an UVMMd), wenn sich eine Konfiguration ändert. Dadurch kann es zu den beobachteten Verzögerungen kommen.
Comment 7 Felix Botner univentionstaff 2011-08-25 15:29:47 CEST
OK, funktioniert mit XEN und KVM

Changelog Eintrag vorhanden.
Comment 8 Sönke Schwardt-Krummrich univentionstaff 2011-09-14 10:57:11 CEST
UCS 2.4-3 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer
neueren Version von UCS erneut auftreten, so sollte der Bug dupliziert werden:
"Clone This Bug".