instances libvirt config not present post-upgrade
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
tripleo |
Fix Released
|
High
|
Adam Gandelman |
Bug Description
After an image based overcloud upgrade, instances that were ACTIVE prior to rebuilding are no longer running, tho their nova status shows otherwise:
| 75c5d266-
On the compute host that hosts the missing instance, there is no sign of it. Bouncing the nova-compute service shows:
2014-07-01 00:56:46.257 4034 INFO oslo.messaging.
2014-07-01 00:56:46.278 4034 INFO oslo.messaging.
2014-07-01 00:56:49.851 4034 INFO oslo.messaging.
2014-07-01 00:56:49.956 4034 WARNING nova.compute.
2014-07-01 00:56:50.174 4034 WARNING nova.compute.
The instance is not defined in libvirt, as I would have expected:
root@overcloud-
Id Name State
-------
Tho its directory in nova's state path is present:
root@overcloud-
/mnt/state/
/mnt/state/
/mnt/state/
/mnt/state/
/mnt/state/
I believe we need to ensure libvirt's state directory ends up on the persistent partition with the rest.
Changed in tripleo: | |
assignee: | nobody → Adam Gandelman (gandelman-a) |
status: | New → In Progress |
no longer affects: | tripleo-image-elements (Ubuntu) |
Changed in tripleo: | |
importance: | Undecided → High |
Changed in tripleo: | |
status: | Fix Committed → Fix Released |
summary: |
- instances no longer running post-upgrade + instances libvirt config not present post-upgrade |
We also need to move /etc/libvirt/ to the stateful partition. Removing a libvirt domain out of band from nova will result in an ACTIVE instance with NO_STATE:
https:/ /git.openstack. org/cgit/ openstack/ nova/tree/ nova/compute/ manager. py#n5443
libvirt essentially stores all domain/network/etc entries as xml in /etc/libvirt/
Package installation populates /etc/libvirt with some stuff that needs to be moved to the stateful partition before the service starts. Note the default network entries at install time:
$ tree /etc/libvirt/ server. xml ipv4.xml ip-spoofing. xml mac-spoofing. xml broadcast. xml l2-traffic. xml rarp-traffic. xml self-rarp. xml self.xml qemu/networks/ default. xml shell.conf
/etc/libvirt/
├── hooks
├── libvirt.conf
├── libvirtd.conf
├── lxc.conf
├── nwfilter
│ ├── allow-arp.xml
│ ├── allow-dhcp-
│ ├── allow-dhcp.xml
│ ├── allow-incoming-
│ ├── allow-ipv4.xml
│ ├── clean-traffic.xml
│ ├── no-arp-
│ ├── no-arp-
│ ├── no-arp-spoofing.xml
│ ├── no-ip-multicast.xml
│ ├── no-ip-spoofing.xml
│ ├── no-mac-
│ ├── no-mac-spoofing.xml
│ ├── no-other-
│ ├── no-other-
│ ├── qemu-announce-
│ └── qemu-announce-
├── qemu
│ └── networks
│ ├── autostart
│ │ └── default.xml -> /etc/libvirt/
│ └── default.xml
├── qemu.conf
├── qemu-lockd.conf
├── virtlockd.conf
└── virt-login-