SSD에 btrfs 또는 Ext4를 사용해야합니까?


16

내 사무실 컴퓨터의 Ubuntu 11.10 (Oneiric) amd64 데스크탑 루트 파티션의 SSD에 btrfs (폐기, compress = lzo 및 space_cache 옵션 사용) 또는 Ext4 (폐기 옵션 포함)를 사용해야합니까?

/ home은 HDD이므로 fs 안정성은 내 데이터가 아닌 OS에 영향을줍니다.

답변:


13

phoronix 의 테스트에 따르면 항상 많은 요인에 달려 있습니다. 어떤 경우 에는 SSD에서 큰 파일을 읽을 Btrfs때보 다 훨씬 더 잘 수행됩니다 EXT4. 마찬가지로 디스크 트랜잭션 성능을 고려하면서 Ext4나중보다 성능이 우수합니다.

여기 , 여기여기 (경고 : 긴 기사) 에서 이러한 테스트를 살펴볼 수 있습니다 .

그러나 요약 하자면 , Btrfs 는 SSD 모드에서 사용하더라도 EXT4 파일 시스템에 비해 양적 성능 이점이 없습니다 .

Ext4지금 당장 선택할 수 있습니다 .


2
기사는 각각 2011 년 9 월, 2010 년 8 월 9 일 및 2009 년 5 월 29 일입니다. btrfs가 지난 2 년 동안 진화 할 것이라고 가정하기 때문에 최신에 집중합니다. 4 페이지의 btrfs + LZO 차트는 순차 읽기 및 쓰기 성능에 놀랍지 만 btrfs는 임의 쓰기 작업에서는 좋지 않으므로 DB 및 VM 이미지의 경우 btrfs가 아닙니다. 루트 파티션을 사용하면로드가 대부분 무작위로 읽혀 ext4보다 훨씬 좋지 않습니다.
Graham

몇 년 안에 Btrfs는 EXT4보다 더 나은 옵션으로 변할 것입니다. 더 유망한 파일 시스템 :)
NBK

7

2016 년에이 질문에 걸려 넘어지는 사람들을 위해 ... ext4를 사용하십시오. 나는 btrfs를 시도했고 그 차이는 상당하다. 10 일 동안 ext4에 대한 쓰기 IO는 17,800 개 섹터에 달했습니다. Btrfs? 490,400 개의 섹터. 동일한 SSD, 동일한 파일 시스템, 다른 파티션. 기본적으로 동일한 작업량.

드라이브에 쓰기 작업이 없으면 ext4와 btrfs는 모두 "quiet"상태가됩니다. 잘 됐네요

Ext4는 수정 된 데이터와 약간의 오버 헤드를 기록합니다. 오버 헤드는 기록 된 데이터와 관련이 있습니다. 4K 쓰기 (1 블록)는 다음 커밋에서 약 50-80 블록의 오버 헤드를 푸시합니다. (ext4 저널이 완전히 활성화되었습니다)

btrfs에서 단일 4K 블록을 수정하면 다음 커밋에서 4000-5000 개의 오버 헤드 블록을 사용하게됩니다. 기본 커밋은 30 초입니다. 나는 120을 사용했다.

이제는 SSD 사용 방법에 따라 다릅니다. 루트로서 일반적으로 상당히 일정하고 낮은 수준의 쓰기 스트림이 진행됩니다. 로그 파일, ntp 드리프트 파일, man db 재 구축, opensm 토폴로지 업데이트 등 각 이벤트는 다른 4000-5000 쓰기로 btrfs 드라이브를 망치게됩니다.

위의 10 일 숫자는 "쓰기 제한"SSD입니다. 이 17,800 개의 섹터 중 대부분은 작은 시스템 업데이트의 결과였습니다. btrfs 사본 중 하나가 손상되지 않았습니다. 필자의 작가는 정확히 ntp 드리프트, opensm 토폴로지 및 man db 업데이트 (매일)입니다. 시스템 업그레이드 등과 같이 적극적으로 시작된 것을 제외하고는 디스크에 다른 것이 없습니다 vim /etc/whatever.

전체 SSD에서 실제로 많은 쓰기가 발생합니다. 나는 단지 뉴스 매체가 토끼와 무지개를 쫓고 있다는 '쿠즈'를 낭비한다는 점을 볼 수 없습니다. COW에 대해이 가격을 지불하려면 그대로 가십시오. "성능"에 대해서는 그리 많지 않습니다. 그것은 SSD이며 아마도 사람에게 알려진 최악의 "파일 시스템"을 넣을 수 있으며 여전히 거친 힘으로 어느 정도의 성능을 얻을 수 있습니다. Ext4는 사람에게 알려진 최악의 파일 시스템이 아닙니다.

월간 fs 확인이 없습니다. 아래 스크립트를 사용해보십시오. 100 % 해킹이므로 md 마운트 포인트에서 작동하지 않습니다.

#! /bin/bash
dev=`cat /proc/mounts | grep " $1 " | awk '{print $1}'`
x=`basename $dev`
vmnam=`lsblk $dev -o MOUNTPOINT,PKNAME | grep "$1" | awk '{print $2}'`
vmx=`vmstat -d | grep $vmnam | awk '{print $8}'`
lbax=`smartctl -a $dev | grep LBA | awk '{print $10}'`
tmpnam=`mktemp XXX`
echo "Tracking device: $dev, mounted on $1 (vmstat on $vmnam)"
tim=`date +%s`
timx=`date +%s`
while true
do
    vm=`vmstat -d | grep "$vmnam" | awk '{print $8}'`
    lba=`smartctl -a $dev | grep LBA | awk '{print $10}'`
    if [ "$vm" != "$vmx" ]
    then
        tim=`date +%s`
        dif=`dc <<< "$vm $vmx - p"`
        lbad=`dc <<< "$lba $lbax - p"`
        timd=`dc <<< "$tim $timx - p"`
        echo `date` " (sec=$timd) writes=$vm (dif=$dif) (lba=$lbad)"
        vmx="$vm"
        lbax="$lba"
        timx="$tim"
        find "$1" -mount -newer "$tmpnam" -print | grep -v "/tmp"
        touch "$tmpnam" 
    fi
    sleep 1 
