Comment supprimer les sous-volumes btrfs avec <FS_TREE> dans leur nom


9

J'ai un tas d'instantanés btrfs comme ceci:

20:17:37 [root@galaxy /]$ btrfs subvolume list -a / |grep apt
ID 271 gen 348 top level 5 path <FS_TREE>/@apt-snapshot-2013-04-17_21:44:30
ID 272 gen 352 top level 5 path <FS_TREE>/@apt-snapshot-2013-04-17_21:46:25
ID 273 gen 361 top level 5 path <FS_TREE>/@apt-snapshot-2013-04-17_21:51:13
... # lots more

Je voudrais m'en débarrasser. J'ai donc essayé

20:21:31 [root@galaxy ~]$ btrfs subvolume delete '/<FS_TREE>/@apt-snapshot-2013-04-17_21:44:30'
ERROR: error accessing '/<FS_TREE>/@apt-snapshot-2013-04-17_21:44:30'
20:21:36 [root@galaxy ~]$ btrfs subvolume delete '<FS_TREE>/@apt-snapshot-2013-04-17_21:44:30'
ERROR: error accessing '<FS_TREE>/@apt-snapshot-2013-04-17_21:44:30'
20:21:43 [root@galaxy ~]$ btrfs subvolume delete '/@apt-snapshot-2013-04-17_21:44:30'
ERROR: error accessing '/@apt-snapshot-2013-04-17_21:44:30'
20:21:47 [root@galaxy ~]$ btrfs subvolume delete '@apt-snapshot-2013-04-17_21:44:30'
ERROR: error accessing '@apt-snapshot-2013-04-17_21:44:30'

Quelle est la syntaxe correcte pour supprimer ces instantanés?

Réponses:


10

J'ai pu supprimer ces instantanés en montant d'abord le volume btrfs entier (pas le @sous- volume ) puis en travaillant à partir de là:

# mount /dev/mapper/whatever /mnt -o subvol=/
# ls /mnt
@
@apt-snapshot-2013-04-17_21:44:30
...

Donc, à ce stade, tous les sous-volumes (y compris les plus funky apt-snapshot) sont visibles dans /mnt, nous pouvons donc les supprimer:

# btrfs subvol delete /mnt/@apt-snapshot-2013-04-17_21:44:30
# umount /mnt

2
Avez-vous dû utiliser un CD live pour cela?
mlissner

2
Non, j'ai pu le faire en exécutant le système à partir @du même système de fichiers.
Cactus

1

La façon la plus simple de le faire est d'utiliser les apt-btrfs-snapshotcommandes intégrées :

Contrairement à la suppression normale d'instantanés, vous n'avez pas besoin de monter le système de fichiers pour supprimer des instantanés.

D'abord, répertoriez les apt-btrfs-snapshotinstantanés disponibles à l'aide de la commande suivante:

sudo apt-btrfs-snapshot list

Voici un exemple de la sortie de cette commande:

@apt-snapshot-old-root-2015-10-19_20:20:10
@apt-snapshot-2015-10-28_19:00:46
@apt-snapshot-2015-10-28_19:09:14
@apt-snapshot-2015-10-29_04:40:07
@apt-snapshot-2015-10-29_06:35:57
@apt-snapshot-2015-10-29_07:03:39
@apt-snapshot-2015-10-30_03:49:05
@apt-snapshot-2015-10-30_17:53:59

Pour supprimer l'instantané @apt-snapshot-2015-10-30_17:53:59, exécutez:

sudo apt-btrfs-snapshot delete @apt-snapshot-2015-10-30_17:53:59

Vous pouvez également supprimer un certain nombre d'instantanés par date. Voici un exemple de commande qui supprimerait tous les instantanés antérieurs à 0 jour.

sudo apt-btrfs-snapshot delete-older-than 0d   

Voici un exemple de la sortie de cette commande:

Delete subvolume (no-commit): '/tmp/apt-btrfs-snapshot-mp-odfe0o4g/@apt-snapshot-old-root-2015-10-19_20:20:10'
ERROR: cannot delete '/tmp/apt-btrfs-snapshot-mp-odfe0o4g/@apt-snapshot-old-root-2015-10-19_20:20:10' - Directory not empty
Delete subvolume (no-commit): '/tmp/apt-btrfs-snapshot-mp-b2zv18qr/@apt-snapshot-2015-10-28_19:00:46'
Delete subvolume (no-commit): '/tmp/apt-btrfs-snapshot-mp-zjglvefe/@apt-snapshot-2015-10-28_19:09:14'
Delete subvolume (no-commit): '/tmp/apt-btrfs-snapshot-mp-lj3v74qa/@apt-snapshot-2015-10-29_04:40:07'
Delete subvolume (no-commit): '/tmp/apt-btrfs-snapshot-mp-vztc82zr/@apt-snapshot-2015-10-29_06:35:57'
Delete subvolume (no-commit): '/tmp/apt-btrfs-snapshot-mp-q0ou8e24/@apt-snapshot-2015-10-29_07:03:39'
Delete subvolume (no-commit): '/tmp/apt-btrfs-snapshot-mp-dw8eq0vv/@apt-snapshot-2015-10-30_03:49:05'
Delete subvolume (no-commit): '/tmp/apt-btrfs-snapshot-mp-vgo2yuf2/@apt-snapshot-2015-10-30_17:53:59'

Comme vous pouvez le voir, les instantanés disponibles ont été supprimés. Cependant, le plus ancien instantané "old-root" n'a pas été supprimé et peut toujours être utilisé pour revenir en arrière même s'il est beaucoup plus ancien que 0 jour.

Exécutez la commande suivante pour une liste complète des fonctionnalités:

apt-btrfs-snapshot --help

Je viens d'essayer ceci et j'ai sudo apt-btrfs-snapshot delete-older-than 30dsupprimé TOUS les instantanés ...
Cactus

@Cactus si tous vos instantanés datent de plus de 30 jours, c'est ce qui devrait arriver. Pour vérifier cela avant de commencer, vous pouvez exécuter: sudo apt-btrfs-snapshot list-older-than 30dpour voir ce qui est antérieur à 30 jours.
mchid

@Cactus cependant, oldroot ne doit pas être supprimé et peut toujours être utilisé comme point de restauration.
mchid

Notez que ce apt-btrfs-snapshotn'est pas «intégré» dans chaque distribution. En particulier, il ne semble pas être disponible dans les référentiels Debian.
user44400
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.