Btrfs 디스크에서 하나 또는 여러 개의 서브 볼륨을 제거하면 (실제로 제거하지 않고) 여유 공간을 계산할 수있는 방법이 있습니까? “현재 계산할 코드가 없습니다” 라는 것을 알고 있습니다. 어떻게 하시겠습니까?
또한 그들이 왜 그렇게 느리다고 말하는지 궁금합니다. 실제로 하위 볼륨을 제거하고 여유 공간에 대해 묻는 것이 내 경험에서 매우 빠릅니다. 왜 같은 일을 가상으로 수행하는 것이 그렇게 느릴까요?
답변
btrfs quota
and btrfs qgroups
(quota groups)를 살펴보십시오 .
기본적으로 qgroups
요청한대로 정확하게 수행하고 하위 볼륨이 할당 한 공간을 추적합니다. 파일 시스템에 qgroup
기능 을 사용하려면btrfs
# btrfs quota enable /path/to/btrfs/filesystem
그러나 전에이 경고가 이 트리거 그의 완전한 재 계산 qgroup
많은 서브 볼륨 대형 파일 시스템을 위해 특별히 시간이 좀 걸릴 것입니다 데이터입니다. 이 프로세스는 백그라운드에서 비동기 적으로 실행됩니다. 당신은 이미의 상태를 확인할 수 있습니다 qgroups
로
# btrfs qgroup show /path/to/btrfs/filesystem
이것은 당신에게 다음과 같은 결과를 줄 것입니다 :
WARNING: rescan is running, qgroup data may be incorrect
qgroupid rfer excl
-------- ---- ----
0/5 843.69GiB 61.91MiB
0/4881 811.06GiB 9.34GiB
0/7990 867.32GiB 329.91MiB
0/8400 867.17GiB 37.64MiB
(재검색이 계속 실행되는 한 첫 번째 줄에 경고가 표시됩니다.)
Btrfs qgroup
는 각 하위 볼륨에 대해 자동으로를 만듭니다 . 이 경우 서브 볼륨 ID가 4881, 7990 및 8400 인 세 개의 서브 볼륨이 있습니다. 슬래시 앞의 부분은의 레벨입니다 qgroup
. 각 하위 볼륨 qgroup
은 레벨 0에 있습니다. 또한 qgroup
레벨 0에는 항상 ID 5가 있고 btrfs 파일 시스템의 루트에 해당 하는 특수 항목 이 있습니다.
qgroup
위의 각 출력에 대해 얼마나 많은 공간이 참조되는지 보여줍니다. 이는 해당 하위 볼륨에 총 크기가 표시된 수와 같은 파일이 포함되어 있음을 의미합니다.
그러나 스냅 샷 및 btrfs 하위 볼륨의 기록 중 복사 특성으로 인해 파일이 공유 될 수 있습니다. 이는 파일의 내용 (또는 실제로 범위)이 둘 이상의 하위 볼륨에 의해 참조 될 수 있음을 의미합니다. 이것은 두 번째 숫자로 표시 되며 각 하위 볼륨에 의해 독점적으로 할당 된 공간의 양을 나타내며 다른 하위 볼륨과 공유되지 않습니다. 하위 볼륨을 삭제하는 경우 실제로 해제되는 공간입니다.
여러 하위 볼륨을 삭제하면 여유 공간이 얼마나 필요한지 확인하려면 위에서 언급 한 수준을 사용할 수 있습니다. 계층 구조qgroups
로 구성되며 상위 수준 (0보다 높은 수준)의 그룹은 하위 수준의 정보를 집계합니다.
따라서 하위 볼륨 4881 및 7990 (위의 예에서)이 삭제 될 경우 사용 가능한 공간이 얼마나되는지 확인 qgroup
하려면 레벨 1에서
# btrfs qgroup create 1/0 /path/to/btrfs/filesystem
그런 다음 새로 생성 한 하위 볼륨에 새로 생성 qgroup
된 상위 qgroups
볼륨을
# btrfs qgroup assign 0/4881 1/0 /path/to/btrfs/filesystem
# btrfs qgroup assign 0/7990 1/0 /path/to/btrfs/filesystem
이로 인해 할당량 정보가 다시 검색 될 때까지 시간이 걸릴 수 있습니다. 완료되면 이제 발행
# btrfs qgroup show -p /path/to/btrfs/filesystem
다음과 같은 출력을 얻습니다.
qgroupid rfer excl parent
-------- ---- ---- ------
0/5 1.38TiB 2.51GiB ---
0/4881 1.11TiB 10.86GiB 1/0
0/7990 1.23TiB 502.41MiB 1/0
0/8400 1.34TiB 1.69GiB 1/0
1/0 1.51TiB 132.23GiB ---
( 의 부모 / 자식 관계를 보여주는 출력에 열을 추가하는 -p
플래그를 추가 parent
했습니다 qgroups
.)
이제 줄 qgroup
1/0
은 삭제하려는 두 하위 볼륨이 얼마나 많은 공간을 참조 하는지를 알려주며, 더 중요한 것은 그들에게 독점적으로 할당되는 공간을 나타 냅니다. 두 하위 볼륨을 모두 삭제하면 사용 가능한 공간 크기입니다.
또한 그들이 왜 그렇게 느리다고 말하는지 궁금합니다.
이것은 btrfs의 복사 중 복사 특성과 스냅 샷의 특성 때문입니다. btrfs에서 스냅 샷을 생성하면 (일반적으로) 스냅 샷을 포함하는 새로 생성 된 하위 볼륨의 모든 실제 데이터가 스냅 샷의 소스와 공유됩니다. 소스에서 파일이 변경되거나 교체 될 때만 다른 내용 (범위)을 가리 킵니다. 다른 서브 볼륨과 공유되는 모든 공간을 고려해야하기 때문에 서브 볼륨이 삭제 된 경우 실제로 얼마나 많은 공간이 확보되는지 평가하기가 매우 어렵습니다.