Una instantánea de un volumen o sistema de archivos ZFS se convierte en un flujo de instantáneas mediante el comando zfs send. Luego, puede utilizar el flujo de instantáneas para volver a crear un volumen o sistema de archivos ZFS mediante el comando zfs receive.
Según las opciones de zfs send que se han utilizado para crear el flujo de instantáneas, se generan distintos tipos de formatos de flujo.
Flujo completo: consta de todos los contenidos de conjuntos de datos desde el momento en que se creó el conjunto de datos hasta la instantánea especificada.
El flujo predeterminado generado por el comando zfs send es un flujo completo. Contiene un volumen o sistema de archivos, hasta la instantánea especificada, y la incluye. El flujo no contiene instantáneas distintas de la instantánea especificada en la línea de comandos.
Flujo incremental: consta de las diferencias entre una instantánea y otra instantánea.
Un paquete de flujos es un tipo de flujo que contiene uno o varios flujos completos o incrementales. Existen tres tipos de paquetes de flujos:
Paquete de flujos de replicación: consta del conjunto de datos especificado y sus descendientes. En él, se incluyen todas las instantáneas intermedias. Si el origen de un conjunto de datos clonado no es un descendiente de la instantánea especificada en la línea de comandos, ese conjunto de datos de origen no se incluye en el paquete de flujos. Para recibir el flujo, el conjunto de datos de origen debe existir en la agrupación de almacenamiento de destino.
Considere la siguiente lista de conjuntos de datos y sus orígenes. Supongamos que se crearon en el orden en que aparecen a continuación.
NAME ORIGIN pool/a - pool/a/1 - pool/a/1@clone - pool/b - pool/b/1 pool/a/1@clone pool/b/1@clone2 - pool/b/2 pool/b/1@clone2 pool/b@pre-send - pool/b/1@pre-send - pool/b/2@pre-send - pool/b@send - pool/b/1@send - pool/b/2@send -
Un paquete de flujos de replicación que se crea con la siguiente sintaxis:
# zfs send -R pool/b@send ....
Consta de los siguientes flujos completos e incrementales:
TYPE SNAPSHOT INCREMENTAL FROM full pool/b@pre-send - incr pool/b@send pool/b@pre-send incr pool/b/1@clone2 pool/a/1@clone incr pool/b/1@pre-send pool/b/1@clone2 incr pool/b/1@send pool/b/1@send incr pool/b/2@pre-send pool/b/1@clone2 incr pool/b/2@send pool/b/2@pre-send
En la salida anterior, la instantánea pool/a/1@clone no se incluye en el paquete de flujos de replicación. Como tal, este paquete de flujos de replicación solo se puede recibir en una agrupación que ya tiene la instantánea pool/a/1@clone.
Paquete de flujos recursivos: consta del conjunto de datos especificado y sus descendientes. A diferencia de los paquetes de flujos de replicación, las instantáneas intermedias no se incluyen, a menos que sean el origen de un conjunto de datos clonado que se incluye en el flujo. De manera predeterminada, si el origen de un conjunto de datos no es un descendiente de la instantánea especificada en la línea de comandos, el comportamiento es similar a los flujos de replicación. Sin embargo, un flujo recursivo autocontenido, que se describe a continuación, se crea de tal manera que no hay dependencias externas.
Un paquete de flujos recursivos que se crea con la siguiente sintaxis:
# zfs send -r pool/b@send ...
Consta de los siguientes flujos completos e incrementales:
TYPE SNAPSHOT INCREMENTAL FROM full pool/b@send - incr pool/b/1@clone2 pool/a/1@clone incr pool/b/1@send pool/b/1@clone2 incr pool/b/2@send pool/b/1@clone2
En la salida anterior, la instantánea pool/a/1@clone no se incluye en el paquete de flujos recursivos. Como tal, este paquete de flujos recursivos solo se puede recibir en una agrupación que ya tiene la instantánea pool/a/1@clone. Este comportamiento es similar al escenario de paquetes de flujos de replicación descritos anteriormente.
Paquete de flujos recursivos autocontenido: no depende de ningún conjunto de datos que no esté incluido en el paquete de flujos. Este paquete de flujos recursivos se crea con la siguiente sintaxis:
# zfs send -rc pool/b@send ...
Consta de los siguientes flujos completos e incrementales:
TYPE SNAPSHOT INCREMENTAL FROM full pool/b@send - full pool/b/1@clone2 incr pool/b/1@send pool/b/1@clone2 incr pool/b/2@send pool/b/1@clone2
Tenga en cuenta que el flujo recursivo autocontenido tiene un flujo completo de la instantánea pool/b/1@clone2, lo que hace posible recibir la instantánea pool/b/1 sin dependencias externas.