Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:lvm

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
admin_grundlagen:lvm [2019/07/02 15:49]
admin_grundlagen:lvm [2024/03/19 10:37] (aktuell)
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-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 ====
 +++++ 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 ==
 +((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
 +
 +++++
 +====== LV verkleinern ======
 +++++ 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 ======
 +(( 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=$(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
 +))
 +-> 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 & 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) ======
 +++++ 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 ======
 +++++ Deduplizierung |
 +Debian: [[https://​github.com/​dm-vdo/​kvdo/​issues/​53|Kernel Modul ab Kernel 6.9 mainline und nicht in Debian stable]]
 +  * https://​blog.defaultroutes.de/​talks/​sys4-storage/​
 +  * RedHat Doku
 +
 +++++