it-swarm-pt.tech

Ext4 vs. XFS vs. Btrfs vs. ZFS para NAS

Meu caso de uso: Eu tenho o Ubuntu Server 18.04 instalado em um SSD M.2. Eu tenho um disco rígido de 4 TB que desejo adicionar como armazenamento. Como é principalmente para arquivos de mídia grandes e backups, não será gravado com muita frequência.

Qual sistema de arquivos você acha que é mais adequado para este caso de uso?

Meus principais candidatos são Ext3/4, XFS, Btrfs e ZFS (fique à vontade para discutir por outro).

Não estou perguntando "Qual é o melhor sistema de arquivos?" - Não existe algo como "o melhor". Estou apenas perguntando às pessoas quais O sistema de arquivos pode ser mais adequado para este caso de uso. Por favor, tente incluir:

  • Existem desvantagens ou riscos? Ouvi dizer que o XFS pode corromper os dados se houver uma perda de energia. O mesmo acontece com o ZFS sem RAM de ECC.
  • É possível adicionar o RAID-1 mais tarde sem perder dados? No momento, não tenho dinheiro suficiente para outro disco rígido (usei isso para um disco externo; o RAID não substitui os backups), mas posso adicioná-lo mais tarde. Isso não é um requisito, apenas algo que pode ser legal.
  • Qual é o desempenho de leitura/gravação? O Btrfs provavelmente atenderia à maioria das minhas necessidades, mas é muito lento nos benchmarks do Phoronix. O XFS tem um desempenho impressionante, mas ouvi dizer que pode causar perda de dados.

Obrigada pelo Conselho.

28
Alex Shaw

Geralmente, uso um dos seguintes dois sistemas de arquivos:

  • XFS para qualquer coisa que não funcione bem com o CoW (ou para máquinas virtuais cujo armazenamento de dados já esteja em um sistema de arquivos CoW) ou quando é necessária uma E/S direta extremamente rápida;

  • ZFS para qualquer outra coisa.

Para o seu caso de uso, eu usaria o ZFS, especialmente considerando que o Ubuntu 18.04 já o envia. Como você pode facilmente conectar outra perna de espelho a um dispositivo já existente, o ZFS se encaixa perfeitamente. Por exemplo, nomeie seu disco nvme0p1:

  • zpool create tank /dev/nvme0p1 crie seu único pool vdev;
  • zpool attach tank <newdev> /dev/nvme0p1 ativa o espelhamento.

