Un clon es un volumen grabable o un sistema de archivos cuyo contenido inicial es el mismo que el del conjunto de datos a partir del cual se ha creado. Al igual que sucede con las instantáneas, un clon se crea casi inmediatamente y al principio no consume espacio en el disco adicional. Asimismo, puede crear una instantánea de un clon.
Los clones sólo se pueden crear a partir de una instantánea. Al clonarse una instantánea, se crea una dependencia implícita entre ésta y el clon. Aun en el caso de que el clon se cree en alguna otra parte de la jerarquía del conjunto de datos, la instantánea original no se podrá destruir en tanto exista el clon. Al propiedad origin muestra esta dependencia y el comando zfs destroy recopila todas estas dependencias, si las hay.
Los clones no heredan las dependencias del conjunto de datos a partir del que se crean. Utilice los comandos zfs get y zfs set para ver y cambiar las propiedades de un conjunto de datos clonado. Para obtener más información sobre el establecimiento de las propiedades de conjuntos de datos de ZFS, consulte Configuración de propiedades de ZFS.
Debido a que al principio un clon comparte todo su espacio en el disco con la instantánea original, el valor de su propiedad used se establece inicialmente en cero. A medida que se efectúan cambios en el clon, consume más espacio en el disco. La propiedad used de la instantánea original no incluye el espacio que consume el clon en el disco.
Para crear un clon, utilice el comando zfs clone; especifique la instantánea a partir de la cual se va a crear, así como el nombre del nuevo volumen o sistema de archivos. El nuevo volumen o sistema de archivos se puede colocar en cualquier parte de la jerarquía de ZFS. El nuevo conjunto de datos es del mismo tipo (por ejemplo, volumen o sistema de archivos) que la instantánea a partir de la cual se ha creado el clon. El clon de un sistema de archivos no se puede crear en una agrupación que no sea donde se ubica la instantánea del sistema de archivos original.
En este ejemplo, se crea un clon denominado tank/home/ahrens/bug123 con el mismo contenido inicial que la instantánea tank/ws/gate@yesterday:
# zfs snapshot tank/ws/gate@yesterday # zfs clone tank/ws/gate@yesterday tank/home/ahrens/bug123 |
En este ejemplo, se crea un espacio de trabajo clónico a partir de la instantánea de projects/newproject@today para un usuario temporal denominado projects/teamA/tempuser. A continuación, las propiedades se establecen en el espacio de trabajo clónico.
# zfs snapshot projects/newproject@today # zfs clone projects/newproject@today projects/teamA/tempuser # zfs set sharenfs=on projects/teamA/tempuser # zfs set quota=5G projects/teamA/tempuser |
Para destruir clones de ZFS se utiliza el comando zfs destroy. Por ejemplo:
# zfs destroy tank/home/ahrens/bug123 |
Para poder destruir la instantánea principal, antes hay que destruir los clones.
El comando zfs promote es apto para reemplazar un sistema de archivos ZFS activo por un clon de ese sistema de archivos. Esta función permite la clonación y sustitución de sistemas de archivos para que el sistema de archivos original se convierta en el clon del sistema de archivos especificado. Asimismo, posibilita la destrucción del sistema de archivos a partir del cual se creó el clon. Sin la promoción de clones no es posible destruir un sistema de archivos original de clones activos. Para obtener más información sobre la destrucción de clones, consulte Destrucción de un clon de ZFS.
En este ejemplo, se clona el sistema de archivos tank/test/productA y el sistema de archivos clónico, tank/test/productAbeta, se convierte en el sistema de archivos tank/test/productA original.
# zfs create tank/test # zfs create tank/test/productA # zfs snapshot tank/test/productA@today # zfs clone tank/test/productA@today tank/test/productAbeta # zfs list -r tank/test NAME USED AVAIL REFER MOUNTPOINT tank/test 104M 66.2G 23K /tank/test tank/test/productA 104M 66.2G 104M /tank/test/productA tank/test/productA@today 0 - 104M - tank/test/productAbeta 0 66.2G 104M /tank/test/productAbeta # zfs promote tank/test/productAbeta # zfs list -r tank/test NAME USED AVAIL REFER MOUNTPOINT tank/test 104M 66.2G 24K /tank/test tank/test/productA 0 66.2G 104M /tank/test/productA tank/test/productAbeta 104M 66.2G 104M /tank/test/productAbeta tank/test/productAbeta@today 0 - 104M - |
En esta salida zfs list se ha sustituido la información de cálculo de espacio en el disco del sistema de archivos productA original por el sistema de archivos productAbeta.
Puede completar el proceso de sustitución de clones cambiando el nombre de los sistemas de archivos. Por ejemplo:
# zfs rename tank/test/productA tank/test/productAlegacy # zfs rename tank/test/productAbeta tank/test/productA # zfs list -r tank/test |
Si lo desea, puede eliminar el sistema de archivos heredado. Por ejemplo:
# zfs destroy tank/test/productAlegacy |