현재 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에서 압축할 때 압축 비율을 표시합니다. 3
1에서 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