Univention Bugzilla – Bug 21758
Mehrfacher Crash von libvirtd mit kvm, PID-File nicht aufgeräumt
Last modified: 2013-01-17 16:29:18 CET
Beim Debuggen einer von VMWare konvertierten VM trat gerade in der KVM-Testumgebung mehrfach das Problem auf, daß sich libvirtd unsauber beendet hat. Zumindest blieb das PID-File zurück, was einen automatischen Neustart durch runit verhindert hat. Ein "rm /var/run/libvirtd.pid" von Hand hat das Problem gelöst. Ausgelöst wurde der Crash durch ungefähr folgende Sequenz: 1. "virsh edit $VM" → <domain..>...<devices>...<console type='pty'><target port='0'/></console></devices></domain> 2. "virsh start --console "$VM" 3. "virt-viewer -c qemu+ssh://.../system $VM" 4. "virsh qemu-command $VM system_reset" $ dpkg-query -W libvirt\* qemu-kvm libvirt-bin 0.8.7-1.52.201103020859 libvirt0 0.8.7-1.52.201103020859 qemu-kvm 0.12.4+dfsg-1~bpo50+1.3.201010011432
Das ist gerade nochmals passiert, daß dich der libvirtd beendet hat, aber /var/run/libvirtd.pid überlebt hat, so daß er anschließend nicht mehr per RunSv automatisch neu gestartet wurde. UNGETESTST: --- conffiles/etc/runit/univention-libvirt/run (Revision 23078) +++ conffiles/etc/runit/univention-libvirt/run (Arbeitskopie) @@ -5,4 +5,19 @@ source /etc/default/libvirt-bin +if [ -f /var/run/libvirtd.pid ] +then + read pid </var/run/libvirtd.pid || pid= + if [ -d "/proc/$pid" ] + then + exe=$(readlink /proc/$pid/exe) + if [ /usr/sbin/libvirtd = "$exe" ] + then + echo "libvirtd running $pid" + exit 1 + fi + fi + rm -f /var/run/libvirtd.pid +fi + exec /usr/sbin/libvirtd ${libvirtd_opts/-d/}
Patch hinzugefügt
Patch wurde eingebaut und erfüllt seinen Zweck: Beende ich den libvirtd und erstelle eine entsprechende pidfile, so wird diese im Verlauf automatisch gelöscht und der libvirtd wieder gestartet. Changelogeintrag ist vorhanden - verified
UCS 2.4-2 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".