By default the OpenStack 16 overcloud nodes do not use LVM2 volumes but it is possible with some Cinder backends, for example iSCSI or FC, that LVM2 volumes created inside OpenStack guests become visible on the overcloud nodes where the
nova-compute containers are hosted.
The following issues may appear on computes or controllers:
- LVM appears to see volume groups from my guests
- LVM is reporting that there are duplicate volume group names
- Volume detachments fail because LVM is accessing the storage
- My guests fail to boot due to problems with LVM
- The LVM on my guest machine is in a partial state due to a missing disk that actually exists
- Cinder actions fail on devices that have LVM built on them
- Cinder snapshots fail to remove correctly
- Error during live-migration with error /etc/multipath.conf does not exist
To prevent this, it is possible to use a new feature, released as Tech Preview in OpenStack Director 16.1z3, which configures an LVM2 filter when deploying or updating the overcloud stack. The feature is, by default, disabled and should be enabled passing
LVMFilterEnabled: true in a Heat environment file.
When enabled, the LVM2
global_filter will be computed starting from the list of physical devices hosting active LVM2 volumes on the host which should be sufficient for the majority of the use cases. When it isn't, the list can be extended further, manually, listing any additional block device via
LVMFilterAllowlist parameter, which supports regexp. A deny list can be configured as well, via
LVMFilterDenylist parameter; the deny list defaults to
[‘.*’] so that any block device which isn’t in the allow list will be in fact ignored and not scanned by the LVM2 tools.
Any of the template parameters can also be set per-role; for example, to enable the feature only on "Compute" nodes and deny to it access to any device name starting with
/dev/sd, use the following:
$ cat ~/lvm2_filter.yaml parameter_defaults: ComputeParameters: LVMFilterEnabled: true LVMFilterDenylist: - /dev/sd.*
Then add the following argument to your openstack overcloud deploy command:
After the deployment, to confirm the filter being set up, log any target overcloud node, for example a Compute node when using the above snippet and use the following:
# grep global_filter /etc/lvm/lvm.conf global_filter = [ "a|/dev/sd.*|","r|.*|" ]