Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:lvm

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
admin_grundlagen:lvm [2012/12/12 09:05] – [LV anlegen] stefan_miethkeadmin_grundlagen:lvm [2026/10/07 09:38] (aktuell) – [Speicherplatz überbuchen mit Thinpool] mm2
Zeile 1: Zeile 1:
 ====== Aufbau eines logical volumes (LV) ====== ====== Aufbau eines logical volumes (LV) ======
-Ein LV besteht aus mehreren Ebenen. Die unterste Ebene bilden die sogenannten physical volumes ( PV ).\\  +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 ).\\  +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.\\ +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. In der Summe können die LVs die Größe der VG natürlich nicht überschreiten.
  
 +{{ :admin_grundlagen:lvm.png?200 |}}
 ====== LVM einrichten ====== ====== LVM einrichten ======
-Pakete installieren ( Debian ): +===== Pakete installieren ====== 
-  aptitude install lvm2 parted+Debian: 
 +  apt install lvm2 parted
  
-Kernel Modul laden (Ubuntu): +openSuSE: 
-  modprobe dm_mod+  zypper install lvm
  
-Boot-Initialisierung einrichten: ( SuSE ) +===== Partitionierung ===== 
-  /etc/init.d/boot.lvm start +Partition mit Typ LVM anlegen:
-  chkconfig boot.lvm on +
- +
-Boot-Initialisierung einrichten: ( Debian ) +
-  service lvm2 start +
-  /etc/init.d/lvm2 start +
- +
-LVM-Partition anlegen:+
   parted /dev/sda print   parted /dev/sda print
   parted /dev/sda set 2 lvm on   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 ====== ====== LV anlegen ======
-Physical Volume anlegen:+LVM-Blockdevice zum Physical Volume machen:
   pvcreate /dev/sda2   pvcreate /dev/sda2
-  pvcreate /dev/sda3 
  
-Bestehende Physical Volumes anzeigen:+Bestehende Physical Volumes anzeigen: (( oder ausführlicher mit 
 +  pvdisplay 
 +))
   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 ))
-  vgcreate vg_system /dev/sda2 /dev/sda3+  vgcreate vg_system /dev/sda2
  
-Volume Group aktivieren:+Volume Group aktivieren: (optional)
   vgchange -a y vg_system   vgchange -a y vg_system
  
-Bestehende Volume Groups anzeigen:+Bestehende Volume Groups anzeigen: (( oder ausführlicher mit 
 +  vgdisplay 
 +))
   vgs   vgs
  
-Logical Volume anlegen: +Logical Volume mit Namen ''lv_test'' anlegen: 
-  lvcreate <optionen> --name <Name des LV> <Name der zugehörigen Volume Group>  +  lvcreate --size 5G --name lv_test vg_system
-  lvcreate --size 5GB --name lv_test vg_system+
  
-Bestehende Logical Volumes anzeigen:+Bestehende Logical Volumes anzeigen: (( oder ausführlicher mit 
 +  lvdisplay 
 +))
   lvs   lvs
  
-Formatieren ( hier mit ext3-FilesSystem ): +Formatieren ( hier mit ext4-Dateisystem ): 
-  mkfs.ext3 /dev/<Name der VolumeGroup>/<Name des LogicalVolume> +  mkfs.ext4 /dev/vg_system/lv_test
-  mkfs.ext3 /dev/vg_system/lv_test+
  
 === Testen === === Testen ===
-Mount-Point erstellen: +Logical Volume am Mountpoint einhängen: 
-  mkdir /mnt/lv_test +  mount -m /dev/vg_system/lv_test /mnt/lv_test
-logical volume an Mount-Point in Dateisystem einhängen: +
-  mount /dev/vg_system/lv_test /mnt/lv_test +
-Testweise bin-Verzeichnis kopieren: +
-  cp -a /home/. /mnt/lv_test+
  
-====== LV vergrößern / verkleinern ====== +Testweise Daten aus ''/usr/share''-Verzeichnis kopieren: 
-Der Vorteil eines LV ist, daß es zur Laufzeit vergrößert und verkleinert werden kann.\\ +  cp -a /usr/share/. /mnt/lv_test 
 +  df -h /mnt/lv_test
  
-===== Volume Group um PV vergrößern ===== +====== LV vergrößern ====== 
-nur falls auf Volume Group nicht mehr genug Platz +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. 
-  vgextend <Name Volume group> <Name physical volume> +
-  vgextend vg_system /dev/sda5+
  
