Wie ist es zu erklären, dass der Snapshot von ZFS „GESCHRIEBEN“ mit 4,26 GB angibt, die Übertragungsgröße aber tatsächlich 31,4 GB beträgt?

Wie ist es zu erklären, dass der Snapshot von ZFS „GESCHRIEBEN“ mit 4,26 GB angibt, die Übertragungsgröße aber tatsächlich 31,4 GB beträgt?

Wenn ich diese Abfrage auf einem Datensatz ausführe

zfs list -d 1 -t all -o name,used,refer,written,compressratio sfg-backup/mx

Ich sehe die folgenden Statistiken:

zfs list -d 1 -t all -o name,used,refer,written,compressratio sfg-backup/mx
NAME                                           USED     REFER  WRITTEN  RATIO
sfg-backup/mx                                  300G      276G        0  1.80x
sfg-backup/mx@madcow_2023-04-15_23:15:00_UTC  4.04G      275G     275G  1.28x
...
sfg-backup/mx@madcow_2023-04-21_01:15:00_UTC     0B      276G        0  1.28x
sfg-backup/mx@madcow_2023-04-21_02:15:00_UTC     0B      276G    4.26G  1.28x
sfg-backup/mx@madcow_2023-04-21_03:15:00_UTC     0B      276G        0  1.28x

Wenn ich jedoch ein Backup ausführe, ist der letzte Snapshot vorhanden, da madcow_2023-04-21_01:15:00_UTCdie Größe des Backups nicht 4,26 GB, sondern 31,4 GB beträgt

syncoid --no-sync-snap 10.0.1.2:sfg-backup/mx work/sfg/mx
NEWEST SNAPSHOT: madcow_2023-04-21_03:15:00_UTC
Sending incremental sfg-backup/mx@madcow_2023-04-21_01:15:00_UTC ... madcow_2023-04-21_03:15:00_UTC (~ 31.4 GB):
31.5GiB 0:03:16 [ 163MiB/s] [==================================================================================================>] 100%

Durch Hinzufügen -cder Komprimierung beträgt die Größe 4,3 G (dies sind leicht unterschiedliche Schnappschüsse, aber mit mehr oder weniger demselben Inhalt).

zfs send -nv -c -I sfg-backup/mx@madcow\_2023-04-24\_00:15:00\_UTC sfg-backup/mx@madcow\_2023-04-24\_03:15:00\_UTC
send from @madcow_2023-04-24_00:15:00_UTC to sfg-backup/mx@madcow_2023-04-24_01:15:00_UTC estimated size is 215M
send from @madcow_2023-04-24_01:15:00_UTC to sfg-backup/mx@madcow_2023-04-24_02:15:00_UTC estimated size is 4.09G
send from @madcow_2023-04-24_02:15:00_UTC to sfg-backup/mx@madcow_2023-04-24_03:15:00_UTC estimated size is 624B
total estimated size is 4.30G

# without -c flag:
zfs send -nv  -I sfg-backup/mx@madcow\_2023-04-24\_00:15:00\_UTC sfg-backup/mx@madcow\_2023-04-24\_03:15:00\_UTC
send from @madcow_2023-04-24_00:15:00_UTC to sfg-backup/mx@madcow_2023-04-24_01:15:00_UTC estimated size is 216M
send from @madcow_2023-04-24_01:15:00_UTC to sfg-backup/mx@madcow_2023-04-24_02:15:00_UTC estimated size is 31.3G
send from @madcow_2023-04-24_02:15:00_UTC to sfg-backup/mx@madcow_2023-04-24_03:15:00_UTC estimated size is 624B
total estimated size is 31.5G

Können Sie mir helfen zu verstehen, was diese große Diskrepanz in den Größen verursachen kann? Warum beträgt die von ZFS gemeldete Komprimierung 1,28 und die Übertragungskomprimierung 31,5/4,3=7,3?

Antwort1

WRITTENzeigt ankomprimiertDaten, die tatsächlich in den Datensatz/Snapshot geschrieben wurden. Zwischen sfg-backup/mx@madcow_2023-04-21_01:15:00_UTCund madcow_2023-04-21_03:15:00_UTChaben Sie hoch komprimierbare Daten über vorherige nicht komprimierbare Daten geschrieben, ohne die gesamte Datei zu dereferenzieren.

Ich nehme an, Sie haben eine große Datei, die beliebig überschrieben werden kann (z. B. virtuelle Disk-Image-Dateien, Datenbanken usw.), und es ist passiert, dass Sie 32 GB Rohdaten geschrieben haben, aus denen 4 GB komprimierte Daten wurden.

zfs send -csendet die komprimierten Datensätze so wie sie sind und überträgt nur das komprimierte 4G-Delta. Andererseits dekomprimiert zfs send(ohne -c) die Daten auf der Festplatte und erweitert sie auf die volle 32G-Größe.

verwandte Informationen