Come eliminare i sottovolumi btrfs con <FS_TREE> nel loro nome


9

Ho un sacco di istantanee di btrfs in questo modo:

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

Vorrei sbarazzarmi di loro. Quindi ci ho provato

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'

Qual è la sintassi corretta per eliminare queste istantanee?

Risposte:


10

Sono stato in grado di eliminare queste istantanee montando prima l'intero volume btrfs (non il volume @secondario) e quindi lavorando da lì:

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

Quindi a questo punto, tutti i sottovolumi (compresi apt-snapshotquelli funky ) sono visibili in /mnt, quindi possiamo eliminarli:

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

2
Per questo hai dovuto usare un CD live?
mlissner

2
No, sono stato in grado di farlo mentre eseguivo il sistema dallo @stesso filesystem.
Cactus

1

Il modo più semplice per farlo è utilizzare i apt-btrfs-snapshotcomandi integrati :

A differenza della normale eliminazione di istantanee, non è necessario montare il filesystem per eliminare le istantanee.

Innanzitutto, elenca le apt-btrfs-snapshotistantanee disponibili usando il comando seguente:

sudo apt-btrfs-snapshot list

Ecco un esempio dell'output di quel comando:

@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

Per eliminare l'istantanea @apt-snapshot-2015-10-30_17:53:59, eseguire:

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

Puoi anche eliminare un numero di istantanee per data. Ecco un esempio di un comando che eliminerebbe tutte le istantanee più vecchie di 0 giorni.

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

Ecco un esempio dell'output di quel comando:

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'

Come puoi vedere, le istantanee disponibili sono state eliminate. Tuttavia, lo snapshot più vecchio "old-root" non è stato eliminato e può comunque essere utilizzato per eseguire il rollback anche se è molto più vecchio di 0 giorni.

Esegui il comando seguente per un elenco completo delle funzionalità:

apt-btrfs-snapshot --help

Ho appena provato questo e ho sudo apt-btrfs-snapshot delete-older-than 30dproceduto all'eliminazione di TUTTE le istantanee ...
Cactus,

@Cactus se tutte le tue istantanee sono più vecchie di 30 giorni, è quello che dovrebbe succedere. Per verificarlo prima di iniziare, puoi eseguire: sudo apt-btrfs-snapshot list-older-than 30dper vedere cosa è più vecchio di 30 giorni.
mchid

@Cactus anche se oldroot non deve essere eliminato e può comunque essere utilizzato come punto di ripristino.
mchid

Nota che apt-btrfs-snapshotnon è "incorporato" in ogni distribuzione. In particolare sembra non essere disponibile nei repository Debian.
user44400
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.