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
admin_grundlagen:lvm [2012/05/22 16:09]
stefan_miethke [Snapshot erstellen]
admin_grundlagen:lvm [2024/03/19 10:37] (aktuell)
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 +++++ Volume und Dateisystem in zwei Schritten | 
-  lvresize --size ​+1g /​dev/​vg_system/​LogVol01 +=== LV vergrößern === 
-===== Dateisystem ​vergrößern ​===== +  ​lvextend -L +2g /​dev/​vg_system/​lv_test
-==== 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) +++++ 
-  ​(mount ​-o remount,​ro ​/dev/vg_system/lv_test) +====== LV verkleinern ====== 
-  ​lvcreate ​--snapshot ​--size 100M --name lv_snapshot ​/dev/vg_system/lv_test +++++ LV verkleinern | 
-  mount -o ro /​dev/​vg_system/​lv_snapshot ​/mnt/ +geht nur mit ext2/3/4 Dateisystem 
-(( Vorsicht bei XFS, das Snapshot wird nicht lesbar sein. Generell eine gute Idee, das Volume vorher read-only zu mounten ​)) +  cd /mnt 
-====== ​Hinweise ​======+  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 ​====
  
-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
  
-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 --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)
  
-====== ​Links ====== +((Unter CentOS 8 testen: 
-  * http://tldp.org/HOWTO/LVM-HOWTO +  lvconvert --raidintegrity y /​dev/​vg_system/​lv_test 
-  * http://www.linux-magazin.de/​heft_abo/​ausgaben/​2005/​10/​ueber_alle_fallen +  blkdiscard /dev/sda6 
-  * 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+++++ 
 +====== ​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.1337702946.txt.gz · Zuletzt geändert: 2012/05/22 16:09 von stefan_miethke