Identifizieren der Anzahl geänderter Bytes zwischen zwei ZFS-Snapshots derselben Datei

10

Nehmen wir an, ich habe ein ZFS-Dateisystem, das Disk-Images von virtuellen Maschinen enthält, z

/tank/examplevm/examplevm-flat.vmdk

Nehmen wir weiter an, ich mache täglich Schnappschüsse dieses ZFS-Dateisystems, z

$ zfs snapshot tank@20120716
$ zfs snapshot tank@20120717

Offensichtlich werden in der Zeit zwischen jedem täglichen Snapshot Änderungen an meiner examplevm-flat.vmdk vorgenommen (in den meisten Fällen bleibt die Größe des Bildes konstant, aber die Blöcke auf der virtuellen Festplatte werden geändert).

Dementsprechend meldet der ZFS diff-Befehl die Datei nun als zwischen den beiden Snapshots geändert:

$ zfs diff tank/@20120716 tank@20120717
M       /tank/examplevm/examplevm-flat.vmdk

Es ist zwar gut zu wissen, dass die Datei geändert wurde, aber ich würde mich viel mehr für die Anzahl der Bytes / Blöcke interessieren, die im vmdk geändert wurden.

Daher würde mich jeder Hinweis zu folgenden Fragen interessieren:

  • Verfügt ZFS über eine Funktion zum Melden der Anzahl geänderter Blöcke in einer bestimmten Datei zwischen zwei Snapshots?
  • Gibt es ein anderes Tool, das zwei Dateisystem-Images binär unterscheidet und die Anzahl der geänderten Blöcke oder Bytes meldet? Mir ist klar, dass cmp –l file1 file2 | wc –ldas das tut, aber es ist schrecklich, schrecklich langsam.
nlx-ck
quelle

Antworten:

7

ZFS hat keine Funktion, um zu melden, dass das undokumentierte zdb- Tool jedoch durchaus verwendet werden kann, um die von einer Datei in einem bestimmten Dataset (Dateisystem oder Snapshot) verwendeten Blöcke abzurufen. Daher ist es möglich, mit ein wenig Skripten das zu erreichen, wonach Sie suchen Die Verarbeitung der zdb-Ausgabe würde wahrscheinlich sehr lange dauern.

In diesem Blog wird gezeigt, wie Sie mit zdb die Blöcke einer Datei extrahieren.

jlliagre
quelle