Der Logical Volume Manager (LVM) ist ein [[Linux]]-Programm das es ermöglicht, physikalische Speichergeräte wie Festplatten oder SSDs zu einem logischen Pool zu kombinieren, aus dem logische Volumes erstellt werden können.
LVM hat einen hohen Datendurchsatz ("performance") und beeinträchtigt das System nur unwesentlich
# Show
pvs
pvdisplay
vgs
vgdisplay
lvs
lvdisplay
# Create
pvcreate /dev/sdb
vgcreate my-vg /dev/sdb
lvcreate -n my-lv -L 10G my-vg
# /dev/my-vg/my-lv
lvconvert --type thin-pool my-vg/my-lv [--poolmetadata ..]
{{lvm.png}}
=====Usage=====
// list physical volumes
pvs
// list volume groups
vgs
// list logical volumes
lvs
lvdisplay
=====Physikalische Volumes=====
Physikalische Volumes (PVs) sind die grundlegenden Speichergeräte, die vom LVM verwaltet werden. Das können [[festplatte|Festplatten]], [[RAID]]-Arrays, Netzwerkspeicher ([[NAS]], [[SAN]]) oder andere [[storage|Blockspeichergeräte]] sein. Der LVM erkennt diese Geräte automatisch und ermöglicht es dem Benutzer, sie in den logischen Pool aufzunehmen.
// Laufwerk als physikalisches Volume für den LVM initialisieren
pvcreate /dev/sdb
// kann auch eine Partition sein
pvcreate /dev/sdb1
=====Volume Groups=====
Volume Groups (VGs) sind Sammlungen von physikalischen Volumes, die zu einem einzigen logischen Pool zusammengefasst werden. Der VG fungiert als zentrale Verwaltungseinheit für die logischen Volumes. Mehrere physikalische Volumes können zu einem VG hinzugefügt werden, um den verfügbaren Speicherplatz zu erweitern.
// Volume-Group erstellen
vgcreate my-vg /dev/sdb /dev/sdc
// Volume-Group erweitern
vgextend my-vg /dev/sdd
=====Logische Volumes=====
Logische Volumes (LVs) können als virtuelle Festplatten betrachtet werden. LVs können erstellt, verändert und gelöscht werden. Ein logisches Volume kann über mehrere physikalische Speichergeräte verteilt sein was eine effiziente Speichernutzung ermöglicht.
// Logisches Volume erstellen
lvcreate -n my-lv -L 10G my-vg
// Logisches Volume ändern
lvresize /dev/my-vg/my-lv -L +1G
lvresize /dev/my-vg/my-lv -l +100%FREE -r
=====vCenter=====
VMs in vCenter werden immer als SCSI bereitgestellt
====Ubuntu====
[root@vie-t-srv-bind ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 80G 0 disk # <-- 80 GB
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 79G 0 part
├─almalinux_vie--t--srv--bind-root 253:0 0 51,7G 0 lvm /
├─almalinux_vie--t--srv--bind-swap 253:1 0 2G 0 lvm [SWAP]
└─almalinux_vie--t--srv--bind-home 253:2 0 25,2G 0 lvm /home
sr0 11:0 1 1024M 0 rom
echo 1 > /sys/class/scsi_device/0:0:0:0/device/rescan
[root@vie-t-srv-bind ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk # <-- 100GB
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 79G 0 part
├─almalinux_vie--t--srv--bind-root 253:0 0 51,7G 0 lvm /
├─almalinux_vie--t--srv--bind-swap 253:1 0 2G 0 lvm [SWAP]
└─almalinux_vie--t--srv--bind-home 253:2 0 25,2G 0 lvm /home
sr0 11:0 1 1024M 0 rom
# sda2 muss größer werden
# partition erweitern
parted /dev/sda
(parted) print
(parted) resizepart 2 100%
(parted) quit
# pv erweitern
pvresize /dev/sda2
[root@vie-t-srv-bind ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part
├─almalinux_vie--t--srv--bind-root 253:0 0 51,7G 0 lvm /
├─almalinux_vie--t--srv--bind-swap 253:1 0 2G 0 lvm [SWAP]
└─almalinux_vie--t--srv--bind-home 253:2 0 25,2G 0 lvm /home
sr0 11:0 1 1024M 0 rom
# partition zuweisen 10GB für / und 10GB für/home
lvextend -L +10G /dev/mapper/almalinux_vie--t--srv--bind-root
xfs_growfs /
lvextend -L +10G /dev/mapper/almalinux_vie--t--srv--bind-home
xfs_growfs /home
[root@vie-t-srv-bind ~]# df -h / /home
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
/dev/mapper/almalinux_vie--t--srv--bind-root 62G 3,2G 59G 6% /
/dev/mapper/almalinux_vie--t--srv--bind-home 36G 284M 35G 1% /home
=====Links=====
* [[https://wiki.ubuntuusers.de/Logical_Volume_Manager/|Ubuntu Wiki]]
* {{lvmcheatsheet.pdf}}
* [[https://www.youtube.com/watch?v=0CEDN9EstbU|The How To For Logical Volume Management You Didn't Know You Needed!]]