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://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.
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.
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