Estoy tratando de hacer copias vacías de algunos archivos / directorios, pero de las diversas formas que conozco, todas parecen subóptimas.
Por ejemplo, btrfs puede, con el uso de cp --reflink=auto
generar rápidamente copias vacías de archivos.
Lo que he intentado:
- Enlaces simbólicos: No es bueno. Archivo renombrado, enlace roto.
- Enlaces duros: mejor, pero aún no es bueno. Los cambios en un archivo cambiarán el otro, y no necesariamente quiero que se cambie el otro archivo.
- Cree una instantánea del conjunto de datos, luego clone la instantánea: Esto puede funcionar, pero no bien. A menudo no busco una copia de todo el conjunto de datos, o que las copias actúen como otro conjunto de datos. Luego están las relaciones padre / hijo entre el clon / instantánea / original, que, según tengo entendido, son difíciles, si no imposibles de romper.
- Con el uso
zfs send/receive
y la deducción habilitada, replicar el conjunto de datos en un nuevo conjunto de datos: esto evita las relaciones padre / hijo de usar un clon, pero aún crea innecesariamente otro conjunto de datos, y aún sufre de la lentitud involucrada en los archivos que deben leerse al 100% y los bloques referenciados nuevamente en lugar de escritos. - Copie los archivos y deje que Dedp haga su trabajo: esto funciona, pero es lento porque los archivos deben leerse al 100% y luego los bloques deben hacer referencia nuevamente en lugar de escribir.
La lentitud del envío / recepción de zfs y la copia física o sincronización se exacerba aún más porque la mayoría de las cosas se almacenan comprimidas, y deben descomprimirse durante la lectura, luego comprimirse antes de que dedup se active para hacer referencia a bloques duplicados.
En toda mi investigación, no he podido encontrar nada remotamente parecido a la simplicidad de --reflink en btrfs.
Entonces, ¿hay alguna manera de crear copias de vaca en ZFS? ¿O es "físicamente" copiar y dejar que Dedp haga su trabajo la única opción real?