名前に<FS_TREE>が含まれるbtrfsサブボリュームを削除する方法


9

次のようなbtrfsスナップショットがたくさんあります。

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

それらを取り除きたいのですが。だから私は試しました

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'

これらのスナップショットを削除するための正しい構文は何ですか?

回答:


10

最初にbtrfsボリューム全体(@サブボリュームではない)をマウントし、次にそこから作業することで、これらのスナップショットを削除することができました。

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

したがって、この時点で、すべてのサブボリューム(ファンキーなapt-snapshotものを含む)がに表示されている/mntので、それらを削除できます。

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

2
これにはライブCDを使用する必要がありましたか?
mlissner 2015年

2
いいえ、@同じファイルシステムからシステムを実行しているときに、これを行うことができました。
サボテン

1

これを行う最も簡単な方法は、組み込みapt-btrfs-snapshotコマンドを使用することです。

通常のスナップショット削除とは異なり、スナップショットを削除するためにファイルシステムをマウントする必要はありません。

まず、apt-btrfs-snapshot次のコマンドを使用して、使用可能なスナップショットを一覧表示します。

sudo apt-btrfs-snapshot list

そのコマンドの出力例を次に示します。

@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:59、次を実行:

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

日付ごとに複数のスナップショットを削除することもできます。以下は、0日より古いすべてのスナップショットを削除するコマンドの例です。

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

そのコマンドの出力例を次に示します。

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'

ご覧のとおり、使用可能なスナップショットが削除されています。ただし、最も古いスナップショット「old-root」は削除されておらず、0日よりはるかに古くても、ロールバックに使用できます。

機能の完全なリストを表示するには、次のコマンドを実行します。

apt-btrfs-snapshot --help

私はこれを試してみて、すべてのスナップショットsudo apt-btrfs-snapshot delete-older-than 30dを削除しました...
Cactus

@Cactusすべてのスナップショットが30日より古い場合、それが起こります。開始する前にこれを確認するには、次のコマンドを実行してsudo apt-btrfs-snapshot list-older-than 30d、30日より古いものを確認します。
mchid 2015年

@Cactusただし、oldrootは削除してはならず、復元ポイントとして使用できます。
mchid 2015年

apt-btrfs-snapshotはすべてのディストリビューションに「組み込まれている」わけではないことに注意してください。特に、Debianリポジトリでは利用できないようです。
user44400
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.