Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


lpi1:lvm

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Nächste Überarbeitung Beide Seiten, nächste Überarbeitung
lpi1:lvm [2019/07/02 15:47]
ingo_wichmann
lpi1:lvm [2024/02/25 06:07]
127.0.0.1 Externe Bearbeitung
Zeile 7: Zeile 7:
 {{ :​admin_grundlagen:​lvm.png?​200 |}} {{ :​admin_grundlagen:​lvm.png?​200 |}}
 ====== LVM einrichten ====== ====== LVM einrichten ======
-Pakete installieren ​Debian ​):+===== Pakete installieren ​====== 
 +Debian:
   apt install lvm2 parted   apt install lvm2 parted
  
-Boot-Initialisierung einrichten( SuSE ) +openSuSE
-  ​/​etc/​init.d/​boot.lvm start +  ​zypper install ​lvm
-  chkconfig boot.lvm on+
  
 +===== Partitionierung =====
 LVM-Partition anlegen: LVM-Partition anlegen:
   parted /dev/sda print   parted /dev/sda print
Zeile 38: Zeile 39:
   pvs   pvs
  
-Volume Group anlegen ​( bestehend aus den zwei physical volumes ):+Volume Group mit Namen ''​vg_system'' ​anlegen:
 (( ''​-''​ ( Minus ) in VG und LV Namen besser vermeiden )) (( ''​-''​ ( Minus ) in VG und LV Namen besser vermeiden ))
-''​vg_system''​ ist hier der Name der VolumeGroup 
   vgcreate vg_system /dev/sda2   vgcreate vg_system /dev/sda2
  
-Volume Group aktivieren:+Volume Group aktivieren: ​(optional)
   vgchange -a y vg_system   vgchange -a y vg_system
  
Zeile 49: Zeile 49:
   vgs   vgs
  
-Logical Volume ​anlegen: ​''​lv_test'' ​ist hier der Name des LogicalVolume+Logical Volume ​mit Namen ''​lv_test'' ​anlegen:
   lvcreate --size 5G --name /​dev/​vg_system/​lv_test   lvcreate --size 5G --name /​dev/​vg_system/​lv_test
  
Zeile 55: Zeile 55:
   lvs   lvs
  
-Formatieren ( hier mit ext4-FilesSystem ​):+Formatieren ( hier mit ext4-Dateisystem ​):
   mkfs.ext4 /​dev/​vg_system/​lv_test   mkfs.ext4 /​dev/​vg_system/​lv_test
  
 === Testen === === Testen ===
-Mount-Point ​erstellen:+Mountpoint ​erstellen:
   mkdir /​mnt/​lv_test   mkdir /​mnt/​lv_test
  
-logical volume an Mount-Point in Dateisystem ​einhängen:+Logical Volume am Mountpoint ​einhängen:
   mount /​dev/​vg_system/​lv_test /​mnt/​lv_test   mount /​dev/​vg_system/​lv_test /​mnt/​lv_test
  
-Testweise /​usr/​bin-Verzeichnis kopieren:+Testweise ​Daten aus ''​/usr/bin''​-Verzeichnis kopieren:
   cp -a /usr/bin/. /​mnt/​lv_test   cp -a /usr/bin/. /​mnt/​lv_test
  
-====== LV vergrößern ​/ verkleinern ​======+====== 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. ​ 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. ​
  
-===== Volume ​Group um PV vergrößern ===== +===== Logical ​Volume ​& Dateisystem ​vergrößern ===== 
-nur falls auf Volume ​Group nicht mehr genug Platz +==== Volume ​und Dateisystem in einem Schritt ==== 
-  ​vgextend <Name Volume group> <Name physical volume>​ +(geht nicht bei btrfs) 
-  vgextend vg_system ​/dev/sda5+  ​lvresize --size +2g --resizefs ​/dev/vg_system/​lv_test
  
-===== Logical ​Volume ​Dateisystem ​vergrößern ===== +++++ Volume und Dateisystem in zwei Schritten | 
-  ​lvresize --size +1g --resizefs /​dev/​vg_system/​lv_test +==== Volume ​und Dateisystem ​in zwei Schritten ​==== 
-oder+=== LV vergrößern ===
   lvextend -L +2g /​dev/​vg_system/​lv_test   lvextend -L +2g /​dev/​vg_system/​lv_test
  
