Chapter 16. Grouping LVM objects with tags
You can assign tags to logical volume management (LVM) objects to group them. With this feature, you can automate the control of LVM behavior, such as activation, by a group. You can also use tags on LVM objects as a command.
16.1. LVM object tags
A logical volume management (LVM) tag is a word that is used to group LVM2 objects of the same type. You can attach tags to objects such as physical volumes, volume groups, and logical volumes .
To avoid ambiguity, prefix each tag with @
. Each tag is expanded by replacing it with all the objects that possess that tag and that are of the type expected by its position on the command line.
LVM tags are strings of up to 1024 characters. LVM tags cannot start with a hyphen.
A valid tag consists of a limited range of characters only. The allowed characters are A-Z a-z 0-9 _ + . - / = ! : # &
.
Only objects in a volume group can be tagged. Physical volumes lose their tags if they are removed from a volume group; this is because tags are stored as part of the volume group metadata and that is deleted when a physical volume is removed.
You can apply some commands to all volume groups (VG), logical volumes (LV), or physical volumes (PV) that have the same tag. The man page of the given command shows the syntax, such as VG|Tag
, LV|Tag
, or PV|Tag
when you can substitute a tag name for a VG, LV, or PV name.
16.2. Adding tags to LVM objects
You can add tags to LVM objects to group them by using the --addtag
option with various volume management commands.
Prerequisites
-
The
lvm2
package is installed.
Procedure
To add a tag to an existing PV, use:
# pvchange --addtag <@tag> <PV>
To add a tag to an existing VG, use:
# vgchange --addtag <@tag> <VG>
To add a tag to a VG during creation, use:
# vgcreate --addtag <@tag> <VG>
To add a tag to an existing LV, use:
# lvchange --addtag <@tag> <LV>
To add a tag to a LV during creation, use:
# lvcreate --addtag <@tag> ...
16.3. Removing tags from LVM objects
If you no longer want to keep your LVM objects grouped, you can remove tags from the objects by using the --deltag
option with various volume management commands.
Prerequisites
-
The
lvm2
package is installed. - You have created tags on physical volumes (PV), volume groups (VG), or logical volumes (LV).
Procedure
To remove a tag from an existing PV, use:
# pvchange --deltag @tag PV
To remove a tag from an existing VG, use:
# vgchange --deltag @tag VG
To remove a tag from an existing LV, use:
# lvchange --deltag @tag LV
16.4. Displaying tags on LVM objects
You can display tags on your LVM objects with the following commands.
Prerequisites
-
The
lvm2
package is installed. - You have created tags on physical volumes (PV), volume groups (VG), or logical volumes (LV).
Procedure
To display all tags on an existing PV, use:
# pvs -o tags <PV>
To display all tags on an existing VG, use:
# vgs -o tags <VG>
To display all tags on an existing LV, use:
# lvs -o tags <LV>
16.5. Controlling logical volume activation with tags
This procedure describes how to specify in the configuration file that only certain logical volumes should be activated on that host.
Procedure
For example, the following entry acts as a filter for activation requests (such as vgchange -ay
) and only activates vg1/lvol0
and any logical volumes or volume groups with the database
tag in the metadata on that host:
activation { volume_list = ["vg1/lvol0", "@database" ] }
The special match @*
that causes a match only if any metadata tag matches any host tag on that machine.
As another example, consider a situation where every machine in the cluster has the following entry in the configuration file:
tags { hosttags = 1 }
If you want to activate vg1/lvol2
only on host db2
, do the following:
-
Run
lvchange --addtag @db2 vg1/lvol2
from any host in the cluster. -
Run
lvchange -ay vg1/lvol2
.
This solution involves storing host names inside the volume group metadata.