Se, por alguns motivos, você não/não puder usar o ZFS, o MDRAID e o XFS são seus amigos:

  • mdadm --create /dev/md200 -l raid1 -n 2 /dev/nvme0p1 missing criará uma matriz RAID1 com uma perna faltando (consulte # 1);
  • mdadm --manage /dev/md200 --add <newdev> anexa uma nova perna de espelho (formando um RAID1 completo, consulte o item 2)

Após criar a matriz, você pode formatá-la com o XFS via mkfs.xfs

Eu não sugiro o uso de BTRFS, pois desempenho e resiliência são inferiores. Por exemplo, do wiki do Debian :

No momento (07/07 2019, linux ≤ 5.1.16), existe um bug que faz com que um perfil de dois discos raid1 se torne para sempre leitura somente na segunda vez em que é montado em um estado degradado - por exemplo, devido a uma falta/disco quebrado/redefinição de link SATA

Observe também que o fornecedor comercial NAS usando BTRFS (leia-se: Synology) não usa seu próprio recurso RAID integrado; em vez disso, eles usam a comprovada camada MDRAID do Linux.

EDIT: enquanto alguns afirmam que o XFS é propenso a perda de dados, isso simplesmente não está correto. Bem, comparado ao ext3, o XFS (e outros sistemas de arquivos que suportam alocação atrasada) pode perder mais dados não sincronizados em caso de desligamento não controlado. Mas os dados sincronizados (ou seja, gravações importantes) são 100% seguros. Além disso, um bug específico exacerbando a perda de dados do XFS foi corrigido há 10 anos . Esse bug à parte, qualquer sistema de arquivos pronto para alocação de atraso (ext4 e btrfs incluídos) perderá um número significativo ou dados não sincronizados em caso de desligamento sem controle.

Comparado ao ext4, o XFS possui alocação ilimitada de inodes, dicas avançadas de alocação (se necessário) e, na versão recente, suporte a reflink (mas eles precisam ser ativados explicitamente no Ubuntu 18.04, consulte página de manual mkfs.xfs para informações adicionais)


1: Exemplo /proc/mdstat arquivo com dispositivo ausente:

Personalities : [raid1]
md200 : active raid1 loop0[0]
      65408 blocks super 1.2 [2/1] [U_]

unused devices: <none>

2: /proc/mdstat _ após adicionar um segundo dispositivo

Personalities : [raid1]
md200 : active raid1 loop1[2] loop0[0]
      65408 blocks super 1.2 [2/2] [UU]

unused devices: <none>
20
shodanshok

Parece mais uma pergunta para superusuário do que para falha do servidor, mas algumas das idéias também são válidas para este site, por isso vou tentar responder a algumas das perguntas:

  • O XFS tem uma reputação de não gostar de perda de energia. Muita coisa aconteceu desde então, e o RedHat, Oracle e similares o usam como um sistema de arquivos padrão hoje em dia, então eu não ficaria surpreso se esse é um problema significativamente menor hoje do que costumava ser. Especialmente se você tiver uma política de backup decente, se o seu caso de uso for do tipo que beneficia a velocidade desse sistema de arquivos, pode valer a pena o risco possível.
  • ZFS sem ECC RAM ainda possui uma funcionalidade muito agradável, mas você corre o risco de não pegar algumas instâncias de dados incorretos. Executei o ZFS sem memória ECC por vários anos em uma configuração doméstica semelhante à sua. descrevi e nunca experimentei uma perda óbvia de dados, mas, novamente, eu não armazenei exatamente dados críticos nesse volume, pois desde então eu migrei para o hardware do servidor adequado e me sinto muito mais confortável em usar meu armazenamento para coisas importantes agora.
  • Com o ZFS, você deve poder adicionar um disco a um conjunto de discos únicos para criar um espelho. Não tentei na prática, mas recebo vários resultados de pesquisa que alegam êxito ao verificar duckduckgo . Não tenho certeza sobre outros sistemas, mas contanto que você tenha algum tipo de gerenciador de volume no sistema de arquivos, acessar o RAID1 a partir de um único disco deve ser trivial.
  • Os sistemas de arquivos baseados em CoW (zfs, btrfs) são mais lentos que os sistemas menos ricos em recursos e são mais dependentes de ter um hardware suficientemente poderoso para apoiá-los.

Como em um ambiente corporativo, eu definitivamente dedicaria um tempo para executar benchmarks com a carga esperada, para obter experiência em primeira mão com desempenho versus recursos.

5
Mikael H

Eu usaria qualquer sistema de arquivos de diário que o sistema operacional em questão sugerisse como padrão, a menos que eu tivesse um bom motivo para não fazê-lo. A última vez que verifiquei com o Ubuntu que era ext4.

O motivo é simples: o padrão é o que mais provavelmente é usado, portanto, a chance de encontrar e corrigir bugs é a maior. É improvável que as diferenças entre os sistemas de arquivos mencionados sejam muito importantes no uso diário da luz. Se o desempenho for muito importante, considere obter mais memória para que o sistema operacional tenha mais espaço para armazenamento em cache.

Dito isso, se você usar a unidade "em todos os sistemas operacionais", sugiro que você obtenha duas ou, pelo menos, divida a que você possui em duas partições físicas e, em seguida, use NTFS ou exFAT na unidade em que você está usando a mídia.

4
Thorbjørn Ravn Andersen

Se você se preocupa com a integridade de seus dados a longo prazo, sugiro zfs ou btrfs.

Meu entendimento é que esses dois são os únicos que permitem que você esfregue os dados, procurando e potencialmente corrigindo a podridão dos bits.

Não estou familiarizado com o zfs, mas estou executando o btrfs por cerca de 5-6 anos. Eu o executo no RAID1 e tenho um trabalho de limpeza semanal. (Nota: se você não estiver espelhado, a limpeza apenas marcará os blocos defeituosos em vez de reparar!)

O único problema que tive foi que houve um erro em que as extensões não eram liberadas automaticamente e o disco era preenchido, mas na verdade não era.

Ambos têm compactação e desduplicação, mas a desduplicação do btrfs está offline - o que algumas pessoas preferem.

Outro recurso para verificar é este post recente que chegou a Hacker News : Five Years of Btrfs

Nota: Parece haver algum trabalho para a depuração do XFS/ext4

1
rrauenza

Você pode criar um sistema de arquivos formatado em XFS em algo que seja um espelho mdadm done sem ter um espelho real.

Crie a partição como um espelho com três espelhos, mas dois ausentes. Posteriormente, você pode adicionar os dois que estão faltando.

1
Stefan Skoglund