여러 btrfs 하위 볼륨이 있는 디렉터리를 삭제하는 방법은 무엇입니까?

여러 btrfs 하위 볼륨이 있는 디렉터리를 삭제하는 방법은 무엇입니까?

내 루트 파일 시스템은 btrfs 파티션에 있습니다. 내 디렉토리 /chroot에 btrfs 하위 볼륨이 많아서 을(를) 사용할 수 없습니다 rm -rf /chroot. 모든 하위 볼륨을 제거하기 위해 를 /chroot사용하여 아래 하위 볼륨만 나열 해 보았습니다 -o. 매뉴얼 페이지에는 "지정된 경로 아래 하위 볼륨만 인쇄"라고 나와 있습니다.

# btrfs subvolume list -o /chroot
ID 593 gen 6616 top level 5 path chroot/base-devel/root
ID 594 gen 6618 top level 5 path chroot/multilib-devel/root
ID 595 gen 6620 top level 5 path chroot/base/root
ID 597 gen 6624 top level 5 path chroot/twm/root
ID 599 gen 6628 top level 5 path chroot/lxde/root
ID 601 gen 6655 top level 5 path chroot/wheezy/root
ID 602 gen 6684 top level 5 path chroot/sid/root
ID 603 gen 6862 top level 5 path var/lib/machines

놀랍게도 이는 /var/lib/macines(삭제하고 싶지 않은)의 하위 볼륨을 반환합니다. 이로 인해 세 가지 질문이 발생합니다.

  1. 이 옵션의 -o기능은 무엇입니까?

  2. 아래에 하위 볼륨만 나열하는 방법/chroot

  3. 하위 볼륨 수를 알 수 없는 디렉터리를 삭제하는 방법은 무엇입니까?

저는 4.2.5 커널과 btrfs-progs v4.3.1이 설치된 Arch Linux를 실행하고 있습니다.

답변1

다음 명령은 /chroot디렉터리의 모든 하위 볼륨을 삭제합니다.

ls /chroot | xargs btrfs subvolume delete

btrfs 하위 볼륨의 일부가 아닌 파일이나 디렉터리가 있는 경우 오류가 인쇄되지만 삭제되지는 않습니다.

(4.6.0 커널 및 btrfs-progs v3.17을 사용하여 Debian에서 테스트됨)

답변2

btrfs subvolume delete <path>지원되는 경로와일드카드.

예를 들어, 스냅샷을 생성하는 하위 볼륨이 있고 각 스냅샷은 자체 하위 볼륨입니다. (즉, /mnt/newDrive/.snapshots/1/snapshot/new_subvol자체 하위 볼륨):

user@machine:/mnt/newDrive/.snapshots$ tree
.
├── 1
│   ├── info.xml
│   └── snapshot
│       └── new_subvol
├── 104
│   ├── info.xml
│   └── snapshot
│       └── new_subvol
├── 111
│   ├── info.xml
│   └── snapshot
│       └── new_subvol

이 모든 하위 볼륨을 삭제하려면 내가 해야 할 일은 다음과 같습니다.

sudo btrfs subvolume delete /mnt/newDrive/.snapshots/*/snapshot/new_subvol

그 후에는 모든 하위 볼륨이 사라지고 쉽게 /mnt/newDrive/.snapshots삭제할 수 있습니다.

rm -rf /mnt/newDrive/.snapshots

도움이 되었기를 바랍니다!

답변3

세 번째 질문에 답하려면 다음을 사용할 수 있습니다.btrfs-rm.

전체 docker 디렉토리를 주기적으로 정리하기 위해 btrfs에서 실행되는 docker 설치에서 이것을 사용합니다. 사용에 따른 위험은 본인 부담이지만 나에게는 효과가 있습니다(TM).

sudo ./btrfs-rm  /var/lib/docker/*   # create clean empty dir for docker

다운로드:https://github.com/DirkTheDaring/btrfs-rm

관련 정보