BTRFS - 사용된 모든 블록에서 사용되지 않은 공간을 회수하고 파일 시스템을 압축하여 기본적으로 여유 공간을 조각 모음하는 방법은 무엇입니까?

BTRFS - 사용된 모든 블록에서 사용되지 않은 공간을 회수하고 파일 시스템을 압축하여 기본적으로 여유 공간을 조각 모음하는 방법은 무엇입니까?

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를 수행하는 경우에는 여전히 때때로 실행할 가치가 있습니다. 예를 들어, 토렌트 다운로드 수가 많습니다.

관련 정보