btrfs: créer une image d'un volume dans un fichier externe

2

J'ai récemment construit un système avec une btrfspartition racine. La raison la plus convaincante pour adopter btrfspar rapport à ext4, dans mon cas, était les instantanés de copie sur écriture en direct, avec une latence proche de zéro. Comparé à ext4, lorsqu'une sauvegarde complète du système impliquait la suppression du système, le montage à partir d'une distribution en direct et la création d'une partcloneimage sur un support amovible, la promesse des instantanés est que l'instantané puisse être capturé sur le support de sauvegarde pendant que le système est en direct.

À mon grand étonnement, il n'existe aucun outil capable de capturer l'intégralité de la capture instantanée dans un seul fichier sur un support externe. Ainsi, si le système est restauré à partir de ce fichier, toutes les applications auront la même vue du système de fichiers qu'avant le blocage ( sauf que les autres instantanés ou sous-volumes sont manquants).

La documentation suggère de refléter l'arborescence de répertoires à l'aide d'un outil tel que rsync ou d'utiliser btrfs-send/ btrfs-receivepour capturer les modifications incrémentielles sur un autre système. Dans le premier cas, j'ai toujours trouvé qu'il était presque impossible de recréer toutes les métadonnées d'une arborescence de fichiers en reflétant exactement l'arborescence de fichiers plutôt que de créer une image du système de fichiers, et je suis peu optimiste quant à l'efficacité d'une restauration. Je constate toujours que certaines métadonnées, qu’il s’agisse d’autorisations, d’horodatages, de fichiers cachés, etc., ne sont pas correctement capturées. Le problème est aggravé lorsque le transfert a lieu entre des systèmes de fichiers de types différents. L'autre suggestion suppose qu'un autre btrfssystème de fichiers est disponible, ce qui n'est pas toujours le cas.

Des suggestions sont-elles disponibles pour enregistrer ou restaurer une image au niveau du volume, similaires à un fichier partclone, mais ne représentant qu'un sous-volume sélectionné?

epl
la source
Le problème ici est que l’identification d’un sous-volume dépend de métadonnées que vous ne voulez pas, par définition, copier (vous ne voulez qu’un sous-volume), je ne pense donc pas qu’un tel outil serait facile à écrire: modifier ces métadonnées et garder une trace en le faisant.
Dirkt le

Réponses:

0

btrfs sendet btrfs receivesont exactement les outils dont vous avez besoin.

J'ai toujours trouvé presque impossible de recréer toutes les métadonnées dans une arborescence de fichiers en reflétant une arborescence de fichiers plutôt que de créer une image du système de fichiers, et je suis peu optimiste sur le fait qu'une restauration serait très fluide. Je constate toujours que certaines métadonnées, qu’il s’agisse d’autorisations, d’horodatages, de fichiers cachés, etc., ne sont pas correctement capturées.

Avez-vous essayé les outils? Je n'ai pas eu de tels problèmes avec btrfs. btrfs sendet btrfs receivene travaillent pas avec des fichiers, ils travaillent avec des sous-volumes entiers, en ayant accès à toutes les métadonnées Btrfs de manière native .

Le problème est aggravé lorsque le transfert a lieu entre des systèmes de fichiers de types différents. L'autre suggestion suppose qu'un autre système de fichiers Btrfs est disponible, ce qui n'est pas toujours le cas.

Vous aurez besoin d'un autre système de fichiers Btrfs uniquement si vous souhaitez y répliquer le sous-volume. C'est souvent souhaitable, vous pouvez donc le monter et accéder à ses fichiers. Et cela est inévitable si vous souhaitez sauvegarder vos sous-volumes de manière incrémentielle. Vous avez besoin du ou des instantanés précédents exacts aux deux endroits pour envoyer progressivement le suivant.

Avec le vidage complet, cependant, vous obtenez un flux autonome, qui est exactement une image (mais pas une sauvegarde parcourable, à moins que vous ne l'ayez btrfs restore). Travaillez avec comme avec n'importe quel autre flux:

btrfs send /source/subvolume >/another/filesystem/subvolume-image   # just a file
# (or you can gzip it and/or send with nc on the fly, whatever)
# then later
</another/filesystem/subvolume-image btrfs receive /some/btrfs/directory

/some/btrfs/directorypeut appartenir au même système de fichiers Btrfs que /source.

Kamil Maciorowski
la source
Pour être clair, mes exigences sont 1) capturer un seul sous-volume entier, 2) dans un seul fichier (ou un petit groupe), 3) qui peuvent être stockés en tant que fichiers normaux sur n’importe quel type de FS externe. L’objectif est la reprise sur incident après une panne d’équipement (semblable à partclone pour les partitions complètes), et non à des instances répliquées actives, pouvant être parcourues . Je n'ai pas essayé la sendcommande car j'ai compris que ce n'est utile que pour l'échange entre deux btrfspartitions actives. Voulez-vous dire que je peux utiliser la commande comme dans votre exemple pour capturer un vidage minimal mais complet de toutes les données et métadonnées d'un seul sous-volume?
epl
@epl Are you saying that I can use the command as in your example to capture a minimal but full dump of all data and metadata for a single subvolume?- Je crois que oui. Oui.
Kamil Maciorowski
C'est très bien. Les tutoriels indiquent qu’il btrfsn’ya pas de solution pour les sauvegardes et que d’autres outils rsyncsont recommandés. Je souhaite qu'ils indiquent plutôt qu'ils btrfsont un excellent système de sauvegarde. Pour créer une sauvegarde, commencez simplement par créer un instantané, puis transférez-le dans un fichier à l'aide de btrfs send. Pour tester cette approche en ligne, je suppose que je pourrais très facilement transférer un instantané dans un fichier, puis le restaurer dans un sous-volume vide de ce fichier?
epl
@epl btrfs sendsemble bien lorsqu'il s'agit de la copie complète d'un seul sous-volume, mais pour la plupart d'entre eux partageant des blocs de données et pour les sauvegardes incrémentielles, la situation se complique. Voir cette réponse . Dans ce cas, le stockage des sauvegardes sous forme de fichiers entraîne des problèmes: (1) La restauration doit être effectuée dans le bon ordre. (2) Les sauvegardes incrémentielles vous obligent à stocker de nouveaux fichiers, alors que vous ne pouvez pas réellement supprimer les anciens. (3) La sauvegarde non incrémentielle transfère à nouveau certaines données. // Sauf si le fichier contient un système de fichiers Btrfs que vous montez et que vous montez btrfs restoreà la volée.
Kamil Maciorowski