(Esto comenzó como un comentario pero se hizo demasiado largo, así que ahora es una respuesta)
Desafortunadamente, la respuesta es no". No hay una forma más rápida o inteligente de hacer esto.
Los sistemas de archivos ZFS (aunque estén en el mismo grupo) son sistemas de archivos separados. Ni mv
ninguna otra herramienta puede mover los punteros de bloque o lo que sea para que los archivos que estaban encendidos fs_a
estén ahora encendidos fs_b
.
(Por cierto, múltiples particiones formateadas o volúmenes LVM en el mismo disco o matriz de incursiones también son sistemas de archivos separados y también se mv
pueden copiar y eliminar)
Este problema ha surgido varias veces a lo largo de los años (con algunas conversaciones sobre la creación de una herramienta para hacer lo que quiere) y, según tengo entendido, la mayor dificultad que lo pone en la canasta demasiado difícil es la cuestión de cómo manejar las instantáneas - si hay instantáneas de fs_a
, los bloques estarían en ambos sistemas de archivos al mismo tiempo. Lo mismo es cierto para los archivos que tienen enlaces duros.
Me he encontrado con él muchas veces (por ejemplo, cuando movía archivos entre conjuntos de datos como lo hizo, o cuando necesito convertir un subdirectorio a fs), y acabo de aprender a soportar las molestias. Puede ser una gran PITA.
si fs_b
está vacía o no existe todavía y que desea mover los enteros contenidos de fs_a
a fs_b
(y no sólo algunos o la mayoría de los archivos y directorios) que puede utilizar zfs rename
para cambiar el nombre fs_a
a fs_b
. Sin embargo, sospecho que esto no es relevante para su situación.
Hay un problema abierto sobre esto para ZFSOnLinux en https://github.com/zfsonlinux/zfs/issues/2991
No he buscado, pero esperaría que OpenZFS ascendente e incluso Sun / Oracle ZFS probablemente tengan informes de errores / solicitudes de características similares.
Por cierto, consulte también /server/584693/freenas-why-isnt-mv-command-instant-within-a-raidz1-volume