-===== Logical Volume vergrößern ===== +===== Logical Volume & Dateisystem vergrößern ===== 
-  lvextend -L +2g /dev/vg_system/LogVol00 +==== Volume und Dateisystem in einem Schritt ==== 
-  lvresize --size +1g /dev/vg_system/LogVol01 +((geht nicht bei btrfs)) 
-===== Dateisystem vergrößern ===== +  lvresize --size +2g --resizefs /dev/vg_system/lv_test 
-==== ext3 ==== +  df -h /mnt/lv_test 
-  resize2fs /dev/vg_system/LogVol00+==== Volume und Dateisystem in zwei Schritten ==== 
 +++++ Volume und Dateisystem in zwei Schritten | 
 +=== LV vergrößern === 
 +  lvextend -L +2g /dev/vg_system/lv_test
  
-==== xfs ==== +=== Dateisystem vergrößern === 
-  xfs_growfs /home+== ext3/4 == 
 +  resize2fs /dev/vg_system/lv_test
  
 +== xfs ==
 +((Volume muss nach ''/mnt/lv_test'' gemountet sein))
 +  xfs_growfs /mnt/lv_test
  
-====== Snapshot erstellen ======+== btrfs == 
 +((Volume muss nach ''/mnt/lv_test'' gemountet sein)) 
 +  btrfs filesystem resize max /mnt/lv_test
  
-(( Falls das Kernel Modul dm-snapshot noch nicht geladen ist:+++++ 
 +====== LV verkleinern ====== 
 +++++ LV verkleinern | 
 +geht nur mit ext2/3/4 Dateisystem 
 +  cd /mnt 
 +  df -hT . lv_test 
 +Backup erstellen: 
 +  tar -caf lv_test.tar.zst 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 
 +)) 
 +ext4-Dateisystem und LV verkleinern: 
 +  lvreduce --size 3G --resizefs /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: ((TODO: tar check command)) 
 +  rm lv_test.tar.zst 
 +++++ 
 +====== Snapshots ====== 
 +(( Falls das Kernel Modul ''dm-snapshot'' nicht automatisch geladen wird:
   modprobe dm-snapshot   modprobe dm-snapshot
 )) ))
-  mount -o remount,ro /dev/vg_system/lv_test +===== Snapshot erstellen & löschen ===== 
-  lvcreate --snapshot --size 100M --name lv_snapshot /dev/vg_system/lv_test +==== Snapshot erstellen ====
-  mount -o ro /dev/vg_system/lv_snapshot /mnt/ +
-(( Vorsicht bei XFS, das Snapshot wird nicht lesbar sein. Generell eine gute Idee, das Volume vorher read-only zu mounten )) +
-====== Hinweise ======+
  
-Falls man vergessen hat das LVM in die Fstab einzutragen, sind diese nach einem Neustart verschwunden. +  lvcreate --snapshot --extents 10%ORIGIN --name lv_snapshot1 /dev/vg_system/lv_test 
-  lvdisplay +  mount -m -o ro,noatime /dev/vg_system/lv_snapshot1 /mnt/snapshot1 
-listet die LVMs dann als "LV Status              NOT available" auf.+(( 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 -m -o ro,noatime,nouuid /dev/vg_system/lv_snapshot /mnt/snapshot1 
 +oder (falls es ohne ''norecovery'' nicht geht) 
 +  mount -m -o ro,noatime,nouuid,norecovery /dev/vg_system/lv_snapshot /mnt/snapshot1 
 +)) 
 +-> jetzt könnte man z.B. eine Kopie von ''/mnt/snapshot1'' auf einen anderen Datenträger ziehen
  
-Lösung: Vgs von Hand aktivieren:+==== Snapshot entfernen ==== 
 +  umount /mnt/snapshot1 
 +  lvremove /dev/vg_system/lv_snapshot1
  
-  lvchange -a y vg_system+===== Snapshot erstellen & wiederherstellen ===== 
 +++++ Snapshot erstellen & wiederherstellen | 
 +==== Snapshot erstellen ==== 
 +  lvcreate --snapshot --extents 10%ORIGIN --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* 
 +++++ 
 +====== Speicherplatz überbuchen mit Thinpool ====== 
 +++++ Speicherplatz überbuchen mit Thinpool | 
 +===== Speicherplatz für Thinpool reservieren ===== 
 +  lvcreate --thinpool thinpool --size 100G vg_system 
 +Prüfen: 
 +  lvs 
 +  lvdisplay /dev/vg_system/thinpool 
 +===== thin LV anlegen ===== 
 +  lvcreate --thin --virtualsize 10T --name my_thin_lv --thinpool thinpool vg_system 
 +-> Meldungen lesen 
 +  mkfs.ext4 /dev/mapper/vg_system-my_thin_lv 
 +  mount -m /dev/mapper/vg_system-my_thin_lv /mnt/thin_air 
 +  df -h /mnt/thin_air 
 +++++ 
 +====== 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
 +  wipefs -af /dev/sda2
  
-====== 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 
  
 +====== 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
 +
 +++++
admin_grundlagen/lvm.1355303121.txt.gz · Zuletzt geändert: 2012/12/12 09:05 von stefan_miethke