btrfs-subvolume list 명령이 모든 하위 볼륨을 나열하는 이유는 무엇입니까?

btrfs-subvolume list 명령이 모든 하위 볼륨을 나열하는 이유는 무엇입니까?

가상 머신 환경에서 BTRFS를 실험해보세요.

2개의 하위 볼륨을 만들었습니다(플랫 구조).

ID 256 gen 13 top level 5 path @
ID 256 gen 9 top level 5 path @home

아래와 같이 각각 설치 @하고 @home다운로드했습니다 ./mnt & /mnt/home

mount -o noatime,space_cache=v2,compress=zstd,subvol=@ /dev/vda3 /mnt
mount -o noatime,space_cache=v2,compress=zstd,subvol=@home /dev/vda3 /mnt/home

아래 하위 볼륨 목록을 보면 /mnt/home두 개의 하위 볼륨이 표시됩니다.

btrfs subvolume list /mnt/home
ID 256 gen 13 top level 5 path @
ID 256 gen 9 top level 5 path @home

이것이 예상되는 동작입니까? 나만 볼 줄 알았는데@home

내가 무엇을 잘못하고 있습니까(하위 볼륨을 올바르게 생성하지 않거나 올바르게 마운트하지 않은 것일 수 있음)?

답변1

이는 예상된 동작입니다. ~에서매뉴얼 페이지:

파일 시스템에 있는 하위 볼륨을 나열합니다 <path>.

따라서 기본적으로 지정된 경로는 확인할 파일 시스템을 식별하는 데에만 사용됩니다.

원하는 콘텐츠를 더 많이 얻으려면 이 옵션을 사용할 수 있습니다 -o.

지정된 볼륨 아래의 하위 볼륨만 인쇄합니다 <path>.

하지만 이 옵션은 하위 볼륨만 인쇄한다는 점에 유의하세요.다음과 같은주어진 경로와 경로는 단순히 하위 볼륨의 시작에 대한 식별자입니다.

예를 들어 루트(/) 하위 볼륨, 별도의 /usr 하위 볼륨, 일반 루트 디렉터리 외부에 스냅샷 볼륨이 있습니다.

$ btrfs subvolume list -ta /
ID      gen     top level       path
--      ---     ---------       ----
256     564502  5               <FS_TREE>/@rootfs
265     564432  256             @rootfs/usr
277     564433  5               <FS_TREE>/@snapshots

-o플래그를 추가하면

$ btrfs subvolume list -o /
ID 265 gen 564432 top level 256 path @rootfs/usr

usr루트 디렉토리 아래에 있기 때문에 하위 볼륨 만 얻습니다 . 루트 하위 볼륨(ID 256)은 경로로 식별된 하위 볼륨이므로 /아래에 있지 않기 때문에 제거되었으며, 스냅샷(ID 277)은 형제이기 때문에 삭제되었습니다 @rootfs.

다시 조금 혼란스럽게 만들려면

$ btrfs subvolume list -o /var
ID 265 gen 564432 top level 256 path @rootfs/usr

/usr이 /var보다 낮지 않지만 /var가 @rootfs 하위 볼륨의 경로인 경우에도 동일한 결과가 발생합니다.

관련 정보