btrfs 압축으로 인한 잠재적인 공간 절약을 계산하는 방법은 무엇입니까?

btrfs 압축으로 인한 잠재적인 공간 절약을 계산하는 방법은 무엇입니까?

현재 btrfs 형식의 디스크에서 압축을 사용하고 있지 않지만 이를 활성화하면 얼마나 많은 공간을 절약할 수 있는지 알고 싶습니다. 디스크에서 실제로 압축을 활성화하고 전후의 여유 공간을 비교하지 않고 이를 추정할 수 있는 방법이 있습니까(또는 방해가 덜하지만 리소스 집약적이며 모든 데이터를 압축이 활성화된 다른 btrfs 형식의 디스크에 복사) 특정 압축 알고리즘 및 수준에 대해 저장됩니까? btrfs 도구가 이 작업을 수행할 수 없는 경우 압축 시험을 위해 내 시스템의 모든 파일을 반복하여 btrfs 자체가 건너뛸 수 있는 동일한 비압축 파일을 모두 건너뛸 수 있는 타사 도구가 있습니까?

답변1

btrfs는 gzip, lzo 및 zstd의 세 가지 압축기를 지원합니다. gzip을 사용하고 싶지 않은 경우가 거의 확실합니다(다른 대안에 비해 압축 속도가 느리고 효율성이 낮음). LZO와 ZSTD는 일반적으로 고속 설정에서 매우 유사합니다.

따라서 다음을 실행하십시오 zstd. btrfs에서 zstd의 기본 압축 수준은 3이지만 수준 1~15도 사용할 수 있습니다. zstd -3 -v < infile > /dev/null이 파일을 레벨 3에서 압축할 때 압축 비율을 표시합니다. 31에서 15 사이의 값을 대체하여 속도/압축 비율 균형을 파악합니다(이 작업은 단일 스레드로 수행됩니다. 커널 btrfs 압축기는 실제로 멀티스레드일 수 있으므로 -T0압축 설정을 추가하여 코어가 많을수록 속도가 얼마나 빨라지는지 확인하세요.

이는 cat압축을 활성화하고 파일 내용을 새 파일로 변환하는 것보다 더 "스마트"하지 않습니다. btrfs는 모든 기존 파일을 자동으로 압축하지 않고 새 파일만 압축합니다.

귀하가 사용하는 파일 시스템에 대해서는 주의를 기울이겠습니다. 예를 들어 GRUB의 btrfs 드라이버가 압축 파일 읽기를 지원하는지 여부는 알 수 없습니다. 그리고: 과거에는 btrfs에서 덜 일반적으로 사용되는 디스크 형식 옵션으로 인해 데이터 손상이 발생했습니다(예를 들어 사용자 공간 도구에서는 이에 대해 경고하지 않지만 btrfs-internal RAID 5를 사용하고 싶지 않을 수 있습니다). 따라서 높은 읽기 성능이 필요하거나 공간이 작지만 파일이 압축 가능하고 파일이 서로 중복되지 않는 경우 압축을 시도하되 백업이 있는 파일에서 수행하십시오.

답변2

압축 옵션이 활성화된 새 btrfs에 예제(10% 또는 유사)를 복사하는 것이 좋습니다. 그러면 도구 compsize(일반적으로 라는 패키지에 포함됨 btrfs-compsize)가 특정 파일이나 디렉터리에 대한 압축 통계를 표시합니다.

다음은 (tokyabinet) 파일 g.tch의 출력 예입니다.

Processed 1 file, 4863847 regular extents (4863847 refs), 0 inline
Type       Perc     Disk Usage   Uncompressed Referenced
TOTAL      11%       67G         593G         593G
zstd       11%       67G         593G         593G

관련 정보