===== Logical Volume Manager (LVM) ===== ==== What is LVM? ==== [[https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)|Wikipedia - Logical Volume Manager]] === Create new Physical Volume (PV), Volume Group (VG) and Logical Volume (LV) === First you need to create a partition on a disk with type LVM\\ List the partitions\\ cat /proc/partitons major minor #blocks name 11 0 1048575 sr0 8 0 31457280 sda 8 1 194560 sda1 8 2 31260672 sda2 8 16 209715200 sdb In this example the right one is "sdb"\\ fdisk /dev/sdb n p enter enter t 1 8e w n = new partition, p = primary partition, enter to select default or select own range, t = change partition system id, 1 = id 1 but it might be another on your system, 8e = type LVM, w = write changes to disk \\ pvcreate /dev/sdb1 vgcreate datavg /dev/sdb1 lvcreate -l 100%FREE -n backuplv datavg mkfs.ext3 -Lbackup /dev/datavg/backuplv #mkfs.xfs -Lbackup /dev/datavg/backuplv vi /etc/fstab /dev/mapper/datavg-backuplv /data ext3 defaults 0 0 === Extend Physical Volume (PV) === Get the "PV Name"/ Partition via pvdisplay --- Physical volume --- PV Name /dev/sdc1 VG Name datavg PV Size <600.00 GiB / not usable 2.00 MiB ... (Resize VMDK to 1,3TB) Check if your disk resize has already been recognized via cat /proc/partitions major minor #blocks name ... 8 32 629145600 sdc 8 33 629144576 sdc1 ... sdc is not 1,3TB, so get the scsi target via lsscsi -v ... [2:0:0:0] disk VMware Virtual disk 1.0 /dev/sdc dir: /sys/bus/scsi/devices/2:0:0:0 [/sys/devices/pci0000:00/0000:00:17.0/0000:13:00.0/host2/target2:0:0/2:0:0:0] ... Then rescan the adapter echo 1 > /sys/class/scsi_disk/2\:0\:0\:0/device/rescan The OS now knows that the disk has 1,3TB cat /proc/partitions major minor #blocks name ... 8 32 1395864371 sdc 8 33 629144576 sdc1 ... Resize the partition (see Create new Physical Volume (PV))\\ The partitiontable might have an old state, to refresh it try the following commands partprobe kpartx -a /dev/sdc partx -a /dev/sdc Looking at /proc/partitions should now list sdc and sdc1 with 1,3TB, if not you should restart your VM to refresh the table.\\ If both sdc and sdc1 are up to date, resize the PV pvresize -v -d /dev/sdc1 Archiving volume group "datavg" metadata (seqno 7). Resizing volume "/dev/sdc1" to 2791726694 sectors. Resizing physical volume /dev/sdc1 from 153599 to 340786 extents. Updating physical volume "/dev/sdc1" Creating volume group backup "/etc/lvm/backup/datavg" (seqno 8). Physical volume "/dev/sdc1" changed 1 physical volume(s) resized or updated / 0 physical volume(s) not resized pvdisplay and vgdisplay are now resized pvdisplay --- Physical volume --- PV Name /dev/sdc1 VG Name datavg PV Size <1.30 TiB / not usable <2.80 MiB vgdisplay --- Volume group --- VG Name datavg ... VG Size <1.30 TiB === Extend Logical Volume (LV) === Extend the disk (PV/VG, example above)\\ Then extend the LV (100% is the full VG, check the "Other commands"-section for other parameters) lvextend -l +100%FREE /dev/data/backup #if ext3/4 use resize2fs /dev/data/backup #if xfs use xfs_growfs /dev/data/backup === Remove Physical Volume (PV), Volume Group (VG) and Logical Volume (LV) === lvremove /dev/data/backup vgremove data pvremove /dev/sdb1 === Other commands === ^ Command ^ Function ^ | pvscan | |\\ | vgscan | |\\ | lvscan | |\\ | pvdisplay | show all PVs |\\ | vgdisplay | show all VGs |\\ | lvdisplay | show all LVs |\\ | vgchange -ay | activate LV |\\ | vgextend datavg /dev/sdd | add disk sdd (unpartitioned) to VG datavg |\\ | lvextend -L+5G /dev/data/backup | extend by 5GB |\\ | lvextend -L 10G /dev/data/backup | extend to 10GB total |\\ | lvcreate -L20G -n backuplv datavg | create LV with 20GB total |\\ | lvresize -r -L+5G /dev/data/backup | extend by 5GB and do resize2fs/ xfs_growfs |\\ === Useful links === [[https://www.rootusers.com/how-to-increase-the-size-of-a-linux-lvm-by-expanding-the-virtual-machine-disk/|rootusers.com - increase the size of lvm]]\\ [[https://www.turnkeylinux.org/blog/extending-lvm|turnkeylinux.org - extend lvm]] ==== Troubleshooting ==== === Cant mount a logical volume === __**Description**__ Mounting the device leads to the following error mount: special device /dev/mapper/VG01-LVbackup does not exist Checking the LV via "lvdisplay" shows that its unavailable LV Status NOT available __**Reason**__ Its deactivated. Maybe you are missing the services in autostart? check /etc/boot.d/ for the following services and add them if needed: chkconfig boot.lvm on chkconfig boot.lvm_monitor on __**Fix**__ Run the following command to activate it vgchange -ay and remount mount \\ === New added disk doesnt appear in /proc/partitions === __**Description**__ After adding a new disk to your VM the disk doesnt appear in /proc/partition __**Reason**__ The VM didnt rescan the scsi devices __**Fix**__ Run the following command rescan the scsi hosts for new devices for host in /sys/class/scsi_host/*; do echo "- - -" | sudo tee $host/scan; lsblk -S ; done \\ ~~DISCUSSION:closed~~