btrfs 하위 볼륨을 삭제하는 방법그들의 이름으로

btrfs 하위 볼륨을 삭제하는 방법그들의 이름으로

다음과 같은 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'

이러한 스냅샷을 삭제하는 올바른 구문은 무엇입니까?

답변1

먼저 전체 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

가장 쉬운 방법은 내장 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

관련 정보