Comment faire un instantané btrfs?

22

Ma partition / home se compose d'un disque physique entier. Il est formaté en btrfs. Je veux un instantané. Je suis confus en ce qui concerne le nommage des sous-volumes, en particulier.

Je suis conscient qu'il y a des questions similaires, mais chaque question similaire semble demander quelque chose de différent de ce que je demande (et elles sont plus anciennes, ce qui signifie probablement obsolètes, étant donné le développement rapide de btrfs). Par exemple, la réponse à cette question n'est apparemment pas la réponse à ma question car ma partition / home est un volume séparé et la page de manuel de btrfs affiche une commande différente pour créer des instantanés maintenant.

un autre problème similaire, pas de solution solide .
quelqu'un d'autre aussi confus que moi sur les problèmes de nommage

Ma question:

Commencer simplement: est-ce la bonne commande pour prendre un instantané simple de ma partition domestique?

btrfs subvolume snapshot /home/@home /home/@home_snapshot_20120421

Je suis vraiment courageuse et je l'ai testé et cela ne fonctionne pas. L'erreur est error accessing /home/@home. Comme indiqué ci-dessous, @home est répertorié.

Je suis évidemment confus sur les noms de sous-volume. Dois-je les utiliser pour créer des instantanés? Certains exemples montrent la prise d'instantanés de la maison en utilisant /homecomme paramètre source, mais sur la base d'exemples de volumes racine, il me semble que je dois utiliser /home/@home.

Cette commande fonctionnerait-elle? Et sinon, pourquoi?

btrfs subvolume snapshot /home /home/@home_snapshot_20120421

Est-ce @juste une convention de dénomination? Est-ce que cela a du sens?

Voici quelques résultats qui peuvent être pertinents:

btrfs subvolume list /home
ID 256 top level 5 path @home

Je ne sais pas exactement ce que cela signifie. Lorsque j'essaye, btrfs device scancela donne une erreur (par exemple, impossible de scanner le périphérique / dev / sda1). Mon système de fichiers ne contient aucune erreur. Tout va bien.

Voici mes partitions. En réponse à une réponse, no / home n'est pas ma seule partition btrfs.

/dev/sda1: (boot partition) TYPE="ext2"  
/dev/sda2: (root partition) TYPE="btrfs"  
/dev/sdb1: (home partition) TYPE="btrfs"  
/dev/sdc1: (shared partition) TYPE="btrfs"  
/dev/sdc2: TYPE="swap"  
MountainX pour Monica Cellio
la source
la communauté décidera du repo ...
One Zero

Réponses:

19

Quelle est la commande correcte pour créer un instantané de ma partition domestique sur Ubuntu 12.04?

Étant donné que home est sur une partition btrfs et qu'il est monté en tant que / home, la commande correcte est:

sudo btrfs subvolume snapshot /home/ /home/<any_name_you_choose_for_the_snapshot>

Voici mes résultats:

Avant d'exécuter la commande aujourd'hui:

$ btrfs subvolume list /home  
ID 256 top level 5 path @home  
ID 257 top level 5 path @home/@snapshot_20120521_1936

La commande:

$ sudo btrfs subvolume snapshot /home/ /home/@snapshot_20120611_1307  
Create a snapshot of '/home/' in '/home/@snapshot_20120611_1307'

Après avoir exécuté la commande aujourd'hui:

$ btrfs subvolume list /home  
ID 256 top level 5 path @home  
ID 257 top level 5 path @home/@snapshot_20120521_1936  
ID 258 top level 5 path @home/@snapshot_20120611_1307

Le seul problème avec cette méthode est que les instantanés apparaissent lorsque vous ls (liste) / home.

Le wiki de la communauté Ubuntu a été mis à jour avec une solution pour cela. C'est ici:

Comment travailler avec des instantanés dans la mise en page d'Ubuntu

Afin de travailler avec des instantanés de / ou / home dans la disposition Ubuntu, il est très pratique de monter le système de fichiers btrfs à un emplacement séparé et de travailler depuis le haut de l'arborescence btrfs, plutôt que depuis les sous-volumes montés. <- c'est la solution. Malheureusement, ce n'est pas pratique .

sudo mount /dev/sdX# /mnt

Pour créer un instantané, utilisez la même syntaxe que celle utilisée ci-dessus:

sudo btrfs subvolume snapshot /mnt/@ /mnt/@_snapshot

Cela créera un instantané du @ sous-volume nommé @_snapshot situé également en haut de l'arborescence btrfs. Comme il se trouve en haut de l'arborescence, il n'apparaîtra pas lors de la liste des fichiers dans un volume monté.

Pour revenir à un instantané, il vous suffit de remplacer son nom par le nom que Ubuntu monte et redémarre. Voici comment changer le nom:

sudo mv /mnt/@ /mnt/@_badroot
sudo mv /mnt/@_snapshot /mnt/@

Pour supprimer un instantané, utilisez:

sudo btrfs subvolume delete /mnt/@_badroot

Les instantanés btrfs sont des sous-volumes en eux-mêmes, et autonomes, la suppression de l'ancien sous-volume @ comme cela est très bien, à condition que nous ayons un remplacement.

REMARQUE: La commande btrfs-tools set-defaultrompra la disposition d'Ubuntu.