-Dateisystem vergrößern: +=== Dateisystem vergrößern ​=== 
-  ​* ​ext3/4 +== ext3/​4 ​==
   resize2fs /​dev/​vg_system/​lv_test   resize2fs /​dev/​vg_system/​lv_test
  
-  * xfs +== xfs == 
 +((Volume muss nach ''/​mnt/​lv_test''​ gemountet sein))
   xfs_growfs /​mnt/​lv_test   xfs_growfs /​mnt/​lv_test
  
-====== Snapshot erstellen ======+== 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: (( Falls das Kernel Modul dm-snapshot noch nicht geladen ist:
   modprobe dm-snapshot   modprobe dm-snapshot
 )) ))
-  lvcreate --snapshot --size 100M --name lv_snapshot1 /​dev/​vg_system/​lv_test +===== Snapshot erstellen & löschen ===== 
-  mkdir /​mnt/​snapshot1 +==== Snapshot erstellen ====
-  mount -o ro /​dev/​vg_system/​lv_snapshot1 /​mnt/​snapshot1+
  
 +  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 (( bei XFS
-  ​mount -o ro,nouuid /​dev/​vg_system/​lv_snapshot /​mnt/​snapshot1+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) oder (falls es ohne ''​norecovery''​ nicht geht)
-  mount -o ro,​nouuid,​norecovery /​dev/​vg_system/​lv_snapshot /​mnt/​snapshot1+  mount -o ro,noatime,​nouuid,​norecovery /​dev/​vg_system/​lv_snapshot /​mnt/​snapshot1
 )) ))
-(( <​del>​Vorsicht bei XFS, das Snapshot wird nicht lesbar sein. Generell eine gute Idee, das Volume vorher read-only zu mounten</​delIch glaube das stimmt nicht mehr. Siehe ''​man fsfreeze''​. ))+-> jetzt könnte man eine Kopie von ''​/​mnt/​snapshot1'' ​auf einen anderen Datenträger ziehen
  
-== Snapshot entfernen == +==== Snapshot entfernen ​==== 
-wie jedes lv+  ​umount /​mnt/​snapshot1
   lvremove /​dev/​vg_system/​lv_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 ====== ====== Physical Volume entfernen ======
 zweites Physical Volume anlegen: zweites Physical Volume anlegen:
Zeile 117: Zeile 167:
   vgreduce vg_system /dev/sda2   vgreduce vg_system /dev/sda2
   pvremove /dev/sda2   pvremove /dev/sda2
-====== Hinweise ====== 
  
-Falls man vergessen hat das LVM in die Fstab einzutragen,​ sind diese nach einem Neustart verschwunden. +====== Logical Volume spiegeln (RAID 1) ====== 
-  ​lvdisplay +zweites Physical Volume anlegen: 
-listet die LVMs dann als "LV Status ​             NOT available"​ auf.+  ​pvcreate /dev/sda2 
 +  ​vgextend vg_system /dev/sda2
  
-Lösung: Vgs von Hand aktivieren:+Logical Volume zu RAID 1 konvertieren: 
 +  lvconvert --type raid1 /​dev/​vg_system/​lv_test 
 +  journalctl -kf 
 +(warten bis "​recovery done" erscheint)
  
-  lvchange ​-vg_system +((Unter CentOS 8 testen: 
- +  lvconvert --raidintegrity ​y /dev/vg_system/lv_test 
-Es kann praktisch sein, die //extent size// zu ändern, z.B. um sie passend für ein RAID-stripe set zu machen+  blkdiscard ​/dev/sda6 
 +))
  
-  vgchange ​-s 1m +====== Deduplizierung ====== 
-  ​vgs -v+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
  
-====== Links ====== 
-  * http://​tldp.org/​HOWTO/​LVM-HOWTO 
-  * http://​www.linux-magazin.de/​heft_abo/​ausgaben/​2005/​10/​ueber_alle_fallen 
-  * https://​www.redhat.com/​docs/​manuals/​enterprise/​RHEL-5-manual/​Cluster_Logical_Volume_Manager/​index.html 
-  * http://​www.novell.com/​documentation/​sles10/​sles_admin/​data/​cha_advdisk.html 
  
lpi1/lvm.txt · Zuletzt geändert: 2024/03/19 10:37 von ingo_wichmann