
Cuando ejecuto esta consulta en un conjunto de datos
zfs list -d 1 -t all -o name,used,refer,written,compressratio sfg-backup/mx
Veo las siguientes estadísticas:
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
Sin embargo, cuando ejecuto una copia de seguridad, tiene la última instantánea ya que madcow_2023-04-21_01:15:00_UTC
el tamaño de la copia de seguridad no es de 4,26 GB sino de 31,4 GB.
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%
agregar -c
compresión lleva el tamaño a 4.3G (estas son instantáneas ligeramente diferentes, pero con más o menos el mismo contenido).
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
¿Pueden ayudarme a comprender qué puede causar esta gran discrepancia en los tamaños? ¿Por qué la compresión informada por ZFS es 1,28 y la compresión de transferencia es 31,5/4,3=7,3?
Respuesta1
WRITTEN
muestracomprimidodatos realmente escritos en el conjunto de datos/instantánea. Entre sfg-backup/mx@madcow_2023-04-21_01:15:00_UTC
y madcow_2023-04-21_03:15:00_UTC
escribiste datos altamente comprimibles sobre datos incompresibles anteriores, sin eliminar la referencia al archivo completo.
Supongo que tienes un archivo grande que se puede sobrescribir aleatoriamente (es decir, archivos de imagen de disco virtual, bases de datos, etc.) y sucedió que escribiste 32 G de datos sin procesar que se convirtieron en 4 G de datos comprimidos.
zfs send -c
envía los registros comprimidos tal como están, transfiriendo solo el delta 4G comprimido. Por otro lado, zfs send
(sin -c
) descomprime los datos en el disco, expandiéndolos al tamaño completo de 32G.