Ext4 x XFS x Btrfs x ZFS para NAS

Ext4 x XFS x Btrfs x ZFS para NAS

Meu caso de uso: tenho o Ubuntu Server 18.04 instalado em um SSD M.2. Tenho um HDD de 4 TB que desejo adicionar como armazenamento. Como é principalmente para grandes arquivos de mídia 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 (sinta-se à vontade para defender outro).

Não estou perguntando "Qual é o melhor sistema de arquivos?" — Não existe 'o melhor'. Só estou perguntando às pessoas qual 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 dados se houver perda de energia. O mesmo acontece com o ZFS sem RAM ECC.
  • É possível adicionar RAID-1 posteriormente sem perder dados? Não tenho dinheiro suficiente para outro disco rígido no momento (usei-o para uma unidade externa; o RAID não substitui os backups), mas posso adicionar um 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.

Responder1

Geralmente uso um dos dois sistemas de arquivos a seguir:

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

  • ZFS para qualquer outra coisa.

Para o seu caso de uso, eu usaria o ZFS, especialmente considerando que o Ubuntu 18.04 já o vem. Como você pode facilmente anexar outra perna de espelho a um dispositivo já existente, o ZFS se encaixa muito bem. Por exemplo, vamos nomear seu disco nvme0p1:

  • zpool create tank /dev/nvme0p1crie seu único pool vdev chamado “tank”;
  • zpool attach tank <newdev> /dev/nvme0p1permite espelhamento.

Se, por algum motivo, você não pode/não pode usar o ZFS, então o MDRAID e o XFS são seus amigos:

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

Depois de criar o array, você pode formatá-lo com XFS viamkfs.xfs

Eu façonãosugiro o uso de BTRFS, pois tanto o desempenho quanto a resiliência são inferiores. Por exemplo, a partir doWiki do Debian:

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

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

EDITAR:embora alguns afirmem que o XFS é propenso à perda de dados, isso simplesmente não é 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 descontrolado. Mas os dados sincronizados (ou seja: gravações importantes) são 100% seguros. Além disso, um bug específico que agrava a perda de dados XFSfoi corrigido há mais de 10 anos. Esse bug à parte,qualquersistema de arquivos de alocação atrasada (ext4 e btrfs incluídos)vaiperder um número significativo ou dados não sincronizados em caso de desligamento descontrolado.

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 explicitamente habilitados no Ubuntu 18.04, consultePágina de manual mkfs.xfspara informações adicionais)


1: /proc/mdstatArquivo de exemplo com dispositivo ausente:

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

unused devices: <none>

2: /proc/mdstatarquivo 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>

Responder2

Isso parece mais uma pergunta parasuperusuáriodo que para serverfault, mas algumas das ideias também são válidas para este site, então tentarei responder algumas das perguntas:

  • O XFS tem a reputação de não gostar de perda de energia. Muita coisa aconteceu desde então, e RedHat, Oracle e similares o usam como sistema de arquivos padrão hoje em dia, então eu não ficaria surpreso se esse fosse 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 vê um benefício de velocidade neste sistema de arquivos, pode valer a pena o possível risco.
  • O ZFS sem ECC RAM ainda possui uma funcionalidade muito boa, mas você corre o risco de não capturar algumas instâncias de dados incorretos. Executei o ZFS sem memória ECC por vários anos em um ambiente doméstico semelhante ao que você descreve e nunca experimentei perda óbvia de dados, mas, novamente, não armazenei exatamente dados críticos nesse volume. Desde então, migrei para um hardware de servidor adequado e agora me sinto muito mais confortável em usar meu armazenamento para coisas importantes.
  • Com o ZFS, você simplesmente poderá adicionar um disco a um pool de disco único para criar um espelho. Não tentei na prática, mas recebo vários resultados de pesquisa afirmando sucesso ao verificarPato Pato. Não tenho certeza sobre outros sistemas, mas contanto que você tenha algum tipo de gerenciador de volume em seu sistema de arquivos, ir para RAID1 a partir de um único disco deve ser trivial.
  • Os sistemas de arquivos baseados em CoW (zfs, btrfs) são mais lentos do que sistemas menos ricos em recursos e são mais dependentes de hardware suficientemente poderoso para apoiá-los.

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

Responder3

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

A razão é simples: o padrão é aquele que provavelmente é mais usado, então a chance de algum bug ser encontrado e corrigido é maior. É improvável que as diferenças entre os sistemas de arquivos mencionados signifiquem muito no uso diário leve. Se o desempenho for muito importante, considere obter mais memória para que seu sistema operacional tenha mais espaço para armazenamento em cache.

Dito isto, se você quiser usar a unidade "em" sistemas operacionais, sugiro obter dois, ou pelo menos dividir o que você tem em duas partições físicas e, em seguida, usar NTFS ou exFAT naquele em que você possui mídia.

Responder4

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

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

informação relacionada