(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 mv
nenhuma outra ferramenta pode simplesmente mover os ponteiros de bloco ou o que for, para que os arquivos que fs_a
estã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 mv
passam 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_b
está vazio ou ainda não existe e você deseja mover os inteiros conteúdo de fs_a
a fs_b
(e não apenas alguns ou mesmo a maioria dos arquivos e diretórios) que você pode usar zfs rename
para mudar o nome fs_a
para 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