Managing Storage with the Logical Volume Manager (LVM) (with examples)
- Linux
- December 17, 2024
LVM, or Logical Volume Manager, is a device mapper framework in Linux that provides logical volume management for the Linux kernel. It offers a more flexible approach to managing storage resources than traditional partitioning methods. LVM allows you to create, modify, and manage logical disks, helping efficiently allocate space among various users and software. It is particularly useful in environments where storage requirements change frequently, providing capabilities such as dynamic resizing and snapshots.
Use case 1: Start the Logical Volume Manager Interactive Shell
Code:
sudo lvm
Motivation:
The LVM interactive shell is a powerful utility for managing logical volumes, volume groups, and physical volumes through a command-line interface. Invoking the LVM shell allows users to execute various LVM commands in a dedicated environment tailored for managing storage. This approach is particularly beneficial for systems administration tasks where efficient and accurate management of storage resources is critical.
Explanation:
sudo
: This command is used to gain superuser privileges, which are necessary for performing system-level operations such as managing disk storage.lvm
: This is the command to start the Logical Volume Manager interactive shell. In this shell, users can execute multiple commands without prefixing each with ’lvm'.
Example Output:
lvm>
The prompt changes to indicate you are now within the LVM interactive environment.
Use case 2: Initialize a Drive or Partition as a Physical Volume
Code:
sudo lvm pvcreate /dev/sdXY
Motivation:
Initializing a drive or partition as a physical volume is a foundational step in the LVM setup process. This prepares the storage device for inclusion in volume groups, making it a building block for logical volumes. This step ensures that the selected storage is properly formatted to be utilized by the LVM system.
Explanation:
sudo
: Superuser privileges are needed to modify disk partitions and initialize physical volumes.lvm
: This command runs LVM-related tasks.pvcreate
: This specific command initializes a physical drive or a partition to be recognized by LVM./dev/sdXY
: This specifies the path to the drive or partition you want to initialize.sdXY
is a placeholder, whereX
represents the disk andY
the partition on that disk.
Example Output:
Physical volume "/dev/sdXY" successfully created
This output confirms that the specified partition or drive was successfully initialized as a physical volume.
Use case 3: Display Information About Physical Volumes
Code:
sudo lvm pvdisplay
Motivation:
The ability to display information about physical volumes is crucial for monitoring and managing storage allocation. This command provides detailed insights into the characteristics and status of each physical volume, facilitating informed decision-making regarding storage management.
Explanation:
sudo
: Allows superuser access to view system-level storage configurations.lvm
: Utilizes the LVM command suite.pvdisplay
: Outputs detailed information about all configured physical volumes, including attributes such as size, free space, and associated volume groups.
Example Output:
--- Physical volume ---
PV Name /dev/sdXY
VG Name vg1
PV Size 100.00 GiB / not usable 2.00 MiB
Allocatable yes
PE Size (KByte) 4096
Total PE 25599
Free PE 23039
Allocated PE 2560
PV UUID abcde1-23fg-45ij-67kl-890mnopqrst
This output provides a comprehensive overview of each physical volume’s properties and its contribution to any volume groups.
Use case 4: Create a Volume Group Called vg1 from the Physical Volume
Code:
sudo lvm vgcreate vg1 /dev/sdXY
Motivation:
Creating a volume group is an essential step in the LVM process, as it aggregates multiple physical volumes into a single administrable unit. This abstraction improves flexibility and scalability in managing large storage resources and simplifies complex configurations by combining multiple physical devices.
Explanation:
sudo
: Needed to execute system-level changes.lvm
: Utilizes the LVM command.vgcreate
: Command to create a new volume group.vg1
: The name assigned to the new volume group./dev/sdXY
: The physical volume to include in the new volume group, which has previously been initialized.
Example Output:
Volume group "vg1" successfully created
This output confirms the successful creation of a new volume group named “vg1”.
Use case 5: Display Information About Volume Groups
Code:
sudo lvm vgdisplay
Motivation:
Knowing how to display information about volume groups is vital for effective storage management. This command presents a summary of available volume groups, revealing their characteristics and aiding in troubleshooting and planning.
Explanation:
sudo
: Grants the necessary privileges to administer system-level storage information.lvm
: Accesses the suite of LVM commands.vgdisplay
: Outputs detailed information about all configured volume groups.
Example Output:
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 100.00 GiB
PE Size 4.00 MiB
Total PE 25599
Alloc PE / Size 2560 / 10.00 GiB
Free PE / Size 23039 / 90.00 GiB
VG UUID uvwx12-yza3-bcde4-fghi5-jklm6n-opqr7t
The output provides detailed information about each volume group, such as size, number of logical volumes, and free physical extents.
Use case 6: Create a Logical Volume with Size 10G from Volume Group vg1
Code:
sudo lvm lvcreate -L 10G vg1
Motivation:
Creating logical volumes allows you to carve out precise storage allocations from volume groups according to specific needs. With logical volumes, resizing, snapshots, and management operations become straightforward, ideal for dynamic storage environments where flexibility is a priority.
Explanation:
sudo
: Enables the execution of commands requiring administrative rights.lvm
: Invokes the LVM management interface.lvcreate
: Command to create a logical volume.-L 10G
: Specifies the size of the new logical volume as 10 gigabytes.vg1
: Designates the volume group from which the logical volume will be created.
Example Output:
Logical volume "lvol0" created
This output indicates that a logical volume named “lvol0” with a size of 10GB has been successfully created in the volume group “vg1”.
Use case 7: Display Information About Logical Volumes
Code:
sudo lvm lvdisplay
Motivation:
Displaying detailed information about logical volumes is important for managing and administering storage in an LVM-enabled system. This command helps in planning resource allocation, viewing status, and understanding the characteristics of different logical volumes within the system.
Explanation:
sudo
: Needed for executing commands that require elevated privileges.lvm
: Initiates the LVM command module.lvdisplay
: Shows comprehensive details about all logical volumes on the system.
Example Output:
--- Logical volume ---
LV Path /dev/vg1/lvol0
LV Name lvol0
VG Name vg1
LV UUID 123a456b-7c8d-9e0f-1234-567g890hijkl
LV Write Access read/write
LV Creation host, time hostname, YYYY-MM-DD HH:MM:SS
LV Status available
# open 0
LV Size 10.00 GiB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0
This output provides an overview of logical volumes, including their paths, sizes, and current status, assisting users in effective storage management.
Use case 8: Display Help for a Specific Command
Code:
lvm help command
Motivation:
Accessing detailed help for a specific LVM command ensures users can leverage the full potential of LVM functionalities and understand command options. This is especially useful for new users or when encountering unfamiliar commands, facilitating efficient troubleshooting and usage.
Explanation:
lvm
: The command initiates the LVM environment.help
: Invokes the help feature for LVM commands.command
: Placeholder for the specific LVM command you require help with, such aspvcreate
,vgcreate
, etc.
Example Output:
lvm command
[OPTION...]
Description:
This command does XYZ operation in the LVM system.
...
The output provides detailed guidance on using the specified LVM command, its options, and parameters.
Conclusion
By mastering these LVM use cases, you harness the power of advanced storage management. Logical Volume Manager offers a flexible, scalable way to manage disk space in Linux, catering to a wide range of system setups and requirements. Whether you’re expanding storage capacity, maintaining efficient space usage, or simplifying complex storage configurations, LVM is an indispensable tool for system administrators.