done

드라이브 자체에 따라 작성된 블록 수와 정확히 어떤 파일이 업데이트되었는지 알려줍니다. 루트 권한이 필요합니다. 직접 참조하십시오. 루트 파일 시스템에서 SSD를 실행하고 스크립트 stat.sh를 호출합니다. 그래서...sudo ./stat.sh /


나는 당신의 비교 방법을 좋아하지 않습니다. 예를 들어, 월별 fs 확인이 시작되어 결과가 나타납니다. Btrfs는 현재 거의 모든 곳에서 기본적으로 사용됩니다.
Barafu Albino

월간 fs 확인이 없습니다. 아래 스크립트를 사용해보십시오. 그것은 ... 100 % 해킹, MD 마운트 지점에 대한하지 않습니다 작업 등의
wkirk

2
왜 이렇게 큰 쓰기 오버 헤드가 발생합니까? 당신은 1 블록이 ext4에서도 50-80 블록을 작성했다고 말했는데, 이는 필요보다 40 배나 더 큽니다. 왜?
Golar Ramblar

나는 2018 년 말에 이것이 여전히 옳은지 의문이다. 내 테스트에서, 나는 itop과 smartctl에 따라 쓰여진 양을 비교하고 후자는 전자 (ext4)의 양을 3 배라고 주장했다.
Michael

2

마지막으로 테스트했을 때 다른 곳에서 듣지 못했지만 ext4 솔리드 스테이트 미디어를 먹습니다 . (썸 드라이브, 솔리드 스테이트 드라이브 등) 이러한 장치에서는 사용하지 않는 것이 좋습니다. 대신 ext3을 사용하십시오. SSD의 대부분의 경우 차이점을 알 수 없습니다.

BTRFS는 아직 안정적이지 않습니다. 그러나 중요하지 않은 응용 프로그램에는 충분히 안정적입니다. 부팅 가능한 플래시 드라이브를 만드는 데 사용합니다. 마운트 옵션으로 compress = zlib 및 ssd를 사용하는 경우 압축은 대부분의 솔리드 스테이트 미디어의 쓰기 속도를 낮추고 ssd는 이러한 알고리즘에서 할당 알고리즘을 크게 향상시켜 할당 알고리즘을 변경합니다. 하드웨어에 의한 마모 레벨링 불량. 여전히 문제가되는 성능 영역 중 하나는 동기화 호출이 느리다는 것입니다. 일반적인 사용에는 문제가되지 않지만 dpkg 호출은 모든 작업 후에 동기화되므로 소프트웨어 설치 및 업데이트가 느려질 수 있습니다. BTRFS는 또한 특정 상황에서 매우 유용한 스냅 샷 및 기타 고급 기능을 제공합니다.

BTRFS를 사용하기로 결정한 경우 커널 3.2.0-2 이상을 사용하여 배포판을 사용해야합니다. 필요한 경우 3.1.x를 사용할 수 있습니다. 이전 커널의 경우 최신 BTRFS 모듈을 직접 컴파일해야합니다. 내장 된 것은 거의 안정적이지만, 오류 수정은 이전 버전에서는 작동하지 않으므로 문제가 발생하면 개울을 남길 수 있습니다. 최신 버전에는 가장 일반적인 결함을 실제로 복구 할 수있는 fsck가 있습니다.

마지막 한 가지주의 할 점은 BTRFS 파일 시스템의 스왑 파일이이를 손상 시킨다는보고를 들었습니다. 이 문제는 해결되었을 수도 있지만 구현하기 전에 신중하게 확인하십시오.

BTRFS 설정을 원하는 방식으로 구성하는 데 도움이 필요하면 알려주십시오. 나는 특정 일을 위해 잘 작동하는 몇 가지 미친 것들을했습니다.


2

나는 일화적인 증거와 ext4가 파일 시스템과 관련된 읽기 및 쓰기 수로 인해 SSD의 수명을 크게 단축시킬 수 있다는 내 경험을 바탕으로 솔리드 스테이트 드라이브에서 ext4를 사용하지 않을 것입니다. 최근에 읽은 한 기사에서는 SSD의 최적화되지 않은 (페이지 크기 등을 고려한) ext4가 디스크 수명을 절반으로 줄일 수 있다고 제안했습니다. 일주일 동안 문제를 해결 한 후,이 문제로 인해 내 SSD가 8 개월간 지속되었다는 결론에 도달했습니다. SSD를 사용하는 경우 파일 시스템이 설정된 일반적인 실린더 크기와 다를 수있는 플래시 페이지 크기와 같은 것을 기반으로 파일 시스템을 최적화하는 방법에 대해 많은 것을 읽으십시오.


2
읽은 기사에 대한 링크 또는 기타 식별 정보를 제공 할 수 있습니까?
Eliah Kagan

나는 그 기사를 구체적으로 찾으려고 노력할 것이다. 시가 샵에서 서핑하는 동안 인터넷에서 그 진술을 찾았 음을 기억하십시오. 아래 줄은 SSD에서 ext4를 사용하기 전에 읽기와 숙제를하십시오. TRIMM 및 최적화와 같은 기사를 살펴보십시오. 당신이 무엇을 하든지, 나처럼되지 말고 8 개월 후에 "sudo reboot"와 같은 명령에서 I / O 오류가 발생하기 시작합니다.
user75153
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.