Después de leer el hilo original del correo electrónico y la respuesta de @ewwhite que lo aclaró, creo que esta pregunta necesita una respuesta actualizada, ya que la respuesta anterior solo cubre la mitad.
Como ejemplo, usemos la salida en mi grupo. He utilizado el comando zdb -U /data/zfs/zpool.cache -bDDD My_pool
. En mi sistema necesitaba el -U
argumento adicional para ubicar el archivo de caché ZFS para el grupo, que FreeNAS almacena en una ubicación diferente de la normal; puede o no necesitar hacer eso. Por lo general, intente zdb
sin -U
primero, y si obtiene un error de archivo de caché, use find / -name "zpool.cache"
o similar para ubicar el archivo que necesita.
Este fue mi resultado real y lo he interpretado a continuación:
DDT-sha256-zap-duplicate: 771295 entries, size 512 on disk, 165 in core
bucket allocated referenced
______ ______________________________ ______________________________
refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE
------ ------ ----- ----- ----- ------ ----- ----- -----
2 648K 75.8G 68.6G 68.8G 1.39M 165G 149G 149G
4 71.2K 8.07G 6.57G 6.62G 368K 41.7G 34.1G 34.3G
8 28.1K 3.12G 2.34G 2.36G 281K 31.0G 23.1G 23.4G
16 5.07K 424M 232M 241M 110K 9.10G 5.06G 5.24G
32 1.09K 90.6M 51.8M 53.6M 45.8K 3.81G 2.21G 2.28G
64 215 17.0M 8.51M 8.91M 17.6K 1.39G 705M 739M
128 38 2.12M 776K 872K 6.02K 337M 118M 133M
256 13 420K 21.5K 52K 4.63K 125M 7.98M 18.5M
512 3 6K 3K 12K 1.79K 3.44M 1.74M 7.16M
1K 1 128K 1K 4K 1.85K 237M 1.85M 7.42M
2K 1 512 512 4K 3.38K 1.69M 1.69M 13.5M
DDT-sha256-zap-unique: 4637966 entries, size 478 on disk, 154 in core
bucket allocated referenced
______ ______________________________ ______________________________
refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE
------ ------ ----- ----- ----- ------ ----- ----- -----
1 4.42M 550G 498G 500G 4.42M 550G 498G 500G
DDT histogram (aggregated over all DDTs):
bucket allocated referenced
______ ______________________________ ______________________________
refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE
------ ------ ----- ----- ----- ------ ----- ----- -----
1 4.42M 550G 498G 500G 4.42M 550G 498G 500G
2 648K 75.8G 68.6G 68.8G 1.39M 165G 149G 149G
4 71.2K 8.07G 6.57G 6.62G 368K 41.7G 34.1G 34.3G
8 28.1K 3.12G 2.34G 2.36G 281K 31.0G 23.1G 23.4G
16 5.07K 424M 232M 241M 110K 9.10G 5.06G 5.24G
32 1.09K 90.6M 51.8M 53.6M 45.8K 3.81G 2.21G 2.28G
64 215 17.0M 8.51M 8.91M 17.6K 1.39G 705M 739M
128 38 2.12M 776K 872K 6.02K 337M 118M 133M
256 13 420K 21.5K 52K 4.63K 125M 7.98M 18.5M
512 3 6K 3K 12K 1.79K 3.44M 1.74M 7.16M
1K 1 128K 1K 4K 1.85K 237M 1.85M 7.42M
2K 1 512 512 4K 3.38K 1.69M 1.69M 13.5M
Total 5.16M 638G 576G 578G 6.64M 803G 712G 715G
dedup = 1.24, compress = 1.13, copies = 1.00, dedup * compress / copies = 1.39
Lo que todo significa y calcular el tamaño real de la tabla de deduplicación
La salida muestra dos subtablas , una para bloques donde existe un duplicado ( DDT-sha256-zap-duplicate ) y otra para bloques donde no existe duplicado ( DDT-sha256-zap-unique ) /. La tercera tabla debajo de ellos da un total general de ambos, y hay una fila de resumen debajo de eso. Mirando solo las filas "totales" y el resumen nos da lo que necesitamos:
Tamaño de DDT para todos los bloques que aparecen más de una vez ("DDT-sha256-zap-duplicate") :
771295 entries, size 512 bytes on disk, 165 bytes in RAM ("core")
Tamaño de DDT para bloques que son únicos ("DDT-sha256-zap-unique") :
4637966 entries, size 478 bytes on disk, 154 bytes in RAM ("core")
Estadísticas totales de DDT para todas las entradas de DDT, duplicado + único ("histograma de DDT agregado sobre todos los DDT") :
allocated referenced
(= disk space actually used) (= amount of data deduped
into that space)
______ ______________________________ ______________________________
blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE
Total 5.16M 638G 576G 578G 6.64M 803G 712G 715G
Resumen :
dedup = 1.24, compress = 1.13, copies = 1.00, dedup * compress / copies = 1.39
Hagamos algunos cálculos numéricos.
El recuento de bloques funciona así: Número de entradas relacionadas con bloques duplicados = 771295, número de entradas relacionadas con bloques únicos = 4637966, las entradas totales en la tabla DDT deben ser 771295 + 4637966 = 5409261. Entonces, el número de bloques en millones (millones binarios eso es!) sería 5409261 / (1024 ^ 2) = 5.158 millones. En el resumen encontramos que hay 5,16 millones de bloques en total .
La RAM necesaria funciona así: las 771295 entradas para bloques duplicados ocupan cada una 165 bytes en RAM, y las 4637966 entradas para bloques únicos ocupan cada una 154 bytes en RAM, por lo que la RAM total necesaria para la tabla de deduplicación en este momento = 841510439 bytes = 841510439 / (1024 ^ 2) MBytes = 803 MB = 0.78 GB de RAM .
(El tamaño en el disco utilizado se puede calcular de la misma manera, utilizando las cifras de "tamaño en el disco". Claramente, ZFS está tratando de usar E / S de disco de manera eficiente y aprovechando el hecho de que el espacio en disco ocupado por el DDT no es normalmente es un problema. Parece que ZFS simplemente está asignando un sector completo de 512 bytes para cada entrada, o algo por el estilo, en lugar de solo 154 o 165 bytes, para mantenerlo eficiente. Esto podría no incluir ninguna asignación para múltiples copias guardadas en el disco, lo que ZFS suele hacer
La cantidad total de datos almacenados y el beneficio de deducirlos: del total de estadísticas DDT, 715 Gbytes ("715G") de datos se almacenan usando solo 578 GBytes ("578G") de almacenamiento asignado en los discos. Entonces, nuestra relación de ahorro de espacio dedup es (715 GB de datos) / (578 GB de espacio utilizado después de deducirlo) = 1.237 x, que es lo que nos dice el resumen ("dedup = 1.24").