Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:lvm

Dies ist eine alte Version des Dokuments!


Aufbau eines logical volumes (LV)

Ein LV besteht aus mehreren Ebenen. Die unterste Ebene bilden die sogenannten physical volumes ( PV ).
Mehrere PVs kann man nun zusammenfassen zu einer logischen Einheit, der sogenannten volume group ( VG ).
Auf der VG kann man nun logical volumes ( LV ) erzeugen, die eine beliebige Größe haben können.
In der Summe können die LVs die Größe der VG natürlich nicht überschreiten.

LVM einrichten

Pakete installieren

Debian:

apt install lvm2 parted

openSuSE:

zypper install lvm

Partitionierung

LVM-Partition anlegen:

parted /dev/sda print
parted /dev/sda set 2 lvm on
parted /dev/sda set 3 lvm on

Alte Metadaten löschen:

wipefs -af /dev/sda2
wipefs -af /dev/sda3

Partitionen anzeigen:

fdisk -l | grep -i lvm

in der Ausgabe sollten 2 LVM-Partitionen erscheinen:

/dev/sda2   30212096  59572223 29360128    14G Linux LVM
/dev/sda3   59572224  90114190 30541967  14,6G Linux LVM

LV anlegen

erstes Physical Volume anlegen:

pvcreate /dev/sda2

Bestehende Physical Volumes anzeigen:

pvs

Volume Group mit Namen vg_system anlegen: 1)

vgcreate vg_system /dev/sda2

Volume Group aktivieren: (optional)

vgchange -a y vg_system

Bestehende Volume Groups anzeigen:

vgs

Logical Volume mit Namen lv_test anlegen:

lvcreate --size 5G --name /dev/vg_system/lv_test

Bestehende Logical Volumes anzeigen:

lvs

Formatieren ( hier mit ext4-Dateisystem ):

mkfs.ext4 /dev/vg_system/lv_test

Testen

Mountpoint erstellen:

mkdir /mnt/lv_test

Logical Volume am Mountpoint einhängen:

mount /dev/vg_system/lv_test /mnt/lv_test

Testweise Daten aus /usr/bin-Verzeichnis kopieren:

cp -a /usr/bin/. /mnt/lv_test

LV vergrößern

Der Vorteil eines LV ist, daß es zur Laufzeit vergrößert werden kann. Ein LV kann auch verkleinert werden, dass geht aber nur bei ext4 und auch da nur nach umount.

Logical Volume & Dateisystem vergrößern

Volume und Dateisystem in einem Schritt

(geht nicht bei btrfs)

lvresize --size +2g --resizefs /dev/vg_system/lv_test

Volume und Dateisystem in zwei Schritten

LV vergrößern

lvextend -L +2g /dev/vg_system/lv_test

Dateisystem vergrößern

ext3/4
resize2fs /dev/vg_system/lv_test
xfs

2)

xfs_growfs /mnt/lv_test
btrfs

3)

btrfs filesystem resize max /mnt/lv_test

LV verkleinern

geht nur mit ext2/3/4 Dateisystem

cd /mnt
df -hT . lv_test

Backup erstellen:

tar -cf lv_test.tar.zstd --use-comp zstd lv_test/

ext4-Dateisystem aushängen & prüfen:

umount /mnt/lv_test
fsck.ext4 -f /dev/mapper/vg_system-lv_test

ext4-Dateisystem verkleinern:

resize2fs /dev/mapper/vg_system-lv_test 3G

LV verkleinern:

lvreduce --size 3G /dev/mapper/vg_system-lv_test

Dateisystem wieder einhängen:

mount /dev/mapper/vg_system-lv_test /mnt/lv_test

Wenn die Daten ok sind, Backup löschen:

rm lv_test.tar.zstd

Snapshots

4)

Snapshot erstellen & löschen

Snapshot erstellen

lvcreate --snapshot --size 200M --name lv_snapshot1 /dev/vg_system/lv_test
mkdir /mnt/snapshot1
mount -o ro,noatime /dev/vg_system/lv_snapshot1 /mnt/snapshot1

5) → jetzt könnte man eine Kopie von /mnt/snapshot1 auf einen anderen Datenträger ziehen

Snapshot entfernen

umount /mnt/snapshot1
lvremove /dev/vg_system/lv_snapshot1

Snapshot erstellen & wiederherstellen

Snapshot erstellen

lvcreate --snapshot --size 200M --name lv_snapshot2 /dev/vg_system/lv_test

Daten im Original LV ändern/löschen

rm -rf /mnt/lv_test/s*

Zustand aus Snapshot wiederherstellen

lvconvert --mergesnapshot /dev/vg_system/lv_snapshot2
lvs
lvdisplay /dev/vg_system/lv_test
ls /mnt/lv_test/s*

Dateisystem aushängen:

umount /mnt/lv_test

LV deaktivieren & wieder aktivieren:

lvchange -an /dev/vg_system/lv_test
lvchange -ay /dev/vg_system/lv_test

Dateisystem wieder einhängen:

mount /dev/vg_system/lv_test /mnt/lv_test

Prüfen, ob Dateien wieder da sind:

ls /mnt/lv_test/s*

Physical Volume entfernen

zweites Physical Volume anlegen:

pvcreate /dev/sda3
vgextend vg_system /dev/sda3
pvmove /dev/sda2
vgreduce vg_system /dev/sda2
pvremove /dev/sda2

Logical Volume spiegeln (RAID 1)

zweites Physical Volume anlegen:

pvcreate /dev/sda2
vgextend vg_system /dev/sda2

Logical Volume zu RAID 1 konvertieren:

lvconvert --type raid1 /dev/vg_system/lv_test
journalctl -kf

(warten bis „recovery done“ erscheint)

6)

Deduplizierung

1)
- ( Minus ) in VG und LV Namen besser vermeiden
2) , 3)
Volume muss nach /mnt/lv_test gemountet sein
4)
Falls das Kernel Modul dm-snapshot noch nicht geladen ist:
modprobe dm-snapshot
5)
bei XFS UUID vor dem Mounten anpassen: (verändert den Snapshot)
uuid=$(uuid)
xfs_admin -U "$uuid" /dev/vgsystem/lvtest1
oder Mount-Option nouuid (ohne Änderung am Snapshot)
mount -o ro,noatime,nouuid /dev/vg_system/lv_snapshot /mnt/snapshot1
oder (falls es ohne norecovery nicht geht)
mount -o ro,noatime,nouuid,norecovery /dev/vg_system/lv_snapshot /mnt/snapshot1
6)
Unter CentOS 8 testen:
lvconvert --raidintegrity y /dev/vg_system/lv_test
blkdiscard /dev/sda6
admin_grundlagen/lvm.1708840692.txt.gz · Zuletzt geändert: 2024/02/25 05:58 von ingo_wichmann