압축이 활성화되면 btrfs가 기존 파일을 자동으로 압축합니까?


26

/Ubuntu 12.04 LTS 설치 프로그램에서 파일 시스템 형식으로 btrfs를 선택했습니다 . 설치가 완료된 후 compress=lzo마운트 옵션을 추가 /etc/fstab하고 재부팅했습니다.

기존 파일이 자동으로 압축됩니까, 아니면이를 발생시키기 위해 명시 적으로 수행해야합니까?


1
재부팅하지 않아도됩니다 sudo mount -o remount /. 새로운 fstab 옵션이 적용됩니다.
sep332

NB는 압축 강제 옵션을 사용해야하거나 일부 파일은 사용자가 무엇을하든 여전히 압축되지 않은 상태로 남아있을 것입니다.
rogerdpack

압축력에 관한 참고 사항. 일반 압축 기능은 압축의 이점이 거의 없거나 전혀 없다는 것을 감지하면 해당 특정 파일에 대한 압축을 계속하지 않고 CPU 낭비를 줄입니다. 압축 강제를 사용하여 어쨌든 쓸모없는 압축을 시도합니다. 이것이 적용되는 좋은 예는 이미 압축 된 파일 (멀티미디어, zip 파일 등)입니다. 다시 말해, 압축력은 일반적으로 나쁜 생각입니다. ;)
zaTricky

답변:


27

btrfs fi defragment기존 데이터를 강제로 다시 압축 하려면 실행 해야합니다. 그렇지 않으면 새 데이터 만 압축됩니다.

에서 자주 묻는 질문 :

...로 다시 마운트를 고려 -o compress하고 특정 파일을 제자리 btrfs fi defragment에 다시 쓰거나 모든 항목을 다시 압축하기 위해 실행하십시오 . 시간이 걸릴 수 있습니다.


btrfs fi 조각 모음 -r -clzo / path / to / fs
David Goodwin

2
[정보] 어떤 autodefrag옵션을 마운트? 또한 자동 조각 모음을 수행 할 때 이전에 압축되지 않은 파일을 압축합니까?
Geremia

1
디렉토리 내에서 압축하려면 재귀 플래그 "-r"을 사용해야합니다.
Salami

10

Norbert Fabritius가 말한 내용을 만들었지 만 기존 파일 ( df -h / before btrfs fi defragment = 658MB)의 압축을 보지 못했습니다. df -h / btrfs fi 조각 모음 = 658MB. 새로운 파일은 괜찮습니다. 조금만 검색하면이 인용문이 나옵니다.

이것을 실행 :

# btrfs filesystem defragment ~/stuff

디렉토리의 내용을 조각 모음하지 않습니다.

이것은 의도적으로 설계된 동작입니다. btrfs fi defrag는> it에 전달 된 단일 파일 시스템 객체에서 작동합니다. 이것은 명령이 디렉토리의 내용이 아닌> object 디렉토리에 보유 된 메타 데이터 만 조각 모음한다는 것을 의미합니다. 디렉토리의 내용을 조각 모음하려면 다음과 같은 것이 더 유용합니다.

# find -xdev -type f -exec btrfs fi defrag '{}' \;

이 후, 내 / 그것은 656MB를 차지하고 있습니다. 거의 아무것도 아니지만 확실히 압축이 있습니다.

출처 : https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#Defragmenting_a_directory_doesn.27t_work

이 도움을 바랍니다.

내 영어 죄송합니다.


1
1. btrfs를 사용할 때는 df를 사용하거나 신뢰하지 마십시오 . 2. 압축률을
높이

3
실제로 압축하려는 경우 명령 줄 에 그냥 대신 defrag -clzo또는 defrag -czlib대신 하지 않아야 defrag합니까?
jbo5112

5
"-r"재귀 플래그가 있으므로 지금이 작업을 수행 할 수 있습니다.btrfs fi defrag -r -czlib ~/stuff
Salami

8

Oracle의 설명서에 따르면 -c, -clzo 또는 -czlib 옵션을 사용하여 각 파일을 조각 모음하여 기존 온라인 파일 시스템에서 기존 파일을 압축 할 수 있습니다. 속도는 LZO를 권장합니다.

find / -xdev \( -type f -o -type d \) -exec btrfs filesystem defragment -v -clzo -- {} +

이것은 find 명령을 사용하여 루트 파일 시스템의 모든 파일에서 btrfs 조각 모음을 실행합니다 (처음에 "find"명령 바로 뒤에 슬래시가 제공됨). 다른 하위 볼륨이있는 경우 단일 슬래시 대신 하위 볼륨의 경로 (예 : / home에 하나 있음)와 함께 다시 사용할 수 있습니다.

이를 위해서는 루트 권한이 필요하므로 필요한 경우 sudo를 앞에 추가하십시오.

만나다:


3

https://btrfs.wiki.kernel.org/index.php/Mount_options#List_of_options 에 따르면 다음과 같은 압축 알고리즘을 사용할 수 있습니다.


compress,compress-force
Enable compression. Starting with kernel 2.6.38 you can choose the algorithm for compression:

 - compress=zlib - Better compression ratio. It's the default and safe for olders kernels.
 - compress=lzo - Faster compression.
 - compress=no - Disables compression (starting with kernel 3.6). 

compress-force= - Enable compression even for files that don't compress well, like videos and dd images of disks. The options compress-force=zlib and compress-force=lzo works for kernels >2.6.38.

Note that old (before 2012) btrfs-progs versions will probably fail some operations (e.g. fsck) on filesystems with LZO compression. 

참고 :이 게시물은 아래에 나와있는 어떤 유형의 압축 알고리즘을 사용할 수 있는지에 대한 추가 질문에 대한 답변입니다 ... 그래서 나를 비난하지 마십시오.


2

ArchWiki 에 따르면 :

팁 : compressmount 옵션 을 사용하지 않고 파일별로 압축을 활성화 할 수도 있습니다 . 단순히 chattr +c파일에 적용 하십시오. 디렉토리에 적용되면 새 파일이 자동으로 압축됩니다.

아주 좋아요! 신의 축복을 BTRFS!

또한 BTRFS 위키에서 :

압축 마운트 옵션 을 사용하지 않고 파일을 강제로 압축 할 수 있습니까 ?

예. 이 유틸리티 chattr는 새로 작성된 데이터를 압축하도록 inode를 표시하는 파일 속성 c 설정을 지원합니다.


-9

압축은 기본적으로 Btrfs에서 활성화되므로 명시 적으로 비활성화하지 않으면 압축해야합니다.


11
사실이 아니라면, compression=fstab에서 "좋아하는 압축 알고리즘" 을 전달 하여 활성화해야합니다.
turbo

@turbo 어떤 압축 알고리즘을 사용할 수 있습니까?
ζ--

현재 2 개의 압축이 허용되는 것 같습니다 ( "없음"으로 세면
rogerdpack
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.