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 [2016/06/01 09:19] – [Daten von einem PV weg migrieren] ingo_wichmannadmin_grundlagen:lvm [2026/10/07 09:38] (aktuell) – [Speicherplatz überbuchen mit Thinpool] mm2
Zeile 7: Zeile 7:
 {{ :admin_grundlagen:lvm.png?200 |}} {{ :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 -6) +
-  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   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 ))
-''vg_system'' ist hier der Name der VolumeGroup +  vgcreate vg_system /dev/sda2
-  vgcreate vg_system /dev/sda2 /dev/sda3+
  
-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: ''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 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/vg_system/lv_test+  mkfs.ext4 /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: +Testweise Daten aus ''/usr/share''-Verzeichnis kopieren: 
-  mount /dev/vg_system/lv_test /mnt/lv_test+  cp -a /usr/share/. /mnt/lv_test 
 +  df -h /mnt/lv_test
  
-Testweise bin-Verzeichnis kopieren: +====== LV vergrößern ====== 
-  cp -a /home/. /mnt/lv_test +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. 
- +
-====== LV vergrößern / verkleinern ====== +
-Der Vorteil eines LV ist, daß es zur Laufzeit vergrößert und verkleinert werden kann.  +
- +
-===== Volume Group um PV vergrößern ===== +
-nur falls auf Volume Group nicht mehr genug Platz +
-  vgextend <Name Volume group> <Name physical volume> +
-  vgextend vg_system /dev/sda5+
  
 ===== Logical Volume & Dateisystem vergrößern ===== ===== Logical Volume & Dateisystem vergrößern =====
-  lvresize --size +1g --resizefs /dev/vg_system/LogVol01 +==== Volume und Dateisystem in einem Schritt ==== 
-oder +((geht nicht bei btrfs)) 
-  lvextend -L +2g /dev/vg_system/LogVol00+  lvresize --size +2g --resizefs /dev/vg_system/lv_test 
 +  df -h /mnt/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: +=== Dateisystem vergrößern === 
-  * ext3+== ext3/4 == 
 +  resize2fs /dev/vg_system/lv_test
  
-  resize2fs /dev/vg_system/LogVol00+== xfs == 
 +((Volume muss nach ''/mnt/lv_test'' gemountet sein)) 
 +  xfs_growfs /mnt/lv_test
  
-  * xfs+== btrfs == 
 +((Volume muss nach ''/mnt/lv_test'' gemountet sein)) 
 +  btrfs filesystem resize max /mnt/lv_test
  
-  xfs_growfs /home +++++ 
- +====== LV verkleinern ====== 
-====== Snapshot erstellen ====== +++++ LV verkleinern | 
- +geht nur mit ext2/3/4 Dateisystem 
-(( Falls das Kernel Modul dm-snapshot noch nicht geladen ist:+  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 ))+
  
 +  lvcreate --snapshot --extents 10%ORIGIN --name lv_snapshot1 /dev/vg_system/lv_test
 +  mount -m -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 -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
 +
 +==== Snapshot entfernen ====
 +  umount /mnt/snapshot1
 +  lvremove /dev/vg_system/lv_snapshot1
 +
 +===== 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 ====== ====== Physical Volume entfernen ======
 +zweites Physical Volume anlegen:
 +  pvcreate /dev/sda3
 +  vgextend vg_system /dev/sda3
 +
   pvmove /dev/sda2   pvmove /dev/sda2
-  vgreduce myvg /dev/sda2+  vgreduce vg_system /dev/sda2
   pvremove /dev/sda2   pvremove /dev/sda2
-====== Hinweise ======+  wipefs -af /dev/sda2
  
-Falls man vergessen hat das LVM in die Fstab einzutragen, sind diese nach einem Neustart verschwunden. 
-  lvdisplay 
-listet die LVMs dann als "LV Status              NOT available" auf. 
  
-Lösung: Vgs von Hand aktivieren:+====== Logical Volume spiegeln (RAID 1) ====== 
 +++++ Logical Volume spiegeln (RAID 1) | 
 +zweites Physical Volume anlegen: 
 +  pvcreate /dev/sda2 
 +  vgextend vg_system /dev/sda2
  
-  lvchange -a y vg_system+Logical Volume zu RAID 1 konvertieren: 
 +  lvconvert --type raid1 /dev/vg_system/lv_test 
 +  journalctl -kf 
 +(warten bis "recovery done" erscheint)
  
-Es kann praktisch sein, die //extent size// zu ändern, z.B. um sie passend für ein RAID-stripe set zu machen +((Unter CentOS 8 testen: 
- +  lvconvert --raidintegrity y /dev/vg_system/lv_test 
-  vgchange -s 1m +  blkdiscard /dev/sda6 
-  vgs -v +)) 
- +++++ 
-====== Links ====== +====== Deduplizierung ====== 
-  * http://tldp.org/HOWTO/LVM-HOWTO +++++ Deduplizierung | 
-  * http://www.linux-magazin.de/heft_abo/ausgaben/2005/10/ueber_alle_fallen +Debian: [[https://github.com/dm-vdo/kvdo/issues/53|Kernel Modul ab Kernel 6.9 mainline und nicht in Debian stable]] 
-  * https://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/Cluster_Logical_Volume_Manager/index.html +  * https://blog.defaultroutes.de/talks/sys4-storage/ 
-  * http://www.novell.com/documentation/sles10/sles_admin/data/cha_advdisk.html+  * RedHat Doku
  
 +++++
admin_grundlagen/lvm.1464772797.txt.gz · Zuletzt geändert: 2016/06/01 09:19 von ingo_wichmann