한 단계에서 btrfs 파일 시스템의 크기를 가능한 가장 작은 크기로 조정하는 방법은 무엇입니까?
나는 dd
가능한 한 적은 양의 데이터를 원하고 스냅샷이 많을수록 속도가 느려지므로 dd
이를 사용하고 싶습니다.btrfs send
btrfs filesystem resize
max
논쟁 은 있지만 min
논쟁은 없습니다.
사용 가능한 공간 이상으로 크기를 조정하려고 하면 다음과 같은 메시지가 나타납니다.
ERROR: unable to resize '/media/backup-alt': No space left on device
점차적으로 크기를 줄여왔지만(예: 인수 전달 -128G
-64G
, -32G
...) 수렴하는 데 시간이 많이 걸리는 솔루션입니다.
한 단계로 최소로 줄일 수 있는 방법은 없을까요?
답변1
지금까지 내가 본 최고의 솔루션은 가장 작은 여유 공간( -b
바이트)을 얻는 것입니다.
sudo btrfs filesystem usage -b /mountpoint
Free (estimated): 71890542592 (min: 71890542592)
그런 다음 금액의 음수로 크기를 조정합니다 min
.
sudo btrfs filesystem resize -71890542592 /mountpoint
또는 최소 여유 바이트 수와 할당되지 않은 바이트 수 사이에 큰 차이가 있는 경우 할당되지 않은 바이트의 정확한 수만큼 크기를 조정하는 것은 실패하는 것처럼 보이므로 (unallocated * 0.9)를 사용하도록 선택할 수 있습니다.
그런 다음 크기 조정이 실패할 때까지 반복해서 조금씩 축소할 수 있습니다.
while sudo btrfs filesystem resize -200M /mountpoint; do true; done
정확히는 한 단계는 아니지만 적어도 대부분은 자동화되어 있습니다. 루프 자체는 하나의 단계일 수 있지만 작은 증분 크기 조정을 수행하면 처음에 큰 덩어리를 축소하는 것보다 시간이 더 오래 걸릴 수 있습니다.
답변2
문제에 대한 더 간단한 해결책은 지원되는 파일 시스템(BTRFS 포함)에 대해 사용되지 않은 블록을 자동으로 건너뛰므로 크기 조정이 필요하지 않은 파티션 복제 및 이미징 도구인 partclone.btrfs
if를 사용하는 것입니다.dd
https://www.partclone.org(GPL-2.0)