lvmautoactivation(7) — Linux manual page

NAME | DESCRIPTION | EXAMPLES | SEE ALSO | COLOPHON

LVMAUTOACTIVATION(7) Miscellaneous Information ManualLVMAUTOACTIVATION(7)

NAME         top

       lvmautoactivation — LVM autoactivation

DESCRIPTION         top

       Autoactivation is the activation of LVs performed automatically by
       the system in response to LVM devices being attached to the
       machine.  When all PVs in a VG have been attached, the VG is
       complete, and LVs in the VG are activated.

       Autoactivation of VGs, or specific LVs, can be prevented using
       vgchange or lvchange --setautoactivation n.  The lvm.conf(5)
       auto_activation_volume_list is another way to limit
       autoactivation.

   event autoactivation
       LVM autoactivation is "event based", in which complete VGs are
       activated in response to uevents which occur during system startup
       or at any time after the system has started.  An old form of
       autoactivation was "static" in which complete VGs are activated at
       a fixed point during system startup by a systemd service, and not
       in response to events.

       Event based autoactivation is driven by udev, udev rules, and
       systemd.  When a device is attached to a machine, a uevent is
       generated by the kernel to notify userspace of the new device.
       systemd-udev runs udev rules to process the new device.  Udev
       rules use blkid to identify the device as an LVM PV and then
       execute the lvm-specific udev rule for the device, which triggers
       autoactivation.

       There are two variations of event based autoactivation that may be
       used on a system, depending on the LVM udev rule that is installed
       (found in /lib/udev/rules.d/).  The following summarizes the steps
       in each rule which lead to autoactivation:

       69-dm-lvm-metad.rules

       • device /dev/name with major:minor X:Y is attached to the machine

       • systemd/udev runs blkid to identify /dev/name as an LVM PV

       • udev rule 69-dm-lvm-metad.rules is run for /dev/name

       • the lvm udev rule runs the systemd service
         lvm2-pvscan@X:Y.service

       • the lvm2-pvscan service runs:
         pvscan --cache -aay --major X --minor Y

       • pvscan reads the device, records that the PV is online (see
         pvs_online), and checks if the VG is complete.

       • if the VG is complete, pvscan creates the vgs_online temp file,
         and activates the VG.

       • the activation command output can be seen from systemctl status
         lvm2-pvscan*

       69-dm-lvm.rules

       • device /dev/name with major:minor X:Y is attached to the machine

       • systemd/udev runs blkid to identify /dev/name as an LVM PV

       • udev rule 69-dm-lvm.rules is run for /dev/name

       • the lvm udev rule runs:
         pvscan --cache --listvg --checkcomplete --vgonline
         --autoactivation event --udevoutput --journal=output /dev/name

       • pvscan reads the device, records that the PV is online (see
         pvs_online), and checks if the VG is complete.

       • if the VG is complete, pvscan creates the vgs_online temp file,
         and prints the name of the VG for the udev rule to import:
         LVM_VG_NAME_COMPLETE='vgname'

       • if the lvm udev rule sees LVM_VG_NAME_COMPLETE from pvscan, it
         activates the VG using a transient systemd service named lvm-ac‐
         tivate-<vgname>.

       • the lvm-activate-<vgname> service runs
         vgchange -aay --autoactivation event <vgname>

       • the activation command output can be seen from journalctl -u
         lvm-activate-<vgname>

   pvscan options
       --cache
              Read the <device> arg (and only that device), and record
              that the PV is online by creating the /run/lvm/pvs_on‐
              line/<pvid> file containing the name of the VG and the de‐
              vice for the PV.

       -aay   Activate the VG from the pvscan command (includes implicit
              --checkcomplete and --vgonline.)

       --checkcomplete
              Check if the VG is complete, i.e. all PVs are present on
              the system, by checking /run/lvm/pvs_online/<pvid> files.

       --vgonline
              Create /run/lvm/vgs_online/<vgname> if the VG is complete
              (used to ensure only one command performs activation.)

       --autoactivation event
              Inform the command it is used for event based autoactiva‐
              tion.

       --listvg
              Print the name of the VG using the device.

       --udevoutput
              Only print output that can be imported to the udev rule,
              using the udev environment key format, i.e. NAME='value'.

       --journal=output
              Send standard command output to the journal (when stdout is
              reserved for udev output.)

   run files
       Autoactivation commands use a number of temp files in /run/lvm
       (with the expectation that /run is cleared between boots).

       pvs_online
              pvscan --cache creates a file here for each PV that is at‐
              tached.  The file is named with the PVID and contains the
              VG name and device information.  The existence of the file
              is used to determine when all PVs for a given VG are
              present.  The device information in these files is also
              used to optimize locating devices for a VG when the VG is
              activated.

       pvs_lookup
              pvscan --cache creates a file here named for a VG (if one
              doesn't already exist.)  The file contains a list of PVIDs
              in the VG.  This is needed when a PV is processed which has
              no VG metadata, in which case the list of PVIDs from the
              lookup file is used to check if the VG is complete.

       vgs_online
              The first activation command (pvscan or vgchange) to create
              a file here, named for the VG, will activate the VG.  This
              resolves a race when concurrent commands attempt to acti‐
              vate a VG at once.

   static autoactivation
       A static autoactivation method is no longer provided by lvm.  Set‐
       ting event_activation=0 still disables event based autoactivation.
       WARNING: disabling event activation without an alternative may
       prevent a system from booting.  A custom systemd service could be
       written to run autoactivation during system startup, in which case
       disabling event autoactivation may be useful.

   lvm.conf filter
       Device symlinks from /dev/disk/ can be used in the lvm.conf(5)
       filter to guard against changes in kernel device names.  The
       /dev/disk/by-path/ or /dev/disk/by-id/ prefixes should be included
       in the filter names; these prefixes help lvm detect that symlink
       names are used. Filters containing symlinks require special match‐
       ing by commands run in the lvm udev rule.

       Common symlinks, e.g. beginning with wwn-, scsi-, pci-, or lvm-
       pv-uuid-, are recommended.  Uncommon or custom symlinks created by
       custom udev rules may be less reliable. If a custom udev rule cre‐
       ates symlinks used in the lvm filter, then the udev rule should be
       started prior to the lvm rule.

EXAMPLES         top

       VG "vg" contains two PVs:

       # pvs -o name,vgname,uuid /dev/sdb /dev/sdc
         PV         VG PV UUID
         /dev/sdb   vg 1uKpaT-lFOZ-NLHX-j4jI-OBi1-QpdE-HZ5hZY
         /dev/sdc   vg 5J3tM8-aIPe-2vbd-DBe7-bvRq-TGj0-DaKV2G

       use of --cache:

       # pvscan --cache /dev/sdb
         pvscan[12922] PV /dev/sdb online.
       # pvscan --cache /dev/sdc
         pvscan[12923] PV /dev/sdc online.

       # cat /run/lvm/pvs_online/1uKpaTlFOZNLHXj4jIOBi1QpdEHZ5hZY
       8:16
       vg:vg
       dev:/dev/sdb
       # cat /run/lvm/pvs_online/5J3tM8aIPe2vbdDBe7bvRqTGj0DaKV2G
       8:32
       vg:vg
       dev:/dev/sdc

       use of -aay:

       # pvscan --cache -aay /dev/sdb
         pvscan[12935] PV /dev/sdb online, VG vg incomplete (need 1).
       # pvscan --cache -aay /dev/sdc
         pvscan[12936] PV /dev/sdc online, VG vg is complete.
         pvscan[12936] VG vg run autoactivation.
         1 logical volume(s) in volume group "vg" now active

       # cat /run/lvm/pvs_online/1uKpaTlFOZNLHXj4jIOBi1QpdEHZ5hZY
       8:16
       vg:vg
       dev:/dev/sdb
       $ cat /run/lvm/pvs_online/5J3tM8aIPe2vbdDBe7bvRqTGj0DaKV2G
       8:32
       vg:vg
       dev:/dev/sdc
       # ls /run/lvm/vgs_online/vg
       /run/lvm/vgs_online/vg

       use of --listvg:

       # pvscan --cache --listvg /dev/sdb
         VG vg
       # pvscan --cache --listvg /dev/sdc
         VG vg

       # cat /run/lvm/pvs_online/1uKpaTlFOZNLHXj4jIOBi1QpdEHZ5hZY
       8:16
       vg:vg
       dev:/dev/sdb
       $ cat /run/lvm/pvs_online/5J3tM8aIPe2vbdDBe7bvRqTGj0DaKV2G
       8:32
       vg:vg
       dev:/dev/sdc

       use of --checkcomplete:

       # pvscan --cache --listvg --checkcomplete --vgonline /dev/sdb
         pvscan[12996] PV /dev/sdb online, VG vg incomplete (need 1).
         VG vg incomplete
       # pvscan --cache --listvg --checkcomplete --vgonline /dev/sdc
         pvscan[12997] PV /dev/sdc online, VG vg is complete.
         VG vg complete

       use of --udevoutput:

       # pvscan --cache --listvg --checkcomplete --vgonline --udevoutput /dev/sdb
       LVM_VG_NAME_INCOMPLETE='vg'
       # pvscan --cache --listvg --checkcomplete --vgonline --udevoutput /dev/sdc
       LVM_VG_NAME_COMPLETE='vg'

       use of --listlvs:

       # lvs -o name,devices vg
         LV    Devices
         lvol0 /dev/sdb(0)
         lvol1 /dev/sdc(0)
         lvol2 /dev/sdb(1),/dev/sdc(1)

       # pvscan --cache --listlvs --checkcomplete /dev/sdb
         pvscan[13288] PV /dev/sdb online, VG vg incomplete (need 1).
         VG vg incomplete
         LV vg/lvol0 complete
         LV vg/lvol2 incomplete
       # pvscan --cache --listlvs --checkcomplete /dev/sdc
         pvscan[13289] PV /dev/sdc online, VG vg is complete.
         VG vg complete
         LV vg/lvol1 complete
         LV vg/lvol2 complete

SEE ALSO         top

       lvm(8), lvm.conf(5), lvchange(8), pvscan(8)

COLOPHON         top

       This page is part of the lvm2 (Logical Volume Manager 2) project.
       Information about the project can be found at 
       ⟨http://www.sourceware.org/lvm2/⟩.  If you have a bug report for
       this manual page, see ⟨https://github.com/lvmteam/lvm2/issues⟩.
       This page was obtained from the project's upstream Git repository
       ⟨git://sourceware.org/git/lvm2.git⟩ on 2025-08-11.  (At that time,
       the date of the most recent commit that was found in the
       repository was 2025-08-08.)  If you discover any rendering
       problems in this HTML version of the page, or you believe there is
       a better or more up-to-date source for the page, or you have
       corrections or improvements to the information in this COLOPHON
       (which is not part of the original manual page), send a mail to
       man-pages@man7.org

Red Hat, Inc.     LVM TOOLS 2.03.35(2)-git (2025-07-30L)VMAUTOACTIVATION(7)

Pages that refer to this page: lvchange(8)lvconvert(8)lvcreate(8)lvdisplay(8)lvextend(8)lvm(8)lvmconfig(8)lvmdevices(8)lvmdiskscan(8)lvm-fullreport(8)lvm-lvpoll(8)lvreduce(8)lvremove(8)lvrename(8)lvresize(8)lvs(8)lvscan(8)pvchange(8)pvck(8)pvcreate(8)pvdisplay(8)pvmove(8)pvremove(8)pvresize(8)pvs(8)pvscan(8)vgcfgbackup(8)vgcfgrestore(8)vgchange(8)vgck(8)vgconvert(8)vgcreate(8)vgdisplay(8)vgexport(8)vgextend(8)vgimport(8)vgimportclone(8)vgimportdevices(8)vgmerge(8)vgmknodes(8)vgreduce(8)vgremove(8)vgrename(8)vgs(8)vgscan(8)vgsplit(8)