Comment renommer un sous-volume BTRFS?

24

J'ai un système de fichiers BTRFS avec un ensemble de sous-volumes. Jusqu'ici tout va bien. J'ai besoin de changer le nom d'un sous-volume, malheureusement le btrfsprogramme ne me permet pas de renommer un sous-volume. La recherche avec Google a donné quelques résultats, l'un a dit que je peux juste mv, l'autre a dit que je peux juste snapshotchanger de nom et supprimer l'ancien sous-volume. Avant de planter ma partition et de la recharger à partir de la sauvegarde (elle est assez grande), ma question est:

  • Quelle est actuellement la meilleure façon de renommer un sous-volume?
  • Est-il acceptable de le faire mvou invalidera-t-il certaines structures internes?
  • Est-ce que faire un nouvel instantané et supprimer l'ancien sous-volume est le chemin à parcourir, ou a-t-il quelques inconvénients?

Je sais que tout est encore expérimental, mais pour mes besoins, cela a plutôt bien fonctionné (jusqu'à présent, et j'ai des sauvegardes incrémentielles pour chaque jour).

hochl
la source
1
heureux d'entendre que btrfs fonctionne bien pour vous. Jusqu'à présent, cela fonctionne bien pour moi. Pas de problème.
MountainX pour Monica Cellio

Réponses:

16

Just mvit. C'est la méthode recommandée dans la documentation de la communauté Ubuntu .

Et pour clarifier davantage pourquoi c'est la bonne façon de le faire, voici une citation du guide sysadmin de btrfs:

Instantanés

Un instantané est simplement un sous-volume qui partage ses données (et métadonnées) avec d'autres sous-volumes, en utilisant les capacités COW de btrfs. Une fois qu'un instantané [accessible en écriture] est créé, il n'y a pas de différence d'état entre le sous-volume d'origine et le nouveau sous-volume d'instantané. Pour revenir à un instantané, démontez le sous-volume d'origine modifié et montez l'instantané à sa place. À ce stade, le sous-volume d'origine peut être supprimé si vous le souhaitez. Puisqu'un instantané est un sous-volume, les instantanés des instantanés sont également possibles.

MountainX pour Monica Cellio
la source
8

il y a peu de choses importantes à noter. Les dénominations:

btrfs Subvolume - insidesystème de fichiers de conteneur de données indépendant . Il est représenté comme répertoire du FS existant. Si vous créez un nouveau sous-volume, il sera vide, prêt à utiliser un bloc de données logique à l'intérieur du système de fichiers. Très pratique à utiliser lorsque les données doivent être séparées de manière logique, par exemple différentes machines virtuelles ou différents clients sur différents sous-volumes. Cela permet la very fastsuppression de tous les blocs de données logiques avec seulement la commande de suppression de sous-volume.

btrfs Snapshot - une copie du existingsous - volume avec toutes ses données au moment où le snapshot est fait. Peut être utilisé comme sauvegarde opérationnelle pour rétablir les paramètres ou les modifications, par exemple, faire un instantané de sous-volume, apporter des modifications (VM ou données), tester si tout va bien, après une période de grâce, supprimer l'instantané. Important à noter: les instantanés peuvent être en lecture seule ( -rcommutateur) et peuvent donc être utilisés comme blocs d'incrémentation de modifications FS et éventuellement transférés vers absolument un autre BTRFS!

Limitations BTRFS actuelles (2016-12-30):

Copier ou déplacer des données entre des sous-volumes, par exemple, mv dir1/dataset1 dir_subvolume1/produit tous les io réels pour copier des données vers un autre sous-volume et en cas de déplacement, les supprimer du volume d'origine. Et la copie très efficace de tonnes de données simplement en faisant des références et donc en utilisant la fonction COW de BTRFS:

cp -a --reflink=always dir1/dataset1 dir_subvolume1/

et si besoin:

rm -rf dir1/dataset1

Un instantané de sous-volume en lecture seule peut être renommé (déplacé avec mv) au niveau du répertoire existant, mais ne peut pas être renommé / déplacé vers un niveau de sous-répertoire différent. par exemple , mv /btrfs/subvol_snap1 /btrfs/.snaphotsest impossible, ne produit pas beaucoup d' erreur expliqué: mv: cannot move 'subvol_snap1' to '.snapshots/subvol_snap1': Read-only file system. Pour pouvoir déplacer un tel instantané, vous devez créer un nouvel instantané en lecture seule d'un instantané en lecture seule existant vers le nouvel emplacement préféré, puis supprimer l'ancien:

btrfs sub snap -r /btrfs/subvol_snap1 /btrfs/.snaphots/subvol_snap1
btrfs sub del /btrfs/subvol_snap1

Juste pour vivre plus facilement:

btrfs sub list /btrfs

J'espère que cela fera gagner du temps à tous les nouveaux fans de btrfs :)

Arunas Bartisius
la source
4

Si vous vouliez renommer le volume racine en un sous-volume imbriqué, vous auriez besoin de le prendre en photo puis de faire un find $ROOT_VOL -xdev -deletepour supprimer le contenu précédent du volume racine. La manipulation inverse (renommer un sous-volume en volume racine) ne semble pas possible.

Tobu
la source