So löschen Sie btrfs-Subvolumes mit <FS_TREE> im Namen

9

Ich habe ein paar btrfs-Schnappschüsse wie folgt:

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

Ich würde sie gerne loswerden. Also habe ich es versucht

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'

Wie lautet die richtige Syntax zum Löschen dieser Schnappschüsse?

Kaktus
quelle

Antworten:

10

Ich konnte diese Snapshots löschen, indem ich zuerst das gesamte btrfs-Volume (nicht das @Subvolume) bereitstellte und dann von dort aus arbeitete:

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

An diesem Punkt sind also alle Subvolumes (einschließlich der funky apt-snapshot) in sichtbar /mnt, sodass wir sie löschen können:

# btrfs subvol delete /mnt/@apt-snapshot-2013-04-17_21:44:30
# umount /mnt
Kaktus
quelle
2
Mussten Sie dafür eine Live-CD verwenden?
mlissner
2
Nein, ich konnte dies tun, während ich das System @auf demselben Dateisystem ausführte.
Kaktus
1

Der einfachste Weg, dies zu tun, ist die Verwendung der eingebauten apt-btrfs-snapshotBefehle:

Im Gegensatz zum normalen Löschen von Snapshots müssen Sie das Dateisystem nicht mounten, um Snapshots zu löschen.

Listen Sie zunächst die verfügbaren apt-btrfs-snapshotSchnappschüsse mit dem folgenden Befehl auf:

sudo apt-btrfs-snapshot list

Hier ist ein Beispiel für die Ausgabe dieses Befehls:

@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

@apt-snapshot-2015-10-30_17:53:59Führen Sie Folgendes aus , um den Snapshot zu löschen :

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

Sie können auch eine Reihe von Schnappschüssen nach Datum löschen. Hier ist ein Beispiel für einen Befehl, mit dem alle Snapshots gelöscht werden , die älter als 0 Tage sind.

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

Hier ist ein Beispiel für die Ausgabe dieses Befehls:

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'

Wie Sie sehen können, wurden die verfügbaren Schnappschüsse gelöscht. Der älteste Snapshot "old-root" wurde jedoch nicht gelöscht und kann weiterhin zum Zurücksetzen verwendet werden, obwohl er viel älter als 0 Tage ist.

Führen Sie den folgenden Befehl aus, um eine vollständige Liste der Funktionen anzuzeigen:

apt-btrfs-snapshot --help
mchid
quelle
Ich habe es gerade versucht und ALLE Schnappschüsse sudo apt-btrfs-snapshot delete-older-than 30dgelöscht ...
Cactus
@Cactus Wenn alle Ihre Schnappschüsse älter als 30 Tage sind, sollte dies geschehen. Um dies zu überprüfen, bevor Sie beginnen, können Sie Folgendes ausführen: sudo apt-btrfs-snapshot list-older-than 30dum festzustellen, was älter als 30 Tage ist.
Mchid
@Cactus obwohl, oldroot sollte nicht gelöscht werden und kann weiterhin als Wiederherstellungspunkt verwendet werden.
Mchid
Beachten Sie, dass dies apt-btrfs-snapshotnicht in jeder Distribution "eingebaut" ist. Insbesondere scheint es in den Debian-Repositories nicht verfügbar zu sein.
user44400