MountainX pour Monica Cellio
la source
Alors tu es là non? Vous devriez maintenant pouvoir monter vos instantanés.
turbo
Je n'ai pas encore essayé de les monter. Et je viens de voir la réponse de psusi au sujet du paquet apt-btrfs-snapshot. Cela semble intéressant, non?
MountainX pour Monica Cellio
Oui, je l'ai également mentionné au troisième point. Désolé de l'avoir signalé;)
turbo
Je vous suggère alors de marquer votre solution comme réponse.
turbo
Il existe une solution pour que les instantanés apparaissent lorsque vous êtes à la maison. J'édite ma réponse avec les informations maintenant.
MountainX pour Monica Cellio
11

D'accord d'abord:

  • Le nom du sous-volume que vous regardez est @homeindiqué par btrfs subvolume list /home. Il est monté dedans /home. @home est le nom du sous-volume, il a également l'ID 256, donc très probablement seul votre / home est formaté en btrfs.

  • Maintenant, pour créer un instantané de @home, vous devez émettre: sudo btrfs subvolume snapshot /home/ /home/@home_snapshot_20120421

  • Le sous-volume peut avoir n'importe quel nom. Le @ est la convention d'Ubuntu au moment de l'installation. (Si vous utilisez apt-btrfs-snapshotle sous-volume root, il faut le nommer @btw.) Le wiki de la communauté recommande fortement de conserver en @tant que root et @homehome car il est monté de cette façon. Ceci est particulièrement important si vous souhaitez revenir en arrière: vous ne devez PAS utiliser le sous-volume btrfs set-default (pas la syntaxe mise en évidence par le but).

  • Pour btrfs device scanvous devez utiliser sudo.

  • Pour supprimer un sous-volume, vous pouvez utiliser sudo btrfs subvolume delete @home_snapshot_20120421

Toutes les commandes btrfs peuvent être abrégées aussi longtemps qu'ils sont sans ambiguïté, donc par exemple sudo btrfs device scanpeut être tronqué sudo btrfs d s, sudo btrfs dev scou quoi que ce soit entre les deux.

J'espère que cela a répondu à vos questions. Il existe des outils pour effectuer des sauvegardes régulières, btrfs-snapshot-rotation en est un exemple. Utilisez-les avec prudence car aucun d'entre eux n'est vraiment mature ou n'a acquis suffisamment de traction, c'est-à-dire qu'ils peuvent très bien contenir des bogues.

turbo
la source
Je reçois une erreur:$ sudo btrfs subvolume snapshot @home home/@snapshot_20120611_1257 ERROR: error accessing '@home'
MountainX pour Monica Cellio
De plus, je n'ai pas encore réussi btrfs device scan. Toute variante, y compris l'utilisation, sudodonne l'erreur "ERREUR: impossible de scanner le périphérique '/ dev / sdX'" où X est un nom valide tel que a, a1, b, etc.
MountainX pour Monica Cellio
@OneZero: Je n'ai pas encore toutes les réponses, mais j'ai trouvé la bonne commande pour créer un instantané de ma partition domestique sur Ubuntu 12.04 et j'ai fourni ces informations comme réponse ci-dessous.
MountainX pour Monica Cellio
c'est vraiment étrange. J'ai vérifié avec ma partition btrfs btrfs sub snap @ /mnt/randomet cela a fonctionné pour moi. Là encore, j'étais dans / mnt où @ était monté. Désolé pour la confusion
turbo
@turbo: Votre réponse a été très utile. Pas besoin de s'excuser pour avoir essayé d'aider. Même les pages Ubuntu ne sont pas claires. Nous finirons par tout comprendre.
MountainX pour Monica Cellio
10

Installez le apt-btrfs-snapshotpackage, et utiliser ses sous - commandes list, snapshot, deleteet set-default.

Il s'agit d'un script qui encapsule les btrfscommandes de niveau inférieur . Cela fonctionne en montant d'abord le système de fichiers racine btrfs quelque part. J'entends par là la vraie racine, par opposition au /@sous-volume qui est normalement monté comme /. En d' autres termes, vous devez exécuter mount /dev/sda1 /mntafin que vous puissiez voir les sous - volumes qui seront répertoriés comme /mnt/@, /mnt/@homeet tous les autres que vous avez créé. De là, vous pouvez btrfs subvolume snapshot /mnt/@home @snapshot-today, ce qui créera un instantané de /@homenamed /@snapshot-today. Comparez cela avec l'exécution btrfs subvolume snapshot /home /home/@snapshot_today, qui crée à la place l'instantané en tant qu'enfant /@home, d'où il apparaît lorsque vous ls /homeet son vrai nom /@home/@snapshot-today.

Restauration d' un instantané est juste une simple opération de changement de nom: mv /mnt/@home @backup ; mv /mnt/@snapshot-today @home. La prochaine fois que vous démarrez, quand il va monter /@homedans /home, il trouvera l'instantané.

Il est un peu difficile de faire le tour de la tête, car vous devez garder à l'esprit la différence entre la façon dont btrfs voit les choses et la façon dont le noyau voit les choses, qui est influencée par les options de montage (l'argument subvol = en particulier).

psusi
la source