Un instantané d'un système de fichiers ou volume ZFS est converti en flux d'instantané à l'aide de la commande zfs send. Ensuite, vous pouvez utiliser le flux d'instantané pour recréer un système de fichiers ou volume ZFS à l'aide de la commande zfs receive.
Selon les options zfs send utilisées pour créer le flux d'instantané, différents formats de flux sont générés.
Flux complet : se compose du contenu intégral du jeu de données, depuis sa création jusqu'à la prise de l'instantané spécifié.
Le flux par défaut généré par la commande zfs send est un flux complet. Il contient un système de fichiers ou un volume, jusqu'à et y compris l'instantané spécifié. Le flux ne contient pas d'autre instantané que celui spécifié sur la ligne de commande.
Flux incrémentiel : se compose des différences entre deux instantanés.
Un package de flux est un type de flux contenant un ou plusieurs flux incrémentiels. Il existe trois types de packages de flux :
Package de flux de réplication : se compose du jeu de données spécifié et de ses descendants. Il inclut tous les instantanés intermédiaires. Si l'origine d'un jeu de données cloné n'est pas un descendant de l'instantané spécifié sur la ligne de commande, le jeu de données d'origine n'est pas inclus dans le package de flux. Pour recevoir le flux, le jeu de données d'origine doit exister dans le pool de stockage de destination.
Examinez la liste de jeux de données suivis de leur origine suivante. Nous supposerons qu'ils ont été créés dans l'ordre dans lequel ils apparaissent ci-dessous :
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 package de flux de réplication créé en respectant la syntaxe suivante :
# zfs send -R pool/b@send ....
Se compose des flux complets et incrémentiels suivants :
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
Dans la sortie qui précède, l'instantané pool/a/1@clone n'est pas inclus dans le package de flux de réplication. En l'état, ce package de flux de réplication peut uniquement être reçu dans un pool possédant déjà l'instantané pool/a/1@clone .
Package de flux récursif : se compose du jeu de données spécifié et de ses descendants. A la différence des packages de flux de réplication, les instantanés intermédiaires ne sont pas inclus, sauf s'ils constituent l'origine d'un jeu de données cloné inclus dans le flux. Par défaut, si l'origine d'un jeu de données n'est pas un descendant de l'instantané spécifié sur la ligne de commande, le comportement est le même que pour les flux de réplication. Cependant, un flux récursif autonome, comme décrit ci-après , est créé de cette façon qu'il n'existe aucune dépendance externe.
Un package de flux récursif créé en respectant la syntaxe suivante :
# zfs send -r pool/b@send ...
Se compose des flux complets et incrémentiels suivants :
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
Dans la sortie qui précède, l'instantané pool/a/1@clone n'est pas inclus dans le package de flux récursif. En l'état, ce package de flux récursif peut uniquement être reçu dans un pool qui possède déjà l'instantané pool/a/1@clone . Ce comportement est similaire au scénario du package de flux de réplication décrit plus haut.
Package de flux récursif autonome : ne dépend d'aucun jeu de données non inclus dans le package de flux. Le package de flux récursif créé en respectant la syntaxe suivante :
# zfs send -rc pool/b@send ...
Se compose des flux complets et incrémentiels suivants :
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
Notez que le flux récursif autonome possède un flux complet de l'instantané pool/b/1@clone2, ce qui permet la réception de l'instantané pool/b/1 sans dépendance externe.