Como mover arquivos de um sistema de arquivos zfs para um sistema de arquivos zfs diferente no mesmo conjunto?

15

Eu tenho dois sistemas de arquivos no mesmo pool do zfs, /mnt/fs_a e /mnt/fs_b . Quero mover cerca de 1 TB de dados de fs_a para fs_b . Mas quando eu:

mv /mnt/fs_a/mythtv_recordings /mnt/fs_b/

para minha surpresa, ele começa a copiar os arquivos bloco por bloco. Dado o tempo que levou para mover um arquivo de 2 GB, parece que essa operação levaria dias de muita movimentação para terminar.

Tem que haver uma maneira muito mais inteligente e rápida de fazer isso, certo?

    
por Fred Hamilton 15.04.2016 / 02:44

1 resposta

19

(isso começou como um comentário, mas ficou muito longo, então agora é uma resposta)

Infelizmente, a resposta é "Não". Não há uma maneira mais rápida ou mais inteligente de fazer isso.

Os sistemas de arquivos ZFS (embora estejam no mesmo pool) são sistemas de arquivos separados. Nem mv nem qualquer outra ferramenta pode apenas mover os ponteiros de bloco ou o que seja, de modo que os arquivos que estavam em fs_a estejam agora em fs_b .

(BTW, partições formatadas múltiplas ou volumes LVM no mesmo disco ou array RAID também são sistemas de arquivos separados e mv devolves para copiar e excluir para eles também)

Esta questão surgiu várias vezes ao longo dos anos (com algumas conversas sobre a criação de uma ferramenta para fazer o que você quer) e, como eu a entendo, a maior dificuldade que a coloca na cesta dura é a questão de como para manipular instantâneos - se houver instantâneos de fs_a , os blocos estarão nos dois sistemas de arquivos ao mesmo tempo. O mesmo é verdadeiro para arquivos que possuem hard-links.

Eu me deparei com isso inúmeras vezes (por exemplo, ao mover arquivos entre conjuntos de dados como você fez, ou quando preciso converter um subdiretório em um fs), e apenas aprendi a tolerar o inconveniente. Pode ser um grande PITA.

se fs_b estiver vazio ou ainda não existir e você quiser mover o conteúdo inteiro de fs_a para fs_b (e não apenas alguns ou até mesmo a maioria dos arquivos e diretórios ) você pode usar zfs rename para renomear fs_a para fs_b . Eu suspeito que isso não seja relevante para a sua situação.

Há um problema em aberto sobre isso para o ZFSOnLinux, no link

Eu não pesquisei, mas eu esperaria que o OpenZFS e até o ZFS da Sun / Oracle provavelmente tivessem relatórios / recurso de bugs semelhantes -requisitos.

BTW, consulte também link

    
por 15.04.2016 / 03:11

Tags