Red Hat Bugzilla – Bug 1384181
fence_virtd stops working if libvirtd is restarted
Last modified: 2018-04-10 05:47:26 EDT
Description of problem: If fence_virtd.service is used for fencing, and libvirtd.service gets restarted (due to what-ever reason), fence_virtd.service stops providing valid data. Version-Release number of selected component (if applicable): fence-virt-0.3.2-2.el7.x86_64 fence-virtd-0.3.2-2.el7.x86_64 fence-virtd-libvirt-0.3.2-2.el7.x86_64 fence-virtd-multicast-0.3.2-2.el7.x86_64 libvirt-1.2.17-13.el7_2.5.x86_64 libvirt-client-1.2.17-13.el7_2.5.x86_64 libvirt-daemon-1.2.17-13.el7_2.5.x86_64 libvirt-daemon-config-network-1.2.17-13.el7_2.5.x86_64 libvirt-daemon-config-nwfilter-1.2.17-13.el7_2.5.x86_64 libvirt-daemon-driver-interface-1.2.17-13.el7_2.5.x86_64 libvirt-daemon-driver-lxc-1.2.17-13.el7_2.5.x86_64 libvirt-daemon-driver-network-1.2.17-13.el7_2.5.x86_64 libvirt-daemon-driver-nodedev-1.2.17-13.el7_2.5.x86_64 libvirt-daemon-driver-nwfilter-1.2.17-13.el7_2.5.x86_64 libvirt-daemon-driver-qemu-1.2.17-13.el7_2.5.x86_64 libvirt-daemon-driver-secret-1.2.17-13.el7_2.5.x86_64 libvirt-daemon-driver-storage-1.2.17-13.el7_2.5.x86_64 libvirt-daemon-kvm-1.2.17-13.el7_2.5.x86_64 libvirt-python-1.2.17-2.el7.x86_64 How reproducible: Always. Steps to Reproduce: 1. Start libvirtd.service 2. Configure (e.g. http://clusterlabs.org/wiki/Guest_Fencing) and start fence_virtd.service 3. Test that `fence_xvm -o list` provides valid list of VMs 4. Restart libvirtd.service 5. Test that `fence_xvm -o list` now provides empty list Actual results: $ fence_xvm -o list provides no output, thus no list of VMs Expected results: $ fence_xvm -o list should provide list of VMs as before libvirtd.service restart Additional info: Quick workaround (and possible fix) is: $ sudo systemctl edit fence_virtd.service [Unit] PartOf=libvirtd.service Resulting in: $ systemctl cat fence_virtd.service # /usr/lib/systemd/system/fence_virtd.service [Unit] Description=Fence-Virt system host daemon After=basic.target After=network.target After=syslog.target After=libvirt-qmf.service After=libvirtd.service After=corosync.service Requires=basic.target Requires=network.target [Install] WantedBy=multi-user.target [Service] Type=forking Restart=on-failure SysVStartPriority=99 Environment="FENCE_VIRTD_ARGS=-w" # Autogenerated below here EnvironmentFile=-/etc/sysconfig/fence_virtd ExecStart=/usr/sbin/fence_virtd $FENCE_VIRTD_ARGS # /etc/systemd/system/fence_virtd.service.d/override.conf [Unit] PartOf=libvirtd.service And invoking fence_virtd.service restart once libvirtd.service is restarted.
This is a result of a bug in the fence-virtd plugins that has since been fixed upstream. I think the better route is to apply that patch instead of relying on systemd to automatically restart.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2018:0680