Ma partition/home est constituée d'un disque physique entier. Il est formaté comme btrfs. Je veux prendre un instantané. Je suis confus en ce qui concerne la dénomination des sous-volumes, en particulier.
Je suis conscient qu'il y a des questions similaires, mais chaque question similaire semble poser quelque chose différent de ce que je demande (et ils sont plus âgés, lesquels signifie probablement obsolète, é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 que la page de manuel de btrfs affiche une commande différente pour la création d'instantanés.
autre problème similaire, pas de solution solide .
Quelqu'un d'autre aussi confus que moi sur les questions de nommage
Démarrage simple: est-ce la commande correcte pour prendre un instantané simple de ma partition d'origine?
btrfs subvolume snapshot /home/@home /home/@home_snapshot_20120421
Je suis vraiment courageux et 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-volumes. Dois-je les utiliser pour créer des instantanés? Certains exemples montrent comment prendre des instantanés de la maison en utilisant /home
comme paramètre source, mais à partir d'exemples de volumes racine, il me semble que je dois utiliser /home/@home
.
Cette commande fonctionnerait-elle? Et si non pourquoi?
btrfs subvolume snapshot /home /home/@home_snapshot_20120421
Est-ce que @
est juste une convention de nommage? Est-ce que cela a du sens?
Voici quelques résultats qui pourraient être pertinents:
btrfs subvolume list /home
ID 256 top level 5 path @home
Je ne suis pas sûr de ce que cela signifie, exactement. Lorsque j'essaie btrfs device scan
, une erreur se produit (par exemple, impossible d'analyser le périphérique/dev/sda1). Mon système de fichiers n'a pas d'erreurs. 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"
Étant donné que home est sur une partition btrfs et qu'elle est montée en tant que/home, la commande correcte est la suivante:
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 (listez)/home.
Le wiki de la communauté Ubuntu a été mis à jour avec une solution à cela. C'est ici:
Comment travailler avec des instantanés dans la mise en page d'Ubunt
Pour 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 distinct et de travailler depuis le haut de l'arborescence de 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 dans la partie supérieure de l'arborescence btrfs. Comme il se trouve en haut de l'arborescence, il ne s'affichera pas lors de la liste des fichiers d'un volume monté.
Pour revenir à un instantané, il vous suffit de changer son nom en nom que monte ubuntu et de le redémarrer. 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 il est correct de supprimer l'ancien @ sous-volume comme celui-ci, à condition que nous en ayons un remplacement.
NOTE: La commande btrfs-tools set-default
cassera la mise en page d'Ubuntu.
Ok d'abord les premières choses:
Le nom du sous-volume que vous consultez est @home
, comme indiqué par btrfs subvolume list /home
. Il est monté dans /home
. @home est le nom du sous-volume. Il porte également l'ID 256, de sorte que seul votre/home est probablement formaté en tant que 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-snapshot
, le sous-volume racine doit être nommé @
btw.) Le wiki de la communauté recommande vivement de conserver @
en tant que racine et @home
en tant que maison, car il est monté de cette manière. Ceci est particulièrement important si vous souhaitez revenir en arrière: vous ne devez PAS utiliser btrfs subvolume set-default (pas de syntaxe mise en évidence par but).
Pour btrfs device scan
, vous 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 tant qu'elles ne sont pas ambiguës. Ainsi, par exemple, Sudo btrfs device scan
peut être tronqué en Sudo btrfs d s
, Sudo btrfs dev sc
ou entre les deux.
J'espère que cela a répondu à vos questions. Il existe quelques 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 assez de traction, c’est-à-dire qu’ils peuvent très bien contenir des bugs.
Installez le package apt-btrfs-snapshot
et utilisez ses sous-commandes list
, snapshot
, delete
et set-default
.
Ceci est un script qui encapsule les commandes de niveau inférieur btrfs
. Cela fonctionne en commençant par monter 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é en tant que /
. En d'autres termes, vous devez exécuter mount /dev/sda1 /mnt
pour pouvoir afficher les sous-volumes qui seront répertoriés en tant que /mnt/@
, /mnt/@home
et tous les autres que vous avez créés. À partir de là, vous pouvez btrfs subvolume snapshot /mnt/@home @snapshot-today
, ce qui créera un instantané de /@home
nommé /@snapshot-today
. Comparez ceci à l'exécution de btrfs subvolume snapshot /home /home/@snapshot_today
, qui crée plutôt l'instantané en tant qu'enfant de /@home
. Par conséquent, il apparaît lorsque vous ls /home
et que son vrai nom est /@home/@snapshot-today
.
L'annulation d'un instantané n'est qu'une simple opération de changement de nom: mv /mnt/@home @backup ; mv /mnt/@snapshot-today @home
. Lors du prochain démarrage, lorsqu’il montera /@home
dans /home
, il trouvera l’instantané.
C'est un peu délicat à comprendre, 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 =).