A desduplicação do ZFS funciona em blocos (recordlength), ele não sabe / não se preocupa com arquivos. Cada bloco é verificado usando sha256 (por padrão mutável). Se a soma de verificação corresponder a um outro bloco, apenas fará referência ao mesmo registro e nenhum novo dado será gravado. Um problema de desduplicação com o ZFS é que as somas de verificação são mantidas na memória, portanto, os grandes pools exigirão muita memória. Portanto, você só deve aplicar a reduplicação ao usar um tamanho de registro grande
Supondo um comprimento de registro de 128k
If I a randomly filled file of 1GB, then I write a second file that is the same except half way through, I change one of the bytes. Will that file be deduplicated (all except for the changed byte's block?)
Sim, apenas um bloco não será duplicado.
If I write a single byte file, will it take a whole 128 kilobytes? If not, will the blocks get larger in the event the file gets longer?
128k serão alocados, se o tamanho do arquivo crescer acima de 128k, mais blocos serão alocados conforme necessário.
If a file takes two 64kilobyte blocks (would this ever happen?), then would an identical file get deduped after taking a single 128 kilobyte block
Um arquivo terá 128k o mesmo arquivo será deduplicado
If a file is shortened, then part of its block would have been ignored, perhaps the data would not be reset to 0x00 bytes. Would a half used block get deduced?
Se o mesmo bloco for encontrado, sim