BTRFS 파일 시스템에서 사용하는 모든 블록에서 사용되지 않은 공간을 회수하는 방법은 무엇입니까?
부분적으로 사용되는 블록이 많고 각 블록이 10~50% 활용된다고 가정할 때 각 블록의 여유 공간의 90~50%가 회수되도록 이러한 블록을 조각 모음하려면 어떻게 해야 합니까?
가능한 경우 데이터도 압축됩니다.
답변1
BTRFS에는 데이터가 포함된 파일 시스템의 모든 블록에 대해 사용되지 않은 공간을 쉽게 회수할 수 있는 방법이 있습니다! ...btrfs 잔액.
사용법에 대한 공식 문서를 보려면 공식 문서를 방문하여 "사용하지 않는 블록 압축" 여기:https://btrfs.readthedocs.io/en/stable/Balance.html#filter-types
구문은 기본적으로 다음과 같습니다.
btrfs balance start -dusage=<percentageUsed/chunk> <btrfs mount path>
예를 들어:
btrfs balance start -dusage=10 /mnt/btrfs
위의 경우 btrfs 설치 경로 /mnt/btrfs에 있는 모든 블록을 검색하여 최대 10%까지 사용된 블록만 찾습니다.
그런 다음 데이터는 부분적으로 사용된 다른 블록에 재배치되어 사용된 블록의 비율이 10% 이상으로 늘어납니다. 이를 통해 파일 시스템을 압축하고 더 중요한 것은 블록당 사용되지 않거나 잠긴 "여유 공간"을 확보하는 것입니다!
기본적으로 여유 공간 조각 모음
그런 다음 위의 내용을 최대 50%까지 백분율을 증가시켜 스크립트에 넣을 수 있습니다. 위 링크의 공식 문서에서는 이점이 적기 때문에 50% 이상을 권장하지 않습니다.
예를 들어:
#!/usr/bin/env bash
function free_chunks_up_to_50percent {
local path=$1
for USAGE in {10..50..10}
do
echo "usage percentage= ${USAGE}"
echo "path= ${path}"
btrfs balance start -v -dusage=${USAGE} ${path}
done
}
free_chunks_up_to_50percent $1
btrfs-reclaim-unused-space.sh
예를 들어 위 스크립트가 btrfs 설치 경로를 호출하는 스크립트 파일인 경우 위 스크립트를 실행하여 /mnt/btrfs
그곳의 공간을 회수합니다.
sh ./btrfs-reclaim-unused-space.sh /mnt/btrfs
SSD의 경우 BTRFS RAID에서도 매우 빠릅니다.
BTRFS RAID의 기계 디스크의 경우 RAID 어레이(모든 유형의 BTRFS RAID)의 크기에 따라 다소 시간이 걸릴 수 있습니다. 특히 RAID가 많은 IO를 수행하는 경우에는 여전히 때때로 실행할 가치가 있습니다. 예를 들어, 토렌트 다운로드 수가 많습니다.