LVM-Snapshots vs. Dateisystem-Snapshots


32

Soweit mir bekannt ist, können mit LVM Momentaufnahmen eines Volumes erstellt werden. Es gibt auch eine Reihe von Dateisystemen (ZFS, Btrfs, Reiserfs, ...), die Snapshots unterstützen.

Allerdings habe ich den Unterschied zwischen LVM-Snapshots und Dateisystem-Snapshots nie verstanden. Wenn es möglich ist, Snapshots mit LVM zu erstellen, warum nimmt sich jemand Zeit, um sie in einem Dateisystem zu implementieren?

Bearbeiten: Wird einer von ihnen in bestimmten Situationen bevorzugt? Warum?

Antworten:


25

Bei den meisten dieser Snapshots handelt es sich um Copy-on-Write-Snapshots, die auf selten aktualisierten Systemen sehr schnell und sehr kostengünstig (speicherseitig) sind. LVM-Snapshots sind COW-Snapshots, ZFS / BTRFS haben beide einen COW-Modus für Snapshots, Reiserfs hat keine Snapshots von Haus aus, Novells NSS-Dateisystem ist ebenso COW wie Shadow Copy-Volumes für Windows NTFS-Volumes.

Copy-on-Write-Snapshots nehmen eine Kopie der Metadaten des Zieldatenträgers in den Snapshot-Pool auf. Je nachdem, welchen COW-Modus sie verwenden, kopieren sie dann Daten, die durch neue Schreibvorgänge überschrieben werden, in den Snapshot-Pool, bevor sie die neuen Daten schreiben.

ZFS und (falls noch nicht vorhanden) BTRFS verfügen über vollständige Snapshot-Funktionen. Dies ist nützlich, um auf separate Medien zuzugreifen, was wiederum für Sneakernet-Backup-Systeme mit Wechselmedien sehr praktisch ist. ZFS nicht nennt dies nicht eine „Momentaufnahme“ , obwohl sie die Fähigkeit des Hebels ZFS zu verwenden zfs sendund zfs recvVolumes und Snapshots über das Netzwerk auf eine Remote - Host (oder lokalen Array) zu kopieren.

Ich bevorzuge Snapshot-Fähigkeiten auf Dateisystemebene gegenüber LVM-Fähigkeiten, da ich dem Dateisystem selbst besser vertraue, um den Prozess sauber zu handhaben. Da jedoch keine direkte Dateisystemunterstützung vorhanden ist, sollte LVM in den meisten Fällen einwandfrei funktionieren.

COW-Snapshots sind gut, wenn Sie ein zeitnahes Backup benötigen, das für kurzfristige Wiederherstellungsanforderungen sehr schnell erstellt werden kann. Zum Beispiel ein täglicher oder viermal täglicher Schnappschuss, der eine Woche lang aufbewahrt werden soll. Dies ist praktisch, wenn Sie Dateien wiederherstellen möchten, die Benutzer versehentlich gelöscht haben, oder ein Rollback eines gesamten Systems auf eine Konfiguration vor dem Update durchführen möchten. Sie können auch von einigen Backup-Systemen als vollständig stillgelegtes Dateisystem verwendet werden, so dass Backups, die vom Snapshot-Volume erstellt wurden, sich nicht um offene Dateien sorgen müssen. Der wichtigste Punkt ist, dass sich die Snapshot-Volumes auf demselben Speicher befinden wie das primäre Volume. Geben Sie also im Falle eines Array-Ausfalls nichts an.

VOLLSTÄNDIGE Schnappschüsse sind gut, wenn sie auf entfernbare oder entfernte Medien übertragen werden. Wenn Sie über Netzwerkspeicher verfügen, kann das Ziel ein anderes iSCSI- oder Fibre-Channel-Array sein als das, in dem sich der primäre Speicher befindet. Auf diese Weise können Sie einige Arten von Fehlern außerhalb des Arrays schützen. Wenn Sie Wechselmedien wie ein 3-TB-ESATA-Laufwerk verwenden, können Sie es sogar als einfaches Backup-to-Disk-System verwenden. Diese Snapshots KÖNNEN sich auf einer anderen Hardware befinden als ihre COW-Brüder. Sie sind daher für die Ausfallsicherheit nützlich.


On Full vs COW Schnappschüsse.

