Btrfs 디스크에서 하나 또는 여러 개의 서브 볼륨을 제거하면 (실제로 제거하지 않고) 여유 공간을 계산할 수있는 방법이 있습니까? "현재 계산할 코드가 없습니다" 라는 것을 알고 있습니다. 어떻게 하시겠습니까?
또한 그들이 왜 그렇게 느리다고 말하는지 궁금합니다. 실제로 하위 볼륨을 제거하고 여유 공간에 대해 묻는 것이 내 경험에서 매우 빠릅니다. 왜 같은 일을 가상으로 수행하는 것이 그렇게 느릴까요?
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에서 스냅 샷을 생성하면 (일반적으로) 스냅 샷을 포함하는 새로 생성 된 하위 볼륨의 모든 실제 데이터가 스냅 샷의 소스와 공유됩니다. 소스에서 파일이 변경되거나 교체 될 때만 다른 내용 (범위)을 가리 킵니다. 다른 서브 볼륨과 공유되는 모든 공간을 고려해야하기 때문에 서브 볼륨이 삭제 된 경우 실제로 얼마나 많은 공간이 확보되는지 평가하기가 매우 어렵습니다.