Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
admin_grundlagen:lvm [2024/02/25 05:00] ingo_wichmann [LV anlegen] |
admin_grundlagen:lvm [2024/03/19 10:37] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== 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. | ||
- | |||
- | {{ :admin_grundlagen:lvm.png?200 |}} | ||
- | ====== 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: | ||
- | <file> | ||
- | /dev/sda2 30212096 59572223 29360128 14G Linux LVM | ||
- | /dev/sda3 59572224 90114190 30541967 14,6G Linux LVM | ||
- | </file> | ||
- | |||
- | ====== LV anlegen ====== | ||
- | erstes Physical Volume anlegen: | ||
- | pvcreate /dev/sda2 | ||
- | |||
- | Bestehende Physical Volumes anzeigen: | ||
- | pvs | ||
- | |||
- | Volume Group mit Namen ''vg_system'' anlegen: | ||
- | (( ''-'' ( Minus ) in VG und LV Namen besser vermeiden )) | ||
- | 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-FilesSystem ): | ||
- | mkfs.ext4 /dev/vg_system/lv_test | ||
- | |||
- | === Testen === | ||
- | Mount-Point erstellen: | ||
- | mkdir /mnt/lv_test | ||
- | |||
- | logical volume am Mount-Point 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 / verkleinern ====== | ||
- | 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 +1g --resizefs /dev/vg_system/lv_test | ||
- | |||
- | ==== Volume und Dateisystem in zwei Schritten ==== | ||
- | lvextend -L +2g /dev/vg_system/lv_test | ||
- | |||
- | Dateisystem vergrößern: | ||
- | === ext3/4 === | ||
- | |||
- | resize2fs /dev/vg_system/lv_test | ||
- | |||
- | === xfs === | ||
- | ((Volume muss nach ''/mnt/lv_test'' gemountet sein)) | ||
- | xfs_growfs /mnt/lv_test | ||
- | |||
- | === btrfs === | ||
- | ((Volume muss nach ''/mnt/lv_test'' gemountet sein)) | ||
- | btrfs filesystem resize max /mnt/lv_test | ||
- | |||
- | ====== Snapshots ====== | ||
- | (( Falls das Kernel Modul dm-snapshot noch nicht geladen ist: | ||
- | modprobe dm-snapshot | ||
- | )) | ||
- | ===== 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 | ||
- | |||
- | (( bei XFS | ||
- | UUID vor dem Mounten anpassen: (verändert den Snapshot) | ||
- | uuid | ||
- | xfs_admin -U 97194112-5d40-11ee-9311-a7af42c4cc96 /dev/vgsystem/lvtest1 | ||
- | oder Mount-Option ''nouuid'' (ohne Änderung am Snapshot) | ||
- | mount -o ro,nouuid /dev/vg_system/lv_snapshot /mnt/snapshot1 | ||
- | oder (falls es ohne ''norecovery'' nicht geht) | ||
- | mount -o ro,nouuid,norecovery /dev/vg_system/lv_snapshot /mnt/snapshot1 | ||
- | )) | ||
- | |||
- | ==== 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 ==== | ||
- | |||
- | ===== Snapshot wiederherstellen ===== | ||
- | |||
- | lvconvert --merge /dev/vg_system/lv_snapshot1 | ||
- | lvchange --refresh /dev/vg_system/lv_test | ||
- | |||
- | ====== 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) | ||
- | |||
- | ((Unter CentOS 8 testen: | ||
- | lvconvert --raidintegrity y /dev/vg_system/lv_test | ||
- | blkdiscard /dev/sda6 | ||
- | )) | ||
- | |||
- | ====== Deduplizierung ====== | ||
- | Debian: [[https://github.com/dm-vdo/kvdo/issues/53|Kernel Modul noch nicht mainline und nicht in Debian stable]] | ||
- | * https://blog.defaultroutes.de/talks/sys4-storage/ | ||
- | * RedHat Doku | ||
- | |||