Sim, o ZFS alocará espaço extra para o mesmo arquivo se um instantâneo for obtido do conjunto de arquivos.
Primeiro, vamos criar um conjunto de arquivos vazio e preparar um arquivo para copiar. Por motivos de simplicidade, a compactação foi desativada e o pool foi criado em um único disco sem nenhum raidz ou mirror .
[root@localhost ~]# dd if=/dev/urandom of=/tmp/testfile bs=16M count=1
1+0 records in
1+0 records out
16777216 bytes (17 MB) copied, 0.113345 s, 148 MB/s
[root@localhost ~]# zpool create tank sdd
[root@localhost ~]# zfs create tank/test
O espaço usado no disco pode ser visto com zpool list.
[root@localhost]# zpool list tank
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
tank 9.94G 182K 9.94G - 0% 0% 1.00x ONLINE -
Agora copie o arquivo para o conjunto de arquivos ZFS, crie um instantâneo e observe o espaço usado.
[root@localhost ~]# /bin/cp /tmp/testfile /tank/test/
[root@localhost ~]# zfs list -t all -r tank/test
NAME USED AVAIL REFER MOUNTPOINT
tank/test 16.0M 9.61G 16.0M /tank/test
[root@localhost ~]# zfs snapshot tank/test@1
[root@localhost ~]# zfs list -t all -r tank/test
NAME USED AVAIL REFER MOUNTPOINT
tank/test 16.0M 9.61G 16.0M /tank/test
tank/test@1 0B - 16.0M -
Ok, copie o mesmo arquivo novamente para o mesmo local no conjunto de arquivos ZFS e observe o espaço usado novamente.
[root@localhost ~]# /bin/cp -f /tmp/testfile /tank/test/
[root@localhost ~]# zfs list -t all -r tank/test
NAME USED AVAIL REFER MOUNTPOINT
tank/test 32.0M 9.60G 16.0M /tank/test
tank/test@1 16.0M - 16.0M -
Além disso, o espaço em disco usado no pool está crescendo para 32 MB.
[root@localhost tank]# zpool list tank
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
tank 9.94G 32.2M 9.91G - 0% 0% 1.00x ONLINE -
Como você pode ver, o conjunto de tank/testarquivos agora representa 32 MB no total, dividido em 16 MB no conjunto de tank/testarquivos e 16 MB no tank/test@1instantâneo. Além disso, a saída de zpool listmostra uma alocação de 32 MB no disco.
Se você repetir a cópia e tirar um instantâneo, o tank/testtotal USADO crescerá ainda mais.
Atualizar
Obrigado @Andrew Henle por perguntar. Tive que atualizar minha resposta acima e continuar com o material de desduplicação abaixo.
Vamos fazer isso novamente com um conjunto de arquivos com desduplicação habilitada.
Vou pular as etapas individuais aqui e adicionar apenas a saída da visão geral do espaço usado.
[root@localhost ~]# zfs list -t all -r tank/test-dedup
NAME USED AVAIL REFER MOUNTPOINT
tank 32.3M 9.61G 24K /tank
tank/test-dedup 32.1M 9.61G 16.0M /tank/test-dedup
tank/test-dedup@1 16.0M - 16.0M -
[root@localhost ~]# zpool list tank
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
tank 9.94G 16.3M 9.92G - 0% 0% 2.00x ONLINE -
Com a desduplicação habilitada, ainda é relatado que o instantâneo usa o tamanho extra , mas como você pode ver, zpool lista desduplicação economiza espaço no disco e fornece uma taxa de desduplicação de 2.
Em geral, o IIRC não recomenda o uso de desduplicação devido ao uso intenso de memória e ao impacto resultante no desempenho. Acho que há um trabalho em andamento para melhorar o recurso de desduplicação no ZFS.
Sim, o ZFS alocará espaço extra para o mesmo arquivo se um instantâneo for obtido do conjunto de arquivos.
Primeiro, vamos criar um conjunto de arquivos vazio e preparar um arquivo para copiar. Por motivos de simplicidade, a compactação foi desativada e o pool foi criado em um único disco sem nenhum raidz ou mirror .
O espaço usado no disco pode ser visto com
zpool list
.Agora copie o arquivo para o conjunto de arquivos ZFS, crie um instantâneo e observe o espaço usado.
Ok, copie o mesmo arquivo novamente para o mesmo local no conjunto de arquivos ZFS e observe o espaço usado novamente.
Além disso, o espaço em disco usado no pool está crescendo para 32 MB.
Como você pode ver, o conjunto de
tank/test
arquivos agora representa 32 MB no total, dividido em 16 MB no conjunto detank/test
arquivos e 16 MB notank/test@1
instantâneo. Além disso, a saída dezpool list
mostra uma alocação de 32 MB no disco.Se você repetir a cópia e tirar um instantâneo, o
tank/test
total USADO crescerá ainda mais.Atualizar
Obrigado @Andrew Henle por perguntar. Tive que atualizar minha resposta acima e continuar com o material de desduplicação abaixo.
Vamos fazer isso novamente com um conjunto de arquivos com desduplicação habilitada.
Vou pular as etapas individuais aqui e adicionar apenas a saída da visão geral do espaço usado.
Com a desduplicação habilitada, ainda é relatado que o instantâneo usa o tamanho extra , mas como você pode ver,
zpool list
a desduplicação economiza espaço no disco e fornece uma taxa de desduplicação de 2.Em geral, o IIRC não recomenda o uso de desduplicação devido ao uso intenso de memória e ao impacto resultante no desempenho. Acho que há um trabalho em andamento para melhorar o recurso de desduplicação no ZFS.