파일 / 폴더의 Btrfs 조각 모음


9

방금 Btrfs 파일 시스템에 Ubuntu 11.10을 설치했으며 파일 조각 모음에 대한 질문을하고 싶습니다.

파일이나 전체 시스템을 조각 모음해야합니까?

조각 모음 # btrfs 파일 시스템 조각 모음 / pool1 조각 모음

Btrfs 조각 모음


아니요, btrs, ext4,3,2, ETC ... 드라이브 조각 모음을 요구하지 않습니다. 다른 파일 시스템처럼 드라이브가 손상됩니다.
— Uri Herrera

그러나 NTFS와 거의 같은 곳은 없습니다.
— Uri Herrera

답변:


13

실제로 Btrfs 파일 시스템을 수동으로 조각 모음 할 필요는 없습니다.

그렇습니다. Btrfs는 COW (copy-on-write)로, Ext보다 훨씬 많은 파일을 조각화한다는 것을 의미하지만, 온라인 상태 일 때 파일 시스템을 쉽게 조각 모음하는 기능을 포함하여 디자인의 여러 측면에서 해결됩니다. 이 발췌문 은 자세한 내용을 제공합니다 (강조 광산).

자동 조각 모음

COW (copy-on-write) 파일 시스템에는 많은 장점이 있지만 조각화와 같은 단점도 있습니다. Btrfs는 파일이 처음 디스크에 기록 될 때 데이터를 순차적으로 배치하지만 COW 설계는 파일에 대한 후속 수정은 이전 데이터 위에 기록하지 말고 빈 블록에 배치해야 함을 의미합니다. 조각화의 원인 (RPM 데이터베이스는이 문제의 일반적인 경우입니다). 또한 모든 파일 시스템에 공통적 인 조각화 문제가 발생합니다.

Btrfs는 이미이 문제를 해결할 대안을 제공합니다. 첫째, 명령을 사용하여 온라인 조각 모음을 지원합니다 btrfs filesystem defragment. 둘째, -o nodatacow데이터에 대한 COW를 비활성화 하는 마운트 옵션 이 있습니다. 이제 btrfs는 세 번째 옵션 인 -o autodefragmount 옵션을 추가합니다 . 이 메커니즘은 파일에 대한 임의의 작은 쓰기를 감지하고 자동 조각 모음 프로세스를 위해 큐에 넣습니다. 아직 가상화 또는 큰 데이터베이스 워크로드에는 적합하지 않지만 rpm, SQLite 또는 bdb 데이터베이스와 같은 작은 파일에는 적합합니다.

따라서 상당한로드에서 데이터베이스와 같은 IO 집약적 소프트웨어를 실행하지 않으려는 경우 autodefrag옵션을 사용 하여 파일 시스템을 마운트하는 한 모든 것이 좋습니다 .

파일 조각화를 확인하기 위해 filefrag 유틸리티를 사용할 수 있습니다 .

$ find /path -type f -exec filefrag {} + >frag.list
# Now you can use your favourite tools to sort the data

Systemd 시스템에서는 /var/log/journal/아마도 가장 조각난 것입니다. ~/.mozilla다른 브라우저 데이터베이스 도 볼 수 있습니다 .

조각 모음을 수행하려면 다음을 사용하십시오.

$ sudo btrfs fi defrag -r /path

조각 모음 상태를 확인하는 방법 ... 또는 조각 모음 상태를 확인하는 명령
— One Zero

3
이 답변은 BTRFS 위키 ( btrfs gotchas)에 따라 잘못되었습니다 . btrfs 볼륨에서 systemd-journald를 실행하면 파일 조각화 문제를 쉽게 재현 할 수 있습니다. autodefrag 옵션으로 아직 테스트하지는 않았지만이 문제를 해결합니다.
— Jonas Schäfer

나는 systemd, firefox 등으로 최소 18 개월 동안 btrfs를 풀 타임으로 사용하고 있습니다. 빠른 검사를 filefrag통해 저널 파일이 실제로 조각화되어 있음을 알 수 있습니다 (각 10k 범위 평균). 성능 영향. 나는 autodefrag켜져 있지 않고 활성화 할 때 다음에 다시 부팅 할 때 다시보고합니다.
— Félix Saparelli

따라서 : 파일 조각화가 발생하고 autodefrag도움이되며 일상적인 시스템에서 성능 영향이 적습니다. 분명히로드가 많은 서버는 상황을 측정하고 조정해야 할 수도 있지만 다시 알파 소프트웨어이므로 피할 수 있습니다.
— Félix Saparelli

find /path -type f -exec filefrag {} + >frag.listFIBMAP unsupported디렉토리 및 기타 비정규 파일의 모든 오류를 피하고 이상한 파일 이름을 손상시키지 않습니다.
— Peter Cordes

0

이 주제를 위해 나는 그것을 명확히하는 것이 낫다고 생각합니다.

모든 파일 시스템! = 복구 / 관리 유틸리티

파일 시스템은 실제 하드웨어에서 데이터가 구성되는 방식에 관한 것입니다. 다른 모든 활동은 특히 GNU / 리눅스에서 만든 사람과 엄격하게 관련이없는 사람들이 수행하는 추가 소프트웨어 및 유틸리티를 사용하여 수행됩니다. 파일 시스템.

이것은 아마도 Btrfs의 경우는 아니지만 데스크탑 및 엔터프라이즈 환경이 서로 다른 등급의 실현성을 가진 다른 솔루션을 제공 할 수 있기 때문에 우리는 때때로 그것에 가깝습니다.

귀하의 질문에 대한 대답은 "아니오"이지만 일반 파일 시스템의 정상적인 동작과 관련된 "아니오"이며, 이것에 대해 찾을 수있는 모든 유틸리티는 단순히 다른 프로젝트입니다.

파일 시스템을 조각 모음해야 할 때는 파일 시스템 자체의 수명과 관련이없는 외부 소프트웨어를 모든 장단점과 함께 사용해야한다는 점을 명심하십시오.


0

btrfs 파일 시스템을 조각 모음하는 명령은 다음과 같습니다.

btrfs filesystem defragment sync -r -v -f [-czlib] / /home

0

이 답변을 바탕으로 나는 다음을 생각해 냈습니다.

sudo find / -xdev -type f -exec filefrag {} + | sed -En 's/(.+): (\w+) extent.*/\2 \1/p' | sort -nr

다음은 가장 조각난 파일을 먼저 형식으로 나열합니다.

<num-fragments> <pathname>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.