web-dev-qa-db-fra.com

ZFS Envoyer et ZFS Recever Dataset sans la synchronisation de réplication incrémentale -ri

Y a-t-il une façon de ne pouvoir envoyer que les derniers instantanés au système de sauvegarde ZFS, même s'il a des instantanés précédents? Quand j'essaie d'essayer d'avoir une erreur:

"Impossible de recevoir un nouveau flux de systèmes de fichiers: La destination a des instantanés (par exemple, miroirpool/etc/costuré) doit les détruire pour écraser"

Et j'utilisais zfs envoyer recevoir avec le -f déjà.

Fondamentalement, le système de réception n'a pas reçu de tasse d'instantanés puisque j'ai trouvé qu'il était à court d'espace. J'ai donc supprimé un tas d'instantanés très anciens sur le système de fichiers ZFS destinataire et laissé les plus récents, mais le système ZFS qui fait que l'envoi ZFS a beaucoup d'instantanés encore plus récents qui n'existent pas sur le récepteur ZFS (sauvegarde serveur). Mais je ne veux pas reproduire tous les instantanés manquants à l'instantané qu'ils ont en commun. J'aimerais simplement envoyer les instantanés de couple d'instantané les plus récents sur le récepteur ZFS.

Actuellement, le récepteur ZFS dispose des premier couple des instantanés jamais créés, puis des autres ont été supprimés et que ceux qui sont partis seulement étaient les derniers qu'il y avait de quelque part en octobre 2018. Donc, je voudrais éviter d'envoyer tous les instantanés quotidiens depuis octobre 2018 de l'expéditeur ZFS Système au récepteur ZFS et n'envoyez que les derniers instantanés.

Ou existe-t-il une sorte de type "rsync" de zfs envoyer | ZFS Recevez-vous où je peux simplement conserver les deux jeux de données en Sync sans envoyer sur des instantanés?

2
htfree

J'ai une petite difficulté à analyser votre problème, mais je pense que cela fonctionne comme ceci:

BoxA:pool/dataset@1,2,3,4,5,6,7,8,9,10

BoxB:pool/dataset@1,2,3

Vous voulez obtenir un instantané 10 sur BoxB, mais vous ne voulez pas avoir tous les instantanés intermédiaires (4,5,6,7,8,9).

En supposant que c'est le cas, c'est assez simple:

root@BoxA:~# zfs send -Ri pool/dataset@3 pool/dataset@10 | ssh root@BoxB zfs receive pool/dataset

Après cela (remarque que nous avons utilisé minuscule-i, pas majuscule-I!), vous vous retrouvez avec la situation suivante:

BoxA:pool/dataset@1,2,3,4,5,6,7,8,9,10

BoxB:pool/dataset@1,2,3,10

Notez que puisque nous spécifions -R pour zfs send, nous allons également envoier (et recevoir) tous les jeux de données hypothétiques ou zvols, tels que pool/dataset/child0, pool/dataset/child1, et ainsi de suite. (Sachez également que les choses obtiennent un peu étrange si vous n'avez pas exactement les mêmes instantanés disponibles sur tous les jeux de données enfants, lorsque vous utilisez -R avec zfs send.)

2
Jim Salter