LVM Backup · 7 min read · Nov 05, 2025
LVM-Partitionen mit LVM-Snapshots sichern (und wiederherstellen)
LVM-Partitionen mit LVM-Snapshots sichern (und wiederherstellen)
Version 1.1
Autor: Falko Timme
Dieses Tutorial zeigt, wie Sie Sicherungen von LVM-Partitionen mit einer LVM-Funktion namens LVM-Snapshots erstellen können. Ein LVM-Snapshot ist eine exakte Kopie einer LVM-Partition, die alle Daten des LVM-Volumes zum Zeitpunkt der Erstellung des Snapshots enthält. Der große Vorteil von LVM-Snapshots ist, dass sie verwendet werden können, um die Ausfallzeit Ihrer Dienste/Datenbanken während der Sicherungen erheblich zu reduzieren, da ein Snapshot normalerweise in Bruchteilen einer Sekunde erstellt wird. Nachdem der Snapshot erstellt wurde, können Sie den Snapshot sichern, während Ihre Dienste und Datenbanken im normalen Betrieb sind.
Ich werde auch zeigen, wie man eine LVM-Partition aus einem Backup in einem zusätzlichen Kapitel am Ende dieses Tutorials wiederherstellt.
Dieses Dokument kommt ohne jegliche Gewährleistung! Ich gebe keine Garantie, dass dies bei Ihnen funktioniert!
1 Vorbemerkung
Ich habe dies auf einem Debian Etch-Server mit der IP-Adresse 192.168.0.100 und dem Hostnamen server1.example.com getestet. Er hat zwei Festplatten:
- /dev/sda (10GB), die eine kleine /boot-Partition (nicht-LVM), eine /-Partition (LVM, etwas weniger als 10GB) und eine Swap-Partition (LVM) enthält
- /dev/sdb (60GB), momentan ungenutzt; wird verwendet, um eine 30GB /backups-Partition (LVM) zu erstellen und für die Snapshots der /-Partition (10GB - das ist genug, da die /-Partition etwas weniger als 10GB ist).
Ich habe ein Debian Etch VMware-Image erstellt, das Sie herunterladen und in VMware Server oder VMware Player ausführen können (siehe https://www.howtoforge.com/import_vmware_images, um zu lernen, wie das geht). Es hat die gleichen Spezifikationen wie mein oben beschriebenes Testsystem. Das Root-Passwort ist howtoforge. Mit diesem VMware-Image können Sie die genau gleichen Schritte wie ich in diesem Tutorial ausführen, um sich mit der Verwendung von LVM-Snapshots vertraut zu machen.
Um die /-Partition aus Ihrem Backup wiederherzustellen (im letzten Kapitel dieses Tutorials behandelt), benötigen Sie eine Linux-Live-CD, die LVM unterstützt, wie Knoppix oder die Debian Etch Netinstall-CD, die Sie als Rettungs-CD verwenden können, wenn Sie “rescue” an der Boot-Eingabeaufforderung angeben. Ich werde in diesem Beispiel die Debian Etch Netinstall-CD verwenden (die Liste der Mirrors ist hier verfügbar: http://www.debian.org/CD/http-ftp/ - ich habe diese heruntergeladen: http://ftp.de.debian.org/debian-cd/4.0_r0/i386/iso-cd/debian-40r0-i386-netinst.iso).
Um ein Backup der /-Partition zu erstellen, werde ich wie folgt vorgehen: Ich werde einen Snapshot der /-Partition erstellen und danach ein Backup des Snapshots (anstatt der tatsächlichen /-Partition!) auf der /backups-Partition erstellen (natürlich können Sie dieses Backup überall speichern, wo Sie möchten - anstatt eine zusätzliche /backups-LVM-Partition zu erstellen, könnten Sie auch ein externes USB-Laufwerk verwenden). Das Backup kann mit Ihrer bevorzugten Backup-Lösung erstellt werden, z.B. mit tar oder dd. Danach werde ich den Snapshot löschen, da er nicht mehr benötigt wird und Systemressourcen verbrauchen würde.
Sie benötigen nicht unbedingt eine zweite HDD für die Snapshots - Sie können die erste verwenden, sofern Sie genügend freien (nicht partitionierten) Speicherplatz darauf haben, um Snapshots zu erstellen (Sie sollten den gleichen Speicherplatz für die Snapshots verwenden, den Sie für die Partition verwenden, die Sie sichern möchten). Und wie bereits erwähnt, können Sie ein USB-Laufwerk für die Sicherung der Snapshots verwenden.
Um mehr über LVM zu erfahren, sollten Sie dieses Tutorial lesen: https://www.howtoforge.com/linux_lvm
2 Erstellen Sie die /backups LVM-Partition
(Wenn Sie Ihre Backups woanders speichern möchten, z.B. auf einem externen USB-Laufwerk, müssen Sie dies nicht tun.)
Unsere aktuelle Situation sieht wie folgt aus:
pvdisplayserver1:~# pvdisplay
— Physisches Volume —
PV-Name /dev/sda5
VG-Name server1
PV-Größe 9.76 GB / nicht nutzbar 0
Allokierbar ja (aber voll)
PE-Größe (KByte) 4096
Gesamt-PE 2498
Freie PE 0
Allokierte PE 2498
PV-UUID vQIUga-221O-GIKj-81Ct-2ITT-bKPw-kKElpM
vgdisplayserver1:~# vgdisplay
— Volume-Gruppe —
VG-Name server1
System-ID
Format lvm2
Metadaten-Bereiche 1
Metadaten-Sequenz-Nr 3
VG-Zugriff lesen/schreiben
VG-Status veränderbar
MAX LV 0
Aktuelle LV 2
Offene LV 2
Max PV 0
Aktuelle PV 1
Aktives PV 1
VG-Größe 9.76 GB
PE-Größe 4.00 MB
Gesamt-PE 2498
Allok. PE / Größe 2498 / 9.76 GB
Freie PE / Größe 0 / 0
VG-UUID jkWyez-c0nT-LCaE-Bzvi-Q4oD-eD3Q-BKIOFC
lvdisplayserver1:~# lvdisplay
— Logisches Volume —
LV-Name /dev/server1/root
VG-Name server1
LV-UUID UK1rjH-LS3l-f7aO-240S-EwGw-0Uws-5ldhlW
LV-Schreibzugriff lesen/schreiben
LV-Status verfügbar
LV-Größe 9.30 GB
Aktuelle LE 2382
Segmente 1
Allokation erben
Vorab-Lese-Sektoren 0
Blockgerät 254:0
— Logisches Volume —
LV-Name /dev/server1/swap_1
VG-Name server1
LV-UUID 2PASi6-fQV4-I8sJ-J0yq-Y9lH-SJ32-F9jHaj
LV-Schreibzugriff lesen/schreiben
LV-Status verfügbar
LV-Größe 464.00 MB
Aktuelle LE 116
Segmente 1
Allokation erben
Vorab-Lese-Sektoren 0
Blockgerät 254:1
fdisk -lserver1:~# fdisk -l
Festplatte /dev/sda: 10.7 GB, 10737418240 Bytes
255 Köpfe, 63 Sektoren/Spur, 1305 Zylinder
Einheiten = Zylinder von 16065 * 512 = 8225280 Bytes
Gerät Boot Start Ende Blöcke Id System
/dev/sda1 * 1 31 248976 83 Linux
/dev/sda2 32 1305 10233405 5 Erweitert
/dev/sda5 32 1305 10233373+ 8e Linux LVM
Festplatte /dev/sdb: 64.4 GB, 64424509440 Bytes
255 Köpfe, 63 Sektoren/Spur, 7832 Zylinder
Einheiten = Zylinder von 16065 * 512 = 8225280 Bytes
Festplatte /dev/sdb enthält keine gültige Partitionstabelle
Festplatte /dev/dm-0: 9990 MB, 9990832128 Bytes
255 Köpfe, 63 Sektoren/Spur, 1214 Zylinder
Einheiten = Zylinder von 16065 * 512 = 8225280 Bytes
Festplatte /dev/dm-0 enthält keine gültige Partitionstabelle
Festplatte /dev/dm-1: 486 MB, 486539264 Bytes
255 Köpfe, 63 Sektoren/Spur, 59 Zylinder
Einheiten = Zylinder von 16065 * 512 = 8225280 Bytes
Festplatte /dev/dm-1 enthält keine gültige Partitionstabelle
Also enthält /dev/sda die logischen Volumes /dev/server1/root (/-Partition) und /dev/server1/swap_1 (Swap-Partition) sowie eine kleine /boot-Partition (nicht-LVM).
(Übrigens, /dev/server1/root ist dasselbe wie /dev/mapper/server1-root auf Debian Etch. Das erste ist ein Symlink zum zweiten; ich werde in diesem Tutorial beide Notationen verwenden. Das gleiche gilt für /dev/server1/swap_1 und /dev/mapper/server1-swap_1.)
Ich werde jetzt die Partition /dev/sdb1 erstellen und sie zur Volume-Gruppe server1 hinzufügen, und danach werde ich das Volume /dev/server1/backups erstellen (das 30GB anstelle der vollen 60GB von /dev/sdb haben wird, damit wir genügend Platz für die Snapshots haben), das ich auf /backups einhängen werde:
fdisk /dev/sdbserver1:~# fdisk /dev/sdb
Gerät enthält weder eine gültige DOS-Partitionstabelle noch ein Sun-, SGI- oder OSF-Disklabel
Erstelle ein neues DOS-Disklabel. Änderungen bleiben nur im Speicher,
bis Sie sich entscheiden, sie zu schreiben. Danach sind die vorherigen
Inhalte natürlich nicht mehr wiederherstellbar.
Die Anzahl der Zylinder für diese Festplatte ist auf 7832 gesetzt.
Es ist nichts falsch damit, aber dies ist größer als 1024,
und könnte in bestimmten Setups Probleme verursachen mit:
- Software, die beim Booten läuft (z.B. alte Versionen von LILO)
- Boot- und Partitionierungssoftware von anderen OSs
(z.B. DOS FDISK, OS/2 FDISK)
Warnung: Ungültige Flagge 0x0000 der Partitionstabelle 4 wird durch w(rite) korrigiert
Befehl (m für Hilfe): <– n
Befehlsaktion
e erweiterte
p primäre Partition (1-4)
<– p
Partitionsnummer (1-4): <– 1
Erster Zylinder (1-7832, Standardwert 1): <– [ENTER]
Verwende Standardwert 1
Letzter Zylinder oder +Größe oder +GrößeM oder +GrößeK (1-7832, Standardwert 7832): <– [ENTER]
Verwende Standardwert 7832
Befehl (m für Hilfe): <– t
Ausgewählte Partition 1
Hex-Code (Tippen Sie L, um Codes aufzulisten): <– 8e
Ändert den Systemtyp der Partition 1 auf 8e (Linux LVM)
Befehl (m für Hilfe): <– w
Die Partitionstabelle wurde geändert!
Rufe ioctl() auf, um die Partitionstabelle erneut zu lesen.
Synchronisiere Festplatten.
pvcreate /dev/sdb1
vgextend server1 /dev/sdb1
lvcreate –name backups –size 30G server1
mkfs.ext3 /dev/mapper/server1-backups
mkdir /backups
Jetzt lassen Sie uns unser /dev/server1/backups-Volume auf /backups einhängen:
mount /dev/mapper/server1-backups /backupsDamit dieses Volume automatisch eingehängt wird, wann immer Sie das System booten, müssen Sie /etc/fstab bearbeiten und eine Zeile wie diese hinzufügen:
vi /etc/fstab| [...] /dev/mapper/server1-backups /backups ext3 defaults,errors=remount-ro 0 1 |
Jetzt sieht unsere neue Situation so aus:
pvdisplayserver1:~# pvdisplay
— Physisches Volume —
PV-Name /dev/sda5
VG-Name server1
PV-Größe 9.76 GB / nicht nutzbar 0
Allokierbar ja (aber voll)
PE-Größe (KByte) 4096
Gesamt-PE 2498
Freie PE 0
Allokierte PE 2498
PV-UUID vQIUga-221O-GIKj-81Ct-2ITT-bKPw-kKElpM
— Physisches Volume —
PV-Name /dev/sdb1
VG-Name server1
PV-Größe 59.99 GB / nicht nutzbar 0
Allokierbar ja
PE-Größe (KByte) 4096
Gesamt-PE 15358
Freie PE 7678
Allokierte PE 7680
PV-UUID cvl1H5-cxRe-iyNg-m2mM-tjxM-AvER-rjqycO
vgdisplayserver1:~# vgdisplay
— Volume-Gruppe —
VG-Name server1
System-ID
Format lvm2
Metadaten-Bereiche 2
Metadaten-Sequenz-Nr 5
VG-Zugriff lesen/schreiben
VG-Status veränderbar
MAX LV 0
Aktuelle LV 3
Offene LV 3
Max PV 0
Aktuelle PV 2
Aktives PV 2
VG-Größe 69.75 GB
PE-Größe 4.00 MB
Gesamt-PE 17856
Allok. PE / Größe 10178 / 39.76 GB
Freie PE / Größe 7678 / 29.99 GB
VG-UUID jkWyez-c0nT-LCaE-Bzvi-Q4oD-eD3Q-BKIOFC
lvdisplayserver1:~# lvdisplay
— Logisches Volume —
LV-Name /dev/server1/root
VG-Name server1
LV-UUID UK1rjH-LS3l-f7aO-240S-EwGw-0Uws-5ldhlW
LV-Schreibzugriff lesen/schreiben
LV-Status verfügbar
LV-Größe 9.30 GB
Aktuelle LE 2382
Segmente 1
Allokation erben
Vorab-Lese-Sektoren 0
Blockgerät 254:0
— Logisches Volume —
LV-Name /dev/server1/swap_1
VG-Name server1
LV-UUID 2PASi6-fQV4-I8sJ-J0yq-Y9lH-SJ32-F9jHaj
LV-Schreibzugriff lesen/schreiben
LV-Status verfügbar
LV-Größe 464.00 MB
Aktuelle LE 116
Segmente 1
Allokation erben
Vorab-Lese-Sektoren 0
Blockgerät 254:1
— Logisches Volume —
LV-Name /dev/server1/backups
VG-Name server1
LV-UUID sXq2Xe-y2CE-Ycko-rCoE-M5kl-E1vH-KQRoP6
LV-Schreibzugriff lesen/schreiben
LV-Status verfügbar
LV-Größe 30.00 GB
Aktuelle LE 7680
Segmente 1
Allokation erben
Vorab-Lese-Sektoren 0
Blockgerät 254:2
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.