In diesem Beispiel wurde eine neue HDD ins System gehängt. Um das Volume später dynamisch vergrößern oder verkleinern (ext4) zu können, wollen wir diese per LVM verwalten. Hierzu erstellen wir erst eine physikalisches Volume, nehmen dieses in eine Volume Gruppe auf und erstellen daraus ein logisches Volume.

https://www.tecmint.com/manage-and-create-lvm-parition-using-vgcreate-lvcreate-and-lvextend/

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/logical_volume_manager_administration/

https://www.thomas-krenn.com/de/wiki/LVM_Grundlagen

https://www.thomas-krenn.com/de/wiki/LVM_vergrößern

Probleme mit LVM

Hier eine Liste der bekannten Probleme.

Zu viele Logical Volumes (über 200):

https://www.thomas-krenn.com/de/wiki/LVM_VG_vgname_metadata_too_large_for_circular_buffer_beheben

Voraussetzungen

Folgende Pakete müssen hierfür installiert sein:

lvm2
lshw
Prüfen ob die neue Platte erkannt wurde

Mit lshw prüfen, ob die Platte erkannt wurde und welcher Gerätename vergeben wurde (hier bsp. /dev/sdb).

lshw -C disk
Partitionieren

Man muss die Platte nicht partitionieren. Man kann die ganze Platte als Blockdevice an den LVM übergeben. Das wird in diesem Beispiel auch gemacht.
Wer Teile der Platte aber nicht über den LVM laufen lassen möchte, partitioniert wie immer. Der Bereich, der vom LVM verwaltet werden soll muss dem Linux LVM Partitionstyp entsprechen. So geht’s:

Neue Partition auf der Platte erstellen (HDD mit MBR, für GPT das Programm parted benutzen)

fdisk /dev/sdb

Innerhalb des Menus mit n eine neue Partition erstellen, mit t den Typ ändern auf 8e (Linux LVM) und mit w schreiben. Das Kommando m zeigt die Hilfe an.
Die erste Partition wird nun mit /dev/sdb1 angesprochen.

LVM Partition erstellen (Physical Volume)
pvcreate /dev/sdb

Physikalisch Volumes auflisten mit

pvs

Detailierte Informationen auflisten mit

pvdisplay /dev/sdb

Wenn man das Device in diesem Kommando weg lässt, werden alle physikalischen Volumes aufgelistet.

LVM Volume Group erstellen

Die physikalen Volumes kann man nicht direkt ansprechen. Diese werden zu logischen Volumegruppen zusammengefasst. So kann man mehrere Platten zu einer Gruppe hinzufügen. Die Gruppe kann man später mit weiteren Platten erweitern. Man kann sogar vorhandene Platten wieder entfernen, solange der Speicher der verbleibenden Platten ausreicht, um die Daten der zu entfernenden Platte aufzunhemen.

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/logical_volume_manager_administration/disk_remove_ex

Wir erstellen also die Volume Gruppe vg00, die das physikalisch Volume /dev/sdb aufnimmt.

vgcreate vg00 /dev/sdb (/dev/sdc2 ...)

Volume Group vg00 anzeigen

vgdisplay vg00

Ohne Parameter werden alle Volume Groups angezeigt.

Logical Volume erstellen

Nun erstellen wir ein logisches Volume. Logische Volumes verhalten sich nun wieder wie Blockdevices. Man kann sie formatieren, mounten, etc…

Pro Volume Gruppe kann man meherere logische Volumes erstellen. Hierzu gibt man an wie groß das Volume seien soll. Wir erstellen ein Backup Volume, welches den kompletten Speicherplatz nutzt.

Auch logische Volumes kann man naträglich ändern. Also vergrößern und verkleinern. Im oben verlinkten Artikel zu LFCS wird das gut und schnell erklärt.

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/logical_volume_manager_administration/lv#resize_volumes

lvcreate -n vol_backups -l 100%FREE vg00

Man könnte aber vorher auch noch andere logische Volumes definieren, z.B.:

lvcreate -n vol_data -L 10G vg00
lvcreate -n vol_backups -l 100%FREE vg00
Logical Volume formatieren
mkfs -t ext4 /dev/vg00/vol_backups
Mount Point erstellen
mkdir /media/vol_backups
Logical Volume zur Bootzeit einbinden

Folgendes Kommando ausführen und die UUID der Laufwerks kopieren

blkid /dev/vg00/vol_backups

Nun die /etc/fstab öffnen und das neue Laufwerk inklusive Moint Point, Dateisystemtyp und Optionen eintragen.

# LVM Volume /dev/vg00/vol_backups
UUID=abd7468d-87fa-4cf4-a23a-14b02cfede02 /media/vol_backups  ext4 defaults 0 0

Nun wird die Platte automatisch beim Booten gemountet. Dies können wir testen, indem wir die Platte nun über die Mount Automatik einbinden.

mount -a
mount | grep vol

Vergrößern einer Partition

Volume Group vergrößern

vgextend vg00 /dev/sdc

Logical Volume vergrößern

Mit folgendem Beispiel wird der komplette verfügbare Platz verwendet. Der Parameter –resizefs gibt an, dass gleichzeitig das Dateisystem vergrößert werden soll. Ween man den Parameter vergessen hat, kann mna das selbe Kommando mit zusätzlichem –resizefs Parameter erneut ausführen. Es gibt noch eine weitere (legacy?) Möglichkeit das Dateisystem zu erweitern. Siehe dazu weiter unten.

lvextend --resizefs -l +100%FREE /dev/mapper/vg00-root

Man kann auch nur einen Teil des Platzen für das LV nutzen und den Rest für spätere Zwecke aufheben oder anderen LV’s zuweisen. Das geht z.B. so:

lvextend --resizefs -L 1G /dev/mapper/vg00-root

Hiermit wird das komplette LV auf 1GB festgelegt. Bei dem Kommando wird die Endgröße festgelegt, nicht um wieviel das LV vergrößert werden soll. Will man das LV um eine gewisse Größe erweitern, kann man ein + anhängen.

lvextend --resizefs -L +1G /dev/mapper/vg00-root

Den Parameter --resizefs kann man an das selbe Kommando auch nachträglich noch mal dran hängen, damit das Dateisystem entsprechend erweitert wird.

Vergrößern des Dateisystems

Den nun neu verfügbaren Speicherplatz kann man aber nicht direkt nutzen. Es muss abschließend noch das Dateisystem vergrößert werden. Das Ext3 Dateisystem unterstützt das Vergößern sogar im eingehängten (gemounteten) Zustand.

 resize2fs -p /dev/mapper/vg00-root

Kurzreferenz für das Vergrößern eines Volumes mit einer neuen in WMware eingebundenen Platte

# Neue Disk raus suchen:
lshw -C disk
pvcreate /dev/sdc (also die neue Disk, kann anders lauten)
# Name der VolumeGruppe ermitteln
vgs
# VG erweitern
vgextend vg-name /dev/sdc
# Name der Logical Volume ermitteln
lvs
# Mapper Pfad ermitteln
ls -la /dev/mapper
# Logical Volume erweitern
lvextend --resizefs -l +100%FREE /dev/mapper/lv-name