Der Begriff "Schnappschuss" hat sich im Laufe der Jahre etwas verschoben. Ich bin mir ziemlich sicher, dass dies in diesem Jahr "eine Kopie der Originaldaten beim Schreiben mit Blockverschiebung" bedeutet. Nach dieser Definition handelt es sich bei dem oben dargestellten "vollständigen" Snapshot nicht um einen Snapshot, sondern um eine Replikation. Einige Speicheranbieter haben in der Vergangenheit unterschiedliche Definitionen von "Snapshot" verwendet, um verschiedene von ihnen ausgeführte Operationen auf Blockebene zu beschreiben. Verwirrend sind Systeme, die Snapshots als Teil des Replikationsprozesses verwenden.


«Ein Snapshot auf Dateisystemebene ist einem über LVM vorzuziehen, da das Dateisystem während des Snapshot-Prozesses konsistent bleiben kann und LVM dies nicht kann. Check it out: serverfault.com/questions/300961/…
poige

1
«ZFS und (eventuell, falls noch nicht vorhanden) BTRFS verfügen über vollständige Snapshot-Funktionen» - Sie sollten erklären, was Sie mit "vollständigen" Snapshots meinen. AFAIK, für Snapshots mit ZFS gibt es keine "COW / Full" -Option. Alle Snapshots sind COW, können aber später auf einem separaten Datenträger als ganzes Dateisystem oder Volume gespeichert werden.
Juli

5

LVM erfordert Vorplanung. Ich benutze es eher nicht, weil es auch eine andere Abstraktionsebene ist und selten verfügbar ist, wenn ich es brauche. Es gibt jedoch auch andere Optionen zum Klonen auf Dateisystemebene (unter Linux) ohne LVM. Sie können dazu Hot Copy von R1Soft verwenden. Es ist ein Kernel-Modul, mit dem Sie diese Funktion jedoch im laufenden Betrieb hinzufügen können.


3

Sehr klares Problem: Für die Snapshots von LVM ist keine konsistente FS- Qualität garantiert, da LVM nichts über die FS "weiß", mit der sie geladen werden

Bearbeitet (siehe Kommentare): - true, es sei denn, der FS unterstützt dies .freeze_fs, andernfalls sollte er ordnungsgemäß von FS behandelt werden.


2
Falsch; LVM veranlasst das Dateisystem, sich selbst zu synchronisieren, bevor der Snapshot erstellt wird.
womble

1
@womble: Auch danach syncist der Schnappschuss ein genaues Duplikat eines bereits gemounteten Dateisystems. Wenn Sie es also einhängen, wird es als "nicht ordnungsgemäß abgehängt" angezeigt (da es nicht abgehängt wurde), und es müssen einige Korrekturmaßnahmen durchgeführt werden, bevor es konsistent ist. Natürlich ist das normalerweise nur eine Journalwiederholung und nach der syncsollte es eine leere Wiederholung sein. Es besteht also keine Gefahr des Datenverlusts.
Javier

1
@womble, 1) Die Synchronisierung reicht nicht aus , da es ein Fenster für neue E / A-Anforderungen nur zwischen der Synchronisierung und der Snapshot-Verarbeitung von LVM geben würde. Es erfordert eine Art Blockierung. 2) XFS hat ein spezielles Feature namens "freeze" ( xfs_freeze is intended to be used with volume managers and hardware RAID devices that support the creation of snapshots.) - speziell für Schnappschüsse. Weiß LVM-2 davon und verwendet es bereits? 3) Sagen Sie mir, wo Sie im User-Space ( sources.redhat.com/cgi-bin/cvsweb.cgi/LVM2/?cvsroot=lvm2 ) oder in Kernel-Quellen nachweisen können, dass Sie uns Recht geben, dass LVM FS dazu veranlasst synchronisieren.
Poige

9
ok, ich habe meine hausaufgaben gemacht und kann nun den 3. teil meiner frage beantworten - tatsächlich verwendet LVM kernels freeze_bdev (), was wie im titel gesagt lauten soll lock a filesystem and force it into a consistent state. Zumindest kann ich also sagen, dass ich mich wahrscheinlich geirrt habe, weil es um die Unterstützung der freeze_fs-Methode in der FS-Implementierung geht. und einige nicht (zB EXT2). Außerdem wird die zweite Frage beantwortet: Es ist sehr wahrscheinlich, dass das Einfrieren von XFS automatisch mit LVM behandelt wird.
Poige

1

Als Ergänzung zu anderen Antworten. In FS-Snapshots können Sie von FS-Funktionen wie Komprimierung und Deduplizierung für alle Snapshots profitieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.