Univention Bugzilla – Bug 29532
Xen Bootmedium ändern
Last modified: 2012-12-12 21:07:54 CET
Ich habe eine 3.0 Instanz unter Xen in UVMM installiert. Nach der Installation habe ich die Instanz beendet und versucht das Bootmedium von DVD auf die Festplatte zu ändern. Ich bekomme keine Fehlermeldung, allerdings bootet Xen wieder vom CDROM-Laufwerk, sobald ich die Instanz wieder starte. Logmeldungen aus der UVMM UMC Logdatei: 04.12.12 09:16:16.772 PARSER ( INFO ) : UMCP REQUEST 135460897670744-673 parsed successfully 04.12.12 09:16:16.772 MODULE ( INFO ) : Received request 135460897670744-673 04.12.12 09:16:16.772 PROTOCOL ( INFO ) : Received UMCP COMMAND REQUEST 135460897670744-673 04.12.12 09:16:16.772 MODULE ( INFO ) : Executing ['uvmm/domain/put'] 04.12.12 09:16:16.772 MODULE ( INFO ) : Creating a paravirtual drive 04.12.12 09:16:16.772 MODULE ( INFO ) : Creating a paravirtual drive 04.12.12 09:16:16.772 MODULE ( INFO ) : Sending request DOMAIN_DEFINE to UVMMd 04.12.12 09:16:16.772 MODULE ( INFO ) : There are currently 1 threads running 04.12.12 09:16:16.772 MODULE ( INFO ) : Starting request thread ... 04.12.12 09:16:16.772 MODULE ( INFO ) : Thread is working on a request 04.12.12 09:16:16.773 MODULE ( INFO ) : Sending request DOMAIN_DEFINE to UVMM daemon ... 04.12.12 09:16:16.773 MODULE ( INFO ) : Setting request arguments ... 04.12.12 09:16:16.773 MODULE ( INFO ) : Creating UVMM daemon connection 04.12.12 09:16:16.773 MODULE ( INFO ) : Sending request: Packet: command: DOMAIN_DEFINE domain: <univention.uvmm.protocol.Data_Domain object at 0x197cf50> uri: xen://xen874.deadlock87.local/ 04.12.12 09:16:19.270 MODULE ( INFO ) : Received response: Packet: data: 53ff29dc-423b-2f52-ad19-d4cac6650a56 messages: [] status: OK 04.12.12 09:16:19.270 MODULE ( INFO ) : Connection to UVMMd is closed 04.12.12 09:16:19.270 MODULE ( INFO ) : Returning result from UVMMd 04.12.12 09:16:19.319 MODULE ( INFO ) : Thread returned result: (True, '53ff29dc-423b-2f52-ad19-d4cac6650a56') 04.12.12 09:16:19.319 MODULE ( INFO ) : New domain: success: True, data: 53ff29dc-423b-2f52-ad19-d4cac6650a56 04.12.12 09:16:19.319 PROTOCOL ( INFO ) : Sending UMCP RESPONSE 135460897670744-673 04.12.12 09:16:19.319 MODULE ( INFO ) : Thread is free for another request
Aus dem Firebug: 200 OK 12.65s dojo.js (Zeile 2) HeaderPostAntwortJSONCookies JSON options Object { nodeURI= "xen://xen874.deadlock87.local/" , domain={...}} Quelle {"options":{"nodeURI":"xen://xen874.deadlock87.local/","domain":{"vnc_host":null,"kernel":null,"vnc_port":"","profileData":{"pvdisk":true,"vnc":true,"rtcoffset":"utc","diskspace":"20GB","os":"UCS 3.0","ram":"1024MB","cpus":true,"name":"UCS 3.0","interface":"eth0","advkernelconf":false,"pvcdrom":true,"pvinterface":true,"kblayout":"de","name_prefix":"ucs30-","arch":"automatic","virttech":"xen-xen"},"snapshots":null,"cmdline":null,"initrd":null,"suspended":null,"curMem":0,"uuid":"53ff29dc-423b-2f52-ad19-d4cac6650a56","rtc_offset":"utc","boot":[],"state":"SHUTOFF","type":"xen-xen","annotations":{"profile":"cn=UCS 3.0,cn=xen,cn=Profiles,cn=Virtual Machine Manager,dc=deadlock87,dc=local","contact":"","os":"UCS 3.0","uuid":"53ff29dc-423b-2f52-ad19-d4cac6650a56","description":""},"maxMem":"1024.0 MB","available":true,"vnc":true,"description":"","interfaces":[{"target":null,"script":"vif-bridge","source":"eth0","mac_address":"00:16:3e:33:c3:41","model":"netfront","type":"bridge","$id$":1}],"cputime":[0,3.702475940190792e-7,4.865409187290496],"domain_type":"xen","profile":"cn=UCS 3.0,cn=xen,cn=Profiles,cn=Virtual Machine Manager,dc=deadlock87,dc=local","graphics":[{"passwd":null,"keymap":"de","autoport":true,"type":"vnc","port":-1,"listen":"0.0.0.0"}],"bootloader":"/usr/bin/pygrub","arch":"i686","vnc_remote":true,"name":"xen-ucs30-87.200","disks":[{"driver_type":"aio","target_bus":"xen","source":"/var/lib/libvirt/images/xen-ucs30-87.200-0.raw","volumeType":"file","driver":"tap2","driver_cache":"","readonly":false,"type":"file","device":"disk","target_dev":"xvdb","volumeFilename":"xen-ucs30-87.200-0.raw","paravirtual":true,"pool":"default","size":"20.0 GB","$id$":2},{"driver_type":"aio","target_bus":"xen","source":"/mnt/iso-images/ucs/ucs_3.0-2-20120717145513-dvd-i386.iso","volumeType":"file","driver":"tap2","driver_cache":"","readonly":true,"type":"file","device":"cdrom","target_dev":"xvda","volumeFilename":"ucs_3.0-2-20120717145513-dvd-i386.iso","paravirtual":true,"pool":"ISO ucs","size":"1.8 GB","$id$":1}],"bootloader_args":"-q","vnc_password":"","vcpus":"1","contact":"","kblayout":"de","os_type":"xen","os":"UCS 3.0","nodeURI":"xen://xen874.deadlock87.local/","domainURI":"xen://xen874.deadlock87.local/#53ff29dc-423b-2f52-ad19-d4cac6650a56","boot_hvm":[],"boot_pv":"/var/lib/libvirt/images/xen-ucs30-87.200-0.raw"}}} Zumindest scheint das Frontend den richtigen Wert (boot_pv) an das Backend zu liefern. Im get ist zu sehen, dass dort der Wert nicht wieder zurück kommt: POST http://10.201.87.1/umcp/command/uvmm/snapshot/query 200 OK 720ms dojo.js (Zeile 2) 200 OK 400ms dojo.js (Zeile 2) HeaderPostAntwortJSONCookies {"status": 200, "message": null, "result": {"vnc_host": null, "kernel": null, "vnc_port": null, "profileData": {"pvdisk": true, "vnc": true, "rtcoffset": "utc", "diskspace": "20GB", "os": "UCS 3.0", "ram": "1024MB", "cpus": true, "name": "UCS 3.0", "interface": "eth0", "advkernelconf": false, "pvcdrom": true, "pvinterface": true, "kblayout": "de", "name_prefix": "ucs30-", "arch": "automatic", "virttech": "xen-xen"}, "snapshots": null, "cmdline": null, "initrd": null, "suspended": null, "curMem": 0, "uuid": "53ff29dc-423b-2f52-ad19-d4cac6650a56", "rtc_offset": "utc", "boot": [], "state": "SHUTOFF", "type": "xen-xen", "annotations": {"profile": "cn=UCS 3.0,cn=xen,cn=Profiles,cn=Virtual Machine Manager,dc=deadlock87,dc=local", "contact": "", "os": "UCS 3.0", "uuid": "53ff29dc-423b-2f52-ad19-d4cac6650a56", "description": ""}, "maxMem": "1024.0 MB", "available": true, "vnc": true, "description": "", "interfaces": [{"target": null, "script": "vif-bridge", "source": "eth0", "mac_address": "00:16:3e:33:c3:41", "model": "netfront", "type": "bridge"}], "cputime": [0.0, 0.0058789756054289282, 2.0113499651184212], "domain_type": "xen", "profile": "cn=UCS 3.0,cn=xen,cn=Profiles,cn=Virtual Machine Manager,dc=deadlock87,dc=local", "graphics": [{"passwd": null, "keymap": "de", "autoport": true, "type": "vnc", "port": -1, "listen": "0.0.0.0"}], "bootloader": "/usr/bin/pygrub", "arch": "i686", "vnc_remote": true, "name": "xen-ucs30-87.200", "disks": [{"driver_type": "aio", "target_bus": "xen", "source": "/mnt/iso-images/ucs/ucs_3.0-2-20120717145513-dvd-i386.iso", "volumeType": "file", "driver": "tap2", "driver_cache": "", "readonly": true, "type": "file", "device": "cdrom", "target_dev": "xvda", "volumeFilename": "ucs_3.0-2-20120717145513-dvd-i386.iso", "paravirtual": true, "pool": "ISO ucs", "size": "1.8 GB"}, {"driver_type": "aio", "target_bus": "xen", "source": "/var/lib/libvirt/images/xen-ucs30-87.200-0.raw", "volumeType": "file", "driver": "tap2", "driver_cache": "", "readonly": false, "type": "file", "device": "disk", "target_dev": "xvdb", "volumeFilename": "xen-ucs30-87.200-0.raw", "paravirtual": true, "pool": "default", "size": "20.0 GB"}], "bootloader_args": "-q", "vnc_password": null, "vcpus": 1, "contact": "", "kblayout": "de", "os_type": "xen", "os": "UCS 3.0"}}
Weiteres Debugging hat gezeigt, dass es auf UMC-Seite richtig geändert wird. Das Problem scheint im Zusammenspiel Xen <-> libvirt zu liegen.
Ein früherer Patch von mir hat das zwar in ./xenxs/xen_sxpr.c#xenParseSxprDisks für die Richtung Xen→libvirt korrigiert, aber der umgekehrte Weg libvirt→Xen wurde durch die folgende Umsortierung kaputt gemacht: libvirt sortiert die /domain/devices/disk-Einträge nach @bus und @name, weil das für das Erzeugen der Controller bei KVM notwendig ist. Xen mit PyGrub erwartet aber, daß die Reihenfolge unverändert bleibt, weil PyGrub nur auf dem ersten Laufwerk ausgeführt wird (bootable=1 wird von Xend automatisch für die erste definierte Platte gesetzt; das wird von PyGrub dann ausgewertet.) svn11143, libvirt_0.9.12-5.118.201212041354 ChangeLog: nicht notwendig, weil erst durch die neuere libvirt-Version (Bug #27612) diese Regression verursacht wird.
Ja, funktioniert jetzt.
UCS 3.1-0 has been released: http://forum.univention.de/viewtopic.php?f=54&t=2125 If this error occurs again, please use "Clone This Bug".