Cette section décrit l'utilisation des options zfs send–I et –R pour envoyer et recevoir des flux d'instantanés plus complexes.
Gardez les points suivants à l'esprit lors de l'envoi et de la réception de flux d'instantanés ZFS complexes :
Utilisez l'option zfs send –I pour envoyer tous les flux incrémentiels d'un instantané à un instantané cumulé. Vous pouvez également utiliser cette option pour envoyer un flux incrémentiel de l'instantané d'origine pour créer un clone. L'instantané d'origine doit déjà exister sur le côté récepteur afin d'accepter le flux incrémentiel.
Utilisez l'option zfs send –R pour envoyer un flux de réplication de tous les systèmes de fichiers descendants. Une fois le flux de réplication reçu, les propriétés, instantanés, systèmes de fichiers descendants et clones sont conservés.
Lorsque l'option zfs send –r est utilisée sans l'option –c et lorsque l'option zfs send –R est utilisée, les packages de flux omettent dans certains cas l'origin des clones. Pour plus d'informations, reportez-vous à la section Reconnaissance des flux d'instantané ZFS.
Vous pouvez utiliser les deux options pour envoyer un flux de réplication incrémentiel.
Les modifications des propriétés sont conservées, tout comme les opérations rename et destroy des instantanés et des systèmes de fichiers.
Si l'option zfs recv –F n'est pas spécifiée lors de la réception du flux de réplication, les opérations destroy du jeu de données sont ignorées. La syntaxe de zfs recv –F dans ce cas peut conserve également sa signification de récupération le cas échéant.
Tout comme dans les autres cas – i ou –I (autres que zfs send–R), si l'option –I est utilisée, tous les instantanés créés entre snapA et snapD sont envoyés. Si l'option –i est utilisée, seul snapD (pour tous les descendants) est envoyé.
Pour recevoir ces nouveaux types de flux zfs send, le système récepteur doit exécuter une version du logiciel capable de les envoyer. La version des flux est incrémentée.
Vous pouvez cependant accéder à des flux d'anciennes versions de pool en utilisant une version plus récente du logiciel. Vous pouvez par exemple envoyer et recevoir des flux créés à l'aide des nouvelles options à partir d'un pool de la version 3. Vous devez par contre exécuter un logiciel récent pour recevoir un flux envoyé avec les nouvelles options.
Plusieurs instantanés incrémentiels peuvent être regroupés en un seul instantané à l'aide de l'option zfs send –I. Par exemple :
# zfs send -I pool/fs@snapA pool/fs@snapD > /snaps/fs@all-I
Vous pouvez ensuite supprimer snapB, snapC et snapD.
# zfs destroy pool/fs@snapB # zfs destroy pool/fs@snapC # zfs destroy pool/fs@snapD
Pour recevoir les instantanés combinés, vous devez utiliser la commande suivante :
# zfs receive -d -F pool/fs < /snaps/fs@all-I # zfs list NAME USED AVAIL REFER MOUNTPOINT pool 428K 16.5G 20K /pool pool/fs 71K 16.5G 21K /pool/fs pool/fs@snapA 16K - 18.5K - pool/fs@snapB 17K - 20K - pool/fs@snapC 17K - 20.5K - pool/fs@snapD 0 - 21K -
Vous pouvez également utiliser la commande zfs send –I pour regrouper un instantané et un clone d'instantané en un nouveau jeu de données. Par exemple :
# zfs create pool/fs # zfs snapshot pool/fs@snap1 # zfs clone pool/fs@snap1 pool/clone # zfs snapshot pool/clone@snapA # zfs send -I pool/fs@snap1 pool/clone@snapA > /snaps/fsclonesnap-I # zfs destroy pool/clone@snapA # zfs destroy pool/clone # zfs receive -F pool/clone < /snaps/fsclonesnap-I
Vous pouvez utiliser la commande zfs send –R pour répliquer un système de fichiers ZFS et tous ses systèmes de fichiers descendants, jusqu'à l'instantané nommé. Une fois ce flux reçu, les propriétés, instantanés, systèmes de fichiers descendants et clones sont conservés.
Dans l'exemple suivant, des instantanés des systèmes de fichiers utilisateur sont créés. Un flux de réplication de tous les instantanés utilisateur est créé. Les systèmes de fichiers et instantanés d'origine sont ensuite détruits et récupérés.
# zfs snapshot -r users@today # zfs list NAME USED AVAIL REFER MOUNTPOINT users 187K 33.2G 22K /users users@today 0 - 22K - users/user1 18K 33.2G 18K /users/user1 users/user1@today 0 - 18K - users/user2 18K 33.2G 18K /users/user2 users/user2@today 0 - 18K - users/user3 18K 33.2G 18K /users/user3 users/user3@today 0 - 18K - # zfs send -R users@today > /snaps/users-R # zfs destroy -r users # zfs receive -F -d users < /snaps/users-R # zfs list NAME USED AVAIL REFER MOUNTPOINT users 196K 33.2G 22K /users users@today 0 - 22K - users/user1 18K 33.2G 18K /users/user1 users/user1@today 0 - 18K - users/user2 18K 33.2G 18K /users/user2 users/user2@today 0 - 18K - users/user3 18K 33.2G 18K /users/user3 users/user3@today 0 - 18K -
Dans l'exemple suivant, la commande zfs send –R a été utilisée pour répliquer le système de fichiers users et ses descendants et pour envoyer le flux répliqué vers un autre pool, users2.
# zfs create users2 mirror c0t1d0 c1t1d0 # zfs receive -F -d users2 < /snaps/users-R # zfs list NAME USED AVAIL REFER MOUNTPOINT users 224K 33.2G 22K /users users@today 0 - 22K - users/user1 33K 33.2G 18K /users/user1 users/user1@today 15K - 18K - users/user2 18K 33.2G 18K /users/user2 users/user2@today 0 - 18K - users/user3 18K 33.2G 18K /users/user3 users/user3@today 0 - 18K - users2 188K 16.5G 22K /users2 users2@today 0 - 22K - users2/user1 18K 16.5G 18K /users2/user1 users2/user1@today 0 - 18K - users2/user2 18K 16.5G 18K /users2/user2 users2/user2@today 0 - 18K - users2/user3 18K 16.5G 18K /users2/user3 users2/user3@today 0 - 18K -