The Basics

list of component:

  • PV (Physical Volume)
  • VG (Volume Group)
  • LV (Logical Volume)
  • PE (Physical Extend)
  • LE (Logical Extend)
  • FS (File Sytem)

LVM2 use a new driver, the device-mapper allow the us of disk´s sectors in different targets: - linear (most used in LVM). - stripped (stripped on several disks) - error (all I/O are consider in errors) - snapshot (allow snapshot async)

  • mirror (integrate elements usefull for pvmove commande)
  • below example show you a striped volume and linear volume
1lvs --all --segments -o +devices
2server_xplore_col1   vgdata -wi-ao----   21 striped   1.07t /dev/md2(40229),/dev/md3(40229),/dev/md4(40229),/dev/md5(40229),…
3server_xplore_col2   vgdata -wi-ao----    1 linear  219.87g /dev/md48(0)  

Basic checks

 1# Summary 
 2pvs
 3vgs
 4lvs
 5
 6# Scanner
 7pvscan
 8vgscan
 9lvscan
10
11# Details info
12pvdisplay   [sda]
13pvdisplay   -m /dev/emcpowerd1 
14vgdisplay   [vg_root]
15lvdisplay   [/dev/vg_root/lv_usr]
16
17# Summary details
18lvmdiskscan
19  /dev/sda1 [     600.00 MiB]
20  /dev/sda2 [       1.00 GiB]
21  /dev/sda3 [      38.30 GiB] LVM physical volume
22  /dev/sdb1 [    <100.00 GiB] LVM physical volume
23  /dev/sdc1 [     <50.00 GiB] LVM physical volume
24  /dev/sdj  [      20.00 GiB]
25  1 disk
26  2 partitions
27  0 LVM physical volume whole disks
28  3 LVM physical volumes

Usual Scenario in LVM

  • Extend an existing LVM filesystem:
 1parted /dev/sda resizepart 3 100%
 2udevadm settle
 3pvresize /dev/sda3
 4
 5# Extend a XFS to a fixe size 
 6lvextend -L 30G /dev/vg00/var
 7xfs_growfs /dev/vg00/var  
 8
 9# Add some space to a ext4 FS
10lvextend -L +10G /dev/vg00/var
11resize2fs /dev/vg00/var
12
13# Extend to a pourcentage and resize automaticly whatever is the FS type.
14lvextend -l +100%FREE /dev/vg00/var -r 
  • Create a new LVM filesystem:
 1parted /dev/sdb mklabel gpt mkpart primary 1 100% set 1 lvm on
 2udevadm settle
 3pvcreate /dev/sdb1
 4vgcreate vg01 /dev/sdb1
 5lvcreate -n lv_data -l 100%FREE  vg01
 6
 7# Create a XFS
 8mkfs.xfs /dev/vg01/lv_data
 9mkdir /data
10echo "/dev/mapper/vg01-lv_data   /data                  xfs     defaults        0 0" >>  /etc/fstab 
11mount -a 
12
13# Create an ext4
14mkfs.ext4 /dev/vg01/lv_data
15mkdir /data
16echo "/dev/mapper/vg01-lv_data   /data                  ext4     defaults        0 0" >>  /etc/fstab 
17mount -a 
  • Remove SWAP:
 1swapoff -v /dev/dm-1
 2lvremove /dev/vg00/swap
 3vi /etc/fstab
 4vi /etc/default/grub
 5grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
 6grubby --remove-args "rd.lvm.lv=vg00/swap" --update-kernel /boot/vmlinuz-3.10.0-1160.71.1.el7.x86_64
 7grubby --remove-args "rd.lvm.lv=vg00swap" --update-kernel /boot/vmlinuz-3.10.0-1160.el7.x86_64
 8grubby --remove-args "rd.lvm.lv=vg00/swap" --update-kernel /boot/vmlinuz-0-rescue-cd2525c8417d4f798a7e6c371121ef34
 9echo "vm.swappiness = 0" >> /etc/sysctl.conf
10sysctl -p
  • Move data form disk to another:
 1# #n case of crash, just relaunch pvmove without arguments
 2pvmove /dev/emcpowerd1 /dev/emcpowerc1
 3
 4# Remove PV from a VG
 5vgreduce /dev/emcpowerd1 vg01
 6
 7# Remove all unused PV from VG01
 8vgreduce -a vg01
 9
10# remove all PV
11pvremove /dev/emcpowerd1
  • mount /var even if doesn’t want:
1lvchange -ay --ignorelockingfailure --sysinit vgroot/var   
  • Renaming:
1# VG rename
2vgrename 
3
4# LV rename
5lvrename
6
7# PV does not need to be rename

LVM on partition VS on Raw Disk

Even if in the past I was using partition MS-DOS disklabel or GPT disklabel for PV, I prefer now to use directly LVM on the main block device. There is no reason to use 2 disklabels, unless you have a very specific use case (like disk with boot sector and boot partition).

The advantage of having LVM directly are: * simplicity - you do not need to use 2 sets of tools * flexibility - you can use pvmove to move the data from one disk volume to another without downtime, you can use snapshot and thin provisioning * you do not need to run partprobe or kpartx to tell the kernel that you created/resized/deleted a volume. And partprobe / `kpartx`` could fail if partitions are in use. * maybe better performance, compared to using LVM on top of MS-DOS or GPT disklables]