Devo usar btrfs ou Ext4 para o meu SSD?

16

Devo usar btrfs (com opções de descarte, compress = lzo e space_cache) ou Ext4 (com opção de descarte) para o SSD da partição raiz do desktop Ubuntu 11.10 (Oneiric) amd64 da minha máquina de escritório?

/ home será um HDD, portanto, a confiabilidade do fs afeta o sistema operacional e não meus dados.

Graham
fonte

Respostas:

13

De acordo com os testes de phoronix , sempre depende de muitos fatores. Em um caso Btrfs, estará indo muito melhor do queEXT4 ao ler arquivos grandes em um SSD. Da mesma forma, considerando o desempenho da transação do disco, Ext4pode ter um desempenho melhor que o posterior.

Você pode dar uma olhada nesses testes aqui , aqui e aqui (AVISO: Artigos longos).

Mas, resumindo, o Btrfs no momento não possui uma vantagem quantitativa de desempenho sobre o sistema de arquivos EXT4 , mesmo quando usado no modo SSD.

Então você pode escolher por Ext4enquanto.

NBK
fonte
2
Os artigos são setembro de 2011, 9 de agosto de 2010 e 29 de maio de 2009, respectivamente. Focando o mais recente, porque presumo que o btrfs estaria evoluindo nos últimos 2 anos. O gráfico btrfs + LZO na página 4 é incrível para o desempenho sequencial de leitura e gravação, mas o btrfs se sai mal com gravações aleatórias, então definitivamente não é para o btrfs para imagens de banco de dados e VM. Eu acho que com a partição raiz a carga é principalmente leituras aleatórias, para as quais não é muito melhor que o ext4.
Graham
Dentro de alguns anos, o Btrfs se tornará uma opção melhor que o EXT4. É um sistema de arquivos mais promissor :)
NBK
7

Para aqueles que tropeçam nessa questão em 2016 ... Use ext4. Eu tentei btrfs e a diferença é substancial. Durante um período de 10 dias, as E / S de gravação no ext4 totalizaram 17.800 setores. Btrfs? 490.400 setores. Mesmo SSD, sistema de arquivos idêntico, partições diferentes. Basicamente, a mesma carga de trabalho.

O ext4 e o btrfs ficam "quietos" quando não há atividade de gravação no drive. Isso é bom.

O Ext4 gravará os dados modificados, além de algumas despesas gerais. As despesas gerais estão relacionadas aos dados gravados. Uma gravação em 4K (1 bloco) envia cerca de 50 a 80 blocos de sobrecarga no próximo commit. (O diário ext4 está totalmente ativado)

Modifique um único bloco 4K no btrfs e você enviará entre 4000-5000 blocos de sobrecarga na próxima confirmação. A consolidação padrão é de 30 segundos, acredito. Eu usei 120.

Agora, depende de como você usa o SSD. Como raiz, normalmente há um fluxo de gravações bastante constante e de baixo nível. Arquivos de log, arquivos de ntp drift, reconstruções do man db, atualizações de topologia do opensm, etc. Cada evento martelará uma unidade btrfs com outras 4000-5000 gravações.

Os números de 10 dias acima são para o meu SSD "de gravação limitada". A maior parte desses 17.800 setores foi resultado de uma pequena atualização do sistema. Uma cópia do btrfs não sofreu. Meus escritores são, exatamente, ntp drift, topologia opensm e atualizações do man db (noturno). Nada mais atinge esse disco, exceto coisas ativamente iniciadas, como atualizações do sistema,vim /etc/whatever etc.

Na verdade, os SSDs sofrerão muitas gravações. Eu simplesmente não consigo entender o motivo de desperdiçá-los, porque a mídia está perseguindo coelhos e arco-íris. Se você quiser pagar esse preço pela COW, vá em frente. Para "performance", nem tanto. É um SSD e você provavelmente poderia colocar o pior "sistema de arquivos" conhecido pelo homem, e ainda obter algum nível de desempenho - apenas por força bruta. Ext4 não é, de longe, o pior sistema de arquivos conhecido pelo homem.

Nenhuma verificação mensal do fs. Experimente o script abaixo. É um hack de 100%, não funciona para pontos de montagem 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

Ele informará quantos blocos foram gravados, de acordo com a própria unidade e exatamente quais arquivos foram atualizados. Precisa de raiz privs. Veja por si mesmo. Eu executo o SSD no sistema de arquivos raiz e chamo o script stat.sh. Então...sudo ./stat.sh /

wkirk
fonte
Eu não gosto do seu método de comparação. Por exemplo, o cheque mensal de fs foi ativado e você obteve esses resultados. O Btrfs é o padrão em quase todos os lugares agora, e por uma boa razão.
Barafu Albino
Nenhuma verificação mensal do fs. Experimente o script abaixo. É um corte de 100%, não vai funcionar para mountpoints MD, etc ...
wkirk
2
Por que uma sobrecarga de gravação tão grande? Você declarou que 1 bloco criou de 50 a 80 blocos escritos mesmo no ext4 - 40 vezes mais do que o necessário. Por quê?
Golar Ramblar
Eu questiono se isso ainda é verdade no final de 2018. No meu teste, comparei a quantia escrita de acordo com o iotop e smartctl e descobri que a última reivindicou 3x a quantia da primeira (ext4).
Michael
2

A última vez que o testei e ainda não ouvi de maneira diferente em nenhum lugar, o ext4 come mídia de estado sólido. (pen drives, unidades de estado sólido, etc.) Não recomendo usá-lo em um dispositivo assim. Use ext3 em vez disso. Na maioria dos casos em SSD, você não será capaz de dizer a diferença.

O BTRFS ainda não é bastante estável. No entanto, é estável o suficiente para aplicativos não críticos. É o que eu uso para criar drives flash inicializáveis. Se você usar compress = zlib e ssd como opções de montagem, a compactação compensará as velocidades de gravação mais baixas da maioria das mídias de estado sólido e o ssd alterará o algoritmo de alocação para um que tenha um desempenho significativamente melhor nesses dispositivos e compensará qualquer baixo nível de desgaste pelo hardware. A única área de desempenho que ainda é um problema é que as chamadas de sincronização são lentas. Isso não é um problema para uso geral, mas o dpkg chama a sincronização após cada operação, portanto, a instalação e atualização do software pode ser lenta. O BTRFS também oferece instantâneos e outros recursos avançados que são bastante úteis em determinadas circunstâncias.

Se você optar pelo BTRFS, use uma distribuição usando o kernel 3.2.0-2 ou posterior. 3.1.x é viável, se necessário. Para kernels antigos, você precisará compilar os módulos BTRFS mais recentes. Os embutidos são quase estáveis, mas a correção de erros não funciona nas versões mais antigas, o que pode deixar você com água na boca se algo der errado. As versões mais recentes têm o fsck que pode realmente reparar as falhas mais comuns.

Uma advertência final, ouvi relatos de que arquivos de swap em um sistema de arquivos BTRFS o corrompem. Esse problema pode ter sido corrigido, mas verifique cuidadosamente antes de implementar um.

Se você precisar de ajuda para configurar o BTRFS da maneira que desejar, entre em contato. Eu fiz alguns loucos que funcionam muito bem para coisas específicas.

Perkins
fonte
2

Eu não usaria o ext4 em uma unidade de estado sólido com base em evidências anedóticas e minha própria experiência que sugere o ext4 pode diminuir bastante a vida útil de um SSD devido ao número de leituras e gravações associadas ao sistema de arquivos. Um artigo que li recentemente sugeriu que o ext4 não otimizado (responsável pelo tamanho da página etc.) em um SSD pode reduzir a vida útil do disco pela metade. Após uma semana de problemas, cheguei à conclusão de que meus próprios SSDs duraram apenas oito meses devido a esse problema. Se você usa um SSD, leia bastante sobre como otimizar o sistema de arquivos com base em itens como o tamanho da página flash, que podem ser diferentes do tamanho típico do cilindro para o qual o sistema de arquivos está configurado.

user75153
fonte
2
Você pode fornecer um link ou outras informações de identificação para o artigo que lê?
Eliah Kagan
Vou tentar encontrar esse artigo especificamente. Lembre-se de que essa declaração foi encontrada na Internet enquanto você navega na loja de charutos. Veja os artigos sobre coisas como TRIMM e otimização. Faça o que fizer, não seja como eu e comece a receber erros de E / S em comandos como "sudo reboot" após oito meses.
user75153