Como mover arquivos de um sistema de arquivos zfs para outro sistema de arquivos zfs no mesmo pool?

17

Eu tenho dois sistemas de arquivos no mesmo pool zfs /mnt/fs_ae /mnt/fs_b. Quero mover cerca de 1 TB de dados de fs_apara 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 grandes golpes para terminar.

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

Fred Hamilton
fonte

Respostas:

22

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

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

Os sistemas de arquivos ZFS (embora estejam no mesmo pool) são sistemas de arquivos separados. Nem mvnenhuma outra ferramenta pode simplesmente mover os ponteiros de bloco ou o que for, para que os arquivos que fs_aestão ativados estejam agora ativados fs_b.

(BTW, várias partições formatadas ou volumes LVM no mesmo disco ou matriz de incursões também são sistemas de arquivos separados e mvpassam a copiar e excluir também)

Esse problema surgiu várias vezes ao longo dos anos (com algumas conversas sobre como criar uma ferramenta para fazer o que você deseja) e, pelo que entendi, a principal dificuldade que o coloca na cesta difícil é a questão de como lidar com os instantâneos - se houver capturas instantâneas de fs_a, os blocos estariam nos dois sistemas de arquivos ao mesmo tempo. O mesmo vale para arquivos que possuem links físicos.

Eu já o encontrei várias vezes (por exemplo, ao mover arquivos entre conjuntos de dados como você fez ou quando preciso converter um subdiretório em um fs) e aprendi a lidar com a inconveniência. Pode ser uma grande PITA.

se fs_bestá vazio ou ainda não existe e você deseja mover os inteiros conteúdo de fs_aa fs_b(e não apenas alguns ou mesmo a maioria dos arquivos e diretórios) que você pode usar zfs renamepara mudar o nome fs_apara fs_b. Suspeito que isso não seja relevante para a sua situação.

Existe um problema em aberto sobre o ZFSOnLinux em https://github.com/zfsonlinux/zfs/issues/2991

Eu não pesquisei, mas esperaria que o OpenZFS upstream e até o Sun / Oracle ZFS provavelmente tenham relatórios de erros / solicitações de recursos semelhantes.

BTW, consulte também /server/584693/freenas-why-isnt-mv-command-instant-within-a-raidz1-volume

cas
fonte
3
Obrigado pela resposta completa. Agradeço a sugestão de renomear, mas como você suspeita, tenho ainda mais dados sobre o que não quero no b. Pelo menos eu posso seguir em frente agora e copiar os arquivos por meio de um disco de buffer para, pelo menos, eliminar a debulha.
Fred Hamilton