Cara menghapus subvolume btrfs dengan <FS_TREE> di namanya


9

Saya punya banyak snapshot btrf seperti:

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

Saya ingin menyingkirkan mereka. Jadi saya mencoba

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'

Apa sintaks yang benar untuk menghapus snapshot ini?

Jawaban:


10

Saya dapat menghapus snapshot ini dengan terlebih dahulu memasang seluruh volume btrfs (bukan @subvolume) dan kemudian bekerja dari sana:

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

Jadi pada titik ini, semua subvolume (termasuk yang funky apt-snapshot) dapat dilihat /mnt, sehingga kami dapat menghapusnya:

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

2
Apakah Anda harus menggunakan CD live untuk ini?
mlissner

2
Tidak, saya bisa melakukan ini ketika menjalankan sistem dari sistem @file yang sama.
Cactus

1

Cara termudah untuk melakukan ini adalah dengan menggunakan apt-btrfs-snapshotperintah bawaan:

Tidak seperti penghapusan snapshot normal, Anda tidak perlu memasang sistem file untuk menghapus snapshot.

Pertama, daftarkan apt-btrfs-snapshotsnapshot yang tersedia menggunakan perintah berikut:

sudo apt-btrfs-snapshot list

Berikut adalah contoh output dari perintah itu:

@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

Untuk menghapus snapshot @apt-snapshot-2015-10-30_17:53:59, jalankan:

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

Anda juga dapat menghapus sejumlah foto berdasarkan tanggal. Berikut adalah contoh dari perintah yang akan menghapus semua foto yang lebih lama dari 0 hari.

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

Berikut adalah contoh output dari perintah itu:

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'

Seperti yang Anda lihat, foto-foto yang tersedia telah dihapus. Namun, snapshot tertua "root-tua" tidak dihapus dan masih dapat digunakan untuk memutar kembali meskipun jauh lebih tua dari 0 hari.

Jalankan perintah berikut untuk daftar lengkap fitur:

apt-btrfs-snapshot --help

Saya baru saja mencoba ini, dan sudo apt-btrfs-snapshot delete-older-than 30dmelanjutkan untuk menghapus SEMUA foto ...
Cactus

@Cactus jika semua foto Anda lebih dari 30 hari, itulah yang seharusnya terjadi. Untuk memverifikasi ini sebelum Anda mulai, Anda dapat menjalankan: sudo apt-btrfs-snapshot list-older-than 30duntuk melihat apa yang lebih dari 30 hari.
mchid

@Cactus, oldroot tidak boleh dihapus dan masih bisa digunakan sebagai titik pemulihan.
mchid

Perhatikan bahwa apt-btrfs-snapshotini bukan "bawaan" di setiap distribusi. Secara khusus tampaknya tidak tersedia di repositori Debian.
user44400
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.