5.5. 用过滤器控制 LVM 设备扫描
At startup, the
vgscan command is run to scan the block devices on the system looking for LVM labels, to determine which of them are physical volumes and to read the metadata and build up a list of volume groups. The names of the physical volumes are stored in the LVM cache file of each node in the system, /etc/lvm/cache/.cache. Subsequent commands may read that file to avoiding rescanning.
You can control which devices LVM scans by setting up filters in the
lvm.conf configuration file. The filters in the lvm.conf file consist of a series of simple regular expressions that get applied to the device names that are in the /dev directory to decide whether to accept or reject each block device found.
The following examples show the use of filters to control which devices LVM scans. Note that some of these examples do not necessarily represent best practice, as the regular expressions are matched freely against the complete pathname. For example,
a/loop/ is equivalent to a/.*loop.*/ and would match /dev/solooperation/lvol1.
下面的过滤器添加所有找到的设备,这是配置文件中没有配置过滤器的默认行为:
filter = [ "a/.*/" ]
filter = [ "a/.*/" ]
下面的过滤器会删除光驱以避免在驱动器中没有介质时造成延迟:
filter = [ "r|/dev/cdrom|" ]
filter = [ "r|/dev/cdrom|" ]
下面的过滤器添加所有回路设备并删除其它块设备:
filter = [ "a/loop.*/", "r/.*/" ]
filter = [ "a/loop.*/", "r/.*/" ]
下面的过滤器添加所有回路设备和 IDE 设备,同时删除所有其它块设备:
filter =[ "a|loop.*|", "a|/dev/hd.*|", "r|.*|" ]
filter =[ "a|loop.*|", "a|/dev/hd.*|", "r|.*|" ]
下面的过滤器只添加第一个 IDE 驱动器中的分区 8,同时删除所有其它块设备:
filter = [ "a|^/dev/hda8$|", "r/.*/" ]
filter = [ "a|^/dev/hda8$|", "r/.*/" ]
注意
When the
lvmetad daemon is running, the filter = setting in the /etc/lvm/lvm.conf file does not apply when you execute the pvscan --cache device command. To filter devices, you need to use the global_filter = setting. Devices that fail the global filter are not opened by LVM and are never scanned. You may need to use a global filter, for example, when you use LVM devices in VMs and you do not want the contents of the devices in the VMs to be scanned by the physical host.