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
Nächste Überarbeitung
Vorherige Überarbeitung
Nächste Überarbeitung Beide Seiten, nächste Überarbeitung
admin_grundlagen:lvm [2012/05/22 16:07]
stefan_miethke [Snapshot erstellen]
admin_grundlagen:lvm [2024/02/25 05:58]
ingo_wichmann [LV verkleinern]
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 ) +
-  /​etc/​init.d/​boot.lvm start +
-  chkconfig boot.lvm on+
  
 +===== Partitionierung =====
 LVM-Partition anlegen: 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:+erstes ​Physical Volume anlegen:
   pvcreate /dev/sda2   pvcreate /dev/sda2
-  pvcreate /dev/sda3 
  
 Bestehende Physical Volumes anzeigen: Bestehende Physical Volumes anzeigen:
   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
  
Zeile 38: Zeile 49:
   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 ​/​dev/​vg_system/​lv_test
-  lvcreate --size ​5GB --name lv_test ​vg_system+
  
 Bestehende Logical Volumes anzeigen: Bestehende Logical Volumes anzeigen:
   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:+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 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 ​und verkleinert ​werden kann.\\ +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 ​vergrößern ​====+==== Volume ​und Dateisystem in zwei Schritten ​==== 
-  lvextend -L +2g /​dev/​vg_system/​LogVol00 +=== LV vergrößern === 
-  lvresize --size +1g /​dev/​vg_system/​LogVol01 +  ​lvextend -L +2g /​dev/​vg_system/​lv_test
-===== Dateisystem ​vergrößern ​===== +
-==== ext3 ==== +
-  ​resize2fs ​/​dev/​vg_system/​LogVol00+
  
-==== 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
  
-  (modprobe dm-snapshot) +====== LV verkleinern ====== 
-  ​(mount ​-o remount,​ro ​/dev/vg_system/lv_test) +geht nur mit ext2/3/4 Dateisystem 
-  ​lvcreate ​--snapshot ​--size 100M --name lv_snapshot ​/dev/vg_system/lv_test +  cd /mnt 
-  mount -o ro /​dev/​vg_system/​lv_snapshot ​/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
  
-====== ​Hinweise ​======+====== ​Snapshots ​====== 
 +(( Falls das Kernel Modul dm-snapshot noch nicht geladen ist: 
 +  modprobe dm-snapshot 
 +)) 
 +===== Snapshot erstellen & löschen ===== 
 +==== Snapshot erstellen ​====
  
-Falls man vergessen hat das LVM in die Fstab einzutragensind diese nach einem Neustart verschwunden. +  lvcreate --snapshot --size 200M --name lv_snapshot1 /​dev/​vg_system/​lv_test 
-  ​lvdisplay +  mkdir /​mnt/​snapshot1 
-listet die LVMs dann als "LV Status ​             NOT available" auf.+  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 ==== 
 +  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) ====== 
 +zweites Physical Volume anlegen: 
 +  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 ​-y vg_system+((Unter CentOS 8 testen: 
 +  lvconvert ​--raidintegrity ​/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
  
-====== 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 
  
admin_grundlagen/lvm.txt · Zuletzt geändert: 2024/03/19 10:37 (Externe Bearbeitung)