Quería saber si me compensaría activar la deduplicación de zfs, así que ejecuté el comando,
zdb -S tank
pero sé que necesito ayuda para interpretar el resultado.
Simulated DDT histogram:
bucket allocated referenced
______ ______________________________ ______________________________
refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE
------ ------ ----- ----- ----- ------ ----- ----- -----
1 49.2M 6.15T 6.15T 6.14T 49.2M 6.15T 6.15T 6.14T
2 352K 42.0G 42.0G 42.0G 725K 86.3G 86.3G 86.4G
4 7.99K 913M 913M 916M 37.7K 4.20G 4.20G 4.21G
8 1.43K 161M 161M 161M 14.6K 1.58G 1.58G 1.58G
16 623 67.1M 67.1M 67.4M 12.2K 1.32G 1.32G 1.33G
32 73 7.37M 7.37M 7.43M 2.65K 268M 268M 270M
64 717 4.23M 4.23M 7.46M 48.3K 392M 392M 611M
128 4 257K 257K 266K 689 40.9M 40.9M 42.6M
256 2 128K 128K 133K 802 57.8M 57.8M 59.3M
512 2 1K 1K 10.7K 1.37K 703K 703K 7.32M
4K 1 128K 128K 128K 7.31K 935M 935M 934M
16K 1 512B 512B 5.33K 20.0K 10.0M 10.0M 107M
64K 1 128K 128K 128K 93.0K 11.6G 11.6G 11.6G
512K 1 128K 128K 128K 712K 89.0G 89.0G 88.9G
Total 49.6M 6.19T 6.19T 6.18T 50.9M 6.34T 6.34T 6.33T
dedup = 1.02, compress = 1.00, copies = 1.00, dedup * compress / copies = 1.03
Gracias de antemano.
Respuesta1
Hay dos cosas que debes mirar en este histograma. La primera y más obvia es la dedup
expresión al final. No hay mucho que decir al respecto ya que son matemáticas simples. En su caso, la deduplicación solo proporcionará un ahorro de espacio del 2%, y dado que no usa compresión (que debería hacerlo en primer lugar, porque ahorra espacio y le brinda rendimiento porque la E/S es mucho más costosa que el tiempo de CPU con un algoritmo eficiente como LZ4), esa es la ganancia marginal que tendrá después de habilitar la deduplicación: 2~3%.
La deduplicación comienza a ser valiosa cuando el ahorro de espacio efectivo es superior a 2.0 y su subsistema de almacenamiento es tan costoso que se puede desperdiciar memoria y CPU solo para manejar la deduplicación. Estamos hablando de pools Enterprise NVMe, por ejemplo.
¿Pero a qué costo esto viene?
Esa es la segunda cosa que he mencionado. El primer golpe estará en tu RAM. Deberá almacenar las tablas de deduplicación en la RAM. Si no hay RAM para contenerlo, el sistema simplemente fallará y no podrá montar el grupo. Hay algunos avances con las versiones más nuevas de ZFS (como OpenZFS 2.0), pero no sé si algo ha cambiado al respecto.
Con esto en mente, solo obtienes el número total de bloques, que es la última línea de la primera columna:49.6M
Dado que cada tabla de desduplicación necesita 320 bytes, simplemente multiplica la cantidad de bloques por el espacio requerido para una tabla de desduplicación determinada y obtendrás la cantidad de RAM necesaria:
49.6M * 320 bytes = 15.872MB ~ 15.5GB
Así que desperdiciarás casi16 GBde RAM del sistema solo para deduplicar sus datos no aptos para deduplicación. Esos 16 GB se eliminarán de partes vitales del sistema, como ARC, que simplemente aceleran su grupo.
Entonces no. No vale la pena la deduplicación excepto si:
- Tienes un subsistema de almacenamiento extremadamente caro.
- Sus datos se pueden deduplicar fácilmente