Frage LVM-Snapshots vs. Dateisystem-Snapshots


Soweit ich weiß, ermöglicht LVM das Erstellen von Momentaufnahmen eines Volumes. Es gibt auch eine Reihe von Dateisystemen (ZFS, Btrfs, Reiserfs, ...), die Snapshots unterstützen.

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

Edit: Wird in einigen Situationen einer von ihnen bevorzugt? Warum?


31
2017-08-14 12:50


Ursprung




Antworten:


Die meisten dieser Snapshots sind Copy-on-Write-Snapshots, die auf selten aktualisierten Systemen sehr schnell und sehr kostengünstig (speicherorientiert) sind. LVM-Snapshots sind COW-Snapshots, ZFS / BTRFS haben beide einen COW-Modus für Snapshots, Reiserfs hat keine nativen Snapshots, Novells NSS-Dateisystem ist ebenfalls COW, ebenso 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. Dann kopieren sie, je nachdem, welchen COW-Modus sie verwenden, Daten, die durch neue Schreibvorgänge überschrieben werden, in den Snapshot-Pool, bevor sie die neuen Daten schreiben.

ZFS und (wenn nicht schon vorhanden) BTRFS verfügen über Full-Snapshot-Funktionen, die nützlich sind, um auf separaten Medien zu snappen, was wiederum sehr nützlich für Sneakernet-Backup-Systeme ist, die Wechselmedien verwenden. ZFS nennt dies jedoch nicht einen "Schnappschuss", sondern nutzt ZFSs Fähigkeit zu verwenden zfs send und zfs recv um Volumes und Snapshots über das Netzwerk auf einen Remote-Host (oder ein lokales Array) zu kopieren.

Ich bevorzuge Schnappschüsse auf Dateisystemebene gegenüber LVM-Dateien, weil ich besser darauf vertraue, dass das Dateisystem den Prozess sauber verarbeitet. In Ermangelung direkter Dateisystemunterstützung sollte LVM jedoch in den meisten Fällen gut funktionieren.

COW-Snapshots sind gut, wenn Sie eine zeitgenaue Sicherung benötigen, die für kurzfristige Wiederherstellungszwecke sehr schnell erstellt wird. So wie eine tägliche oder 4x täglich, Snap für eine Woche zu halten. Dies ist praktisch, wenn Sie Dateien wiederherstellen müssen, die Benutzer versehentlich gelöscht haben, oder wenn Sie ein gesamtes System auf eine Konfiguration vor dem Update zurücksetzen müssen. Sie können auch von manchen Backup-Systemen als vollständig stillgelegtes Dateisystem verwendet werden, so dass Backups erstellt werden von Der Snapshot-Datenträger muss sich keine Sorgen machen, dass offene Dateien im Weg sind. Das Wichtigste, an das Sie sich erinnern sollten, ist, dass sich die Snapshot-Volumes auf dem gleichen Speicher wie das primäre Volume befinden. Geben Sie daher bei einem Array-Fehler nichts an.

FULL-Snapshots sind gut, wenn sie auf entfernbare oder entfernte Medien gebracht werden. Wenn Sie über Netzwerkspeicher verfügen, könnte das Ziel ein anderes iSCSI- oder Fibre Channel-Array sein als das, in dem der primäre Speicher gehostet wird. Dadurch erhalten Sie einen Off-Array-Schutz für einige Arten von Fehlern. 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 als ihre COW-Brüder befinden und sind daher nützlich für Katastrophenresilienz.


On Full- oder COW-Snapshots.

Der Begriff "Schnappschuss" ist im Laufe der Jahre ein wenig abgefallen. In diesem Jahr bin ich mir ziemlich sicher, dass es "eine Copy-On-Write-Kopie der Originaldaten mittels Block-Relocation" bedeutet. Nach dieser Definition ist der oben dargestellte Snapshot "Full" kein Snapshot, sondern eine Replikation. Einige Speicherhersteller haben in der Vergangenheit unterschiedliche Definitionen von "Snapshot" verwendet, um verschiedene Operationen auf Blockebene zu beschreiben, die sie ausführen. Verwirrend sind Systeme, die Snapshots als Teil des Replikationsprozesses verwenden.


25
2017-08-14 13:09



"Ein Dateisystem-Level-Snapshot ist gegenüber einem anderen über LVM vorzuziehen, da das Dateisystem weiß, wie es sich während des Snapshot-Prozesses konsistent halten kann, wo LVM es kann" - tatsächlich ist es nicht wahr. Hör zu: serverfault.com/questions/300961/ ... - poige
«ZFS und (eventuell wenn nicht schon da) BTRFS haben Full-Snapshot-Fähigkeiten» - Sie sollten erklären, was Sie mit "vollen" Snapshots meinen. AFAIK, es gibt keine "COW / full" Wahl für Snapshots mit ZFS. Alle Snapshots sind COW, können aber trotzdem später auf einem separaten Medium als ganzes Dateisystem oder Volume gespeichert werden. - jlliagre


LVM erfordert eine Vorplanung. Ich neige dazu, es nicht zu benutzen, weil es auch eine andere Ebene der Abstraktion ist und selten verfügbar ist, wenn ich es brauche. Es gibt jedoch andere Möglichkeiten, auf Dateisystemebene (in Linux) ohne LVM zu klonen. Sie können verwenden Heiße Kopie von R1Soft um dies zu tun. Es ist ein Kernel-Modul, aber Sie können diese Fähigkeit im laufenden Betrieb hinzufügen.


5
2017-08-14 13:45





Sehr klares Problem: LVM's Snapshots sind nicht garantiert, konsistente FS zu haben jue wegen LVM "weiß" nichts über FS, mit dem es geladen wird

Bearbeitet (Siehe die Kommentare): - True, es sei denn, der FS hat Unterstützung für .freeze_fssonst sollte es von FS anmutig behandelt werden.


3
2017-08-14 13:50



Falsch; LVM veranlasst das Dateisystem, sich selbst zu synchronisieren, bevor der Snapshot erstellt wird. - womble♦
@ Womble: auch nach syncDer Snapshot ist ein exaktes Duplikat eines bereits gemounteten Dateisystems. Wenn Sie es also mounten, erscheint es als "nicht sauber deaktiviert" (weil es nicht deaktiviert wurde) und muss einige Korrekturmaßnahmen durchführen, bevor es konsistent ist. Natürlich ist das in der Regel nur ein Journal Replay und nach dem syncsollte es eine leere Wiederholung sein; Es besteht also keine Gefahr des Datenverlusts. - Javier
@womble, 1) Synchronisierung ist nicht genug, da es ein Fenster für neue E / A-Anforderungen geben würde, die nur zwischen der Synchronisierung und der Snapshot-Verarbeitung von LVM liegen. Es erfordert eine Art von Blockierung. 2) XFS hat eine spezielle Funktion namens "freeze" (xfs_freeze is intended to be used with volume managers and hardware RAID devices that support the creation of snapshots.) - Spezielle Sache für Snapshots, weiß LVM-2 darüber und nutzt es schon? 3) Sag mir wo im User-Space ( sources.redhat.com/cgi-bin/cvsweb.cgi/LVM2/?cvsroot=lvm2) oder in Kernel-Quellen kann ich beweisen, dass Sie uns richtig gesagt haben, dass LVM die Synchronisierung von FS antreibt. - poige
ok, ich habe meine Hausaufgaben gemacht und kann jetzt den dritten Teil meiner Frage beantworten - LVM verwendet tatsächlich den Kernel freeze_bdev (), der wie gesagt im Titel steht lock a filesystem and force it into a consistent state. Also, zumindest kann ich sagen, dass ich falscherweise gesagt habe "nicht garantiert, konsistente FS zu haben", da es Sache der Unterstützung von freeze_fs 'Methode' innerhalb der FS-Implementierung ist - einige FSes haben sicherlich eine solche Unterstützung (EXT3, Reiser3, XFS), und einige nicht (EXT2, für zB). Außerdem beantwortet es die zweite Frage - das Einfrieren von XFS wird sehr wahrscheinlich automatisch mit LVM behandelt. - poige


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


1
2017-08-14 17:27