Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung Nächste Überarbeitung Beide Seiten, nächste Überarbeitung | ||
admin_grundlagen:lvm [2022/05/05 10:10] ingo_wichmann [Volume und Dateisystem in zwei Schritten] |
admin_grundlagen:lvm [2024/02/25 05:25] ingo_wichmann |
||
---|---|---|---|
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 | ||
+ | openSuSE: | ||
+ | zypper install lvm | ||
+ | |||
+ | ===== Partitionierung ===== | ||
LVM-Partition anlegen: | LVM-Partition anlegen: | ||
parted /dev/sda print | parted /dev/sda print | ||
Zeile 50: | 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 / verkleinern ====== | ||
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. | ||
- | |||
===== Logical Volume & Dateisystem vergrößern ===== | ===== Logical Volume & Dateisystem vergrößern ===== | ||
- | ==== inkl. Dateisystem ==== | + | ==== Volume und Dateisystem in einem Schritt ==== |
(geht nicht bei btrfs) | (geht nicht bei btrfs) | ||
lvresize --size +1g --resizefs /dev/vg_system/lv_test | lvresize --size +1g --resizefs /dev/vg_system/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 | 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 | ||
- | === btrfs === | + | == btrfs == |
- | (Volume muss nach /mnt/lv_ gemountet sein) | + | ((Volume muss nach ''/mnt/lv_test'' gemountet sein)) |
btrfs filesystem resize max /mnt/lv_test | btrfs filesystem resize max /mnt/lv_test | ||
- | ====== Snapshot erstellen ====== | + | ====== 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 |
)) | )) | ||
+ | -> 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 | umount /mnt/snapshot1 | ||
lvremove /dev/vg_system/lv_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* | ||
+ | umount /mnt/lv_test | ||
+ | lvchange -an /dev/vg_system/lv_test | ||
+ | lvchange -ay /dev/vg_system/lv_test | ||
+ | mount /dev/vg_system/lv_test /mnt/lv_test | ||
+ | ls /mnt/lv_test/s* | ||
+ | |||
====== Physical Volume entfernen ====== | ====== Physical Volume entfernen ====== | ||
zweites Physical Volume anlegen: | zweites Physical Volume anlegen: | ||
Zeile 115: | Zeile 141: | ||
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 -a y 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 | ||