JBOD: Como fazer drives Raid1 com capacidades diferentes? Btrfs, ZFS?

JBOD: Como fazer drives Raid1 com capacidades diferentes? Btrfs, ZFS?

Tenho seleção de discos rígidos, com capacidades:

1 TB
500 GB
320 GB
250 GB

Eu gostaria de fazer deles o Raid1, no sentido de que a cópia de qualquer dado estará sempre em duas das quatro unidades que tenho. O problema é que todas as unidades têm capacidades diferentes. No passado, eu executava Raid1 mdadm normal 2x 2TB, Btrfs com 2x 2TB depois de migrar do mdadm. Não me importo de usar o mdadm novamente, ou Btrfs, ou ZFS, embora não saiba nada sobre isso.

Qual seria o melhor sistema de arquivos ou utilitário para mim, que se enquadra neste critério:

  1. ter duas cópias de arquivos o tempo todo, para que, se um disco morrer, eu não perca dados
  2. ter o máximo possível de espaço disponível e ainda atender aos critérios do ponto 1

O que devo usar? Tenho a sensação de que o Btrfs Raid1 cuidará disso e registrará exatamente duas cópias de cada arquivo em todos os quatro discos rígidos, mas não tenho certeza. Tenho Linux em computador AMD64, com kernel 5.10.

Qualquer conselho é bem-vindo.

EDITAR - SOLUÇÃO!

Muito obrigado por todas as suas respostas! Então fui em frente com a configuração do Btrfs Raid1. Foi um processo demorado, mas muito indolor, pois já conheço o Btrfs e uso-o diariamente. Achei que não perderia espaço físico com o Raid1, mantendo a taxa de redundância de 2. Usei esta calculadora:https://carfax.org.uk/btrfs-usage/

Tamanhos dos meus dispositivos:

931.51 GiB
465.76 GiB
298.09 GiB
232.89 GiB

Total space for files in Raid1 mode: 963 GiB (all space used)
Total space for files in Raid5 mode: 995 GiB (466 GiB unusable on biggest drive)

Com o Raid1, tenho agora 719,5 GiB de dados armazenados e 241,6 GiB livres, totalizando 961,1 GiB, o que corresponde ao que a calculadora disse. E posso adicionar/remover unidades mais tarde, à vontade. Incrível.

Estou tentado a optar pelo Raid5, porque ele oferece um ganho teórico de velocidade de leitura de 4x, enquanto o Raid1 oferece 2x. Mas ouvi dizer que no momento é um pouco experimental e não recomendado para uso diário, correto? Qual é o seu estado no kernel 5.10, qualquer pessoa o usa e pode compartilhar sua experiência?

Após construir o array, adicionar todas as unidades uma por uma e migrar todos os dados para ele (tenho backups), fiz uma limpeza completa e está tudo bem:

$ sudo btrfs scrub start -Bd /home

Scrub device /dev/sda (id 1) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         2:38:51
Total to scrub:   724.03GiB
Rate:             77.53MiB/s
Error summary:    no errors found

Scrub device /dev/sdd (id 2) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         1:52:39
Total to scrub:   374.03GiB
Rate:             56.57MiB/s
Error summary:    no errors found

Scrub device /dev/sdc (id 3) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         0:48:06
Total to scrub:   207.00GiB
Rate:             73.09MiB/s
Error summary:    no errors found

Scrub device /dev/sdb (id 4) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         0:30:00
Total to scrub:   143.00GiB
Rate:             80.89MiB/s
Error summary:    no errors found

Muito feliz!

EDITAR - COMENTÁRIOS PARA @Marcus Müller:

"Observações: tem certeza de que deseja isso? 320 GB e 250 GB provavelmente não são unidades muito novas (...)"

Você está muito correto, são unidades muito antigas! Eu removi minhas unidades atuais de 2x 2TB Seagate Barracuda Compute que eu tinha no Btrfs Raid1 nos últimos anos, para colocar essas unidades antigas aleatórias de 4x. Barracudas vão para meu servidor, que precisa de total confiabilidade, tenho 2x SSD 250GB para /lá (Ext4 mdadm), e 2x HDD TB para /home e /var (Btrfs Raid1), e com RAM ECC. Outros dois Barracudas se juntarão aos dois primeiros, para o modo Btrfs Raid1 ou possivelmente Raid10 ou Raid5.

4 unidades antigas agora estão na minha área de trabalho, elas consistem em:

Western Digital Blue Mobile, WDC WD10JPVX-60JC3T0
[1.00 TB, 4K sectors, SATA 3.0, 6.0 Gb/s, 5400 RPM, 2.5"]
Power_On_Hours 2496

Toshiba 2.5" HDD MK..65GSX, TOSHIBA MK5065GSX
[500 GB, 512 sectors, SATA 2.6, 3.0 Gb/s, 5400 RPM, 2.5"]
Power_On_Hours 2519

Seagate Momentus Thin, ST320LT007-9ZV142
[320 GB, 4K sectors, SATA 2.6, 3.0 Gb/s, 7200 RPM, 2.5"]
Power_On_Hours 5152

Seagate Barracuda 7200.12,ST3250318AS
[250 GB, 512 sectors, SATA 2.6, 3.0 Gb/s, 7200 RPM, 3.5"]
Power_On_Hours 6591

A confiabilidade não é realmente um problema, eu tenho backups, mas não quero surpresas dolorosas muito rapidamente, então a redundância básica de 2.0 vai me poupar problemas se uma das unidades morrer dentro de um ano ou mais, vou apenas colocar outra um ou dois.

Responder1

Eu simplesmente teria um volume físico LVM em cada uma dessas unidades:

pvcreate /dev/drive1 /dev/drive2 /dev/drive3 /dev/drive4

em seguida, crie um grupo de volumes destes:

vgcreate myvolumegroup /dev/drive1 /dev/drive2 /dev/drive3 /dev/drive4

Por fim, crie um volume lógico que tenha a propriedade de cada bloco ter um espelho:

lvcreate --mirrors 1 -l100%FREE  -n myvolume myvolumegroup

Parabéns! Agora você tem um dispositivo de bloco que pode usar comqualquersistema de arquivos desejado, por exemplo, btrfs ou XFS:

mkfs.xfs /dev/myvolumegroup/myvolume
mount /dev/myvolumegroup/myvolume /mnt

deveria apenas funcionar.


Observações: você estáclarovocê quer isso? 320 GB e 250 GB provavelmente não são unidades muito novas, e você obtém apenas (160 + 125) GB = 285 GB de armazenamento extra incluindo essas unidades potencialmente muito antigas aqui.

Usar unidades antigas é contrário ao motivo pelo qual você deseja que o RAID1 comece: disponibilidade de dados. Além disso, considere usar o RAID5 ( man lvmraidpode ajudá-lo com isso).

Responder2

Use btrfsporque, diferentemente do ZFS, ele pode lidar com unidades de tamanhos diferentes com eficiência. Você acabaria com aproximadamente a capacidade total de todas as unidades dividida por dois (com 2 cópias para redundância). Aproximadamente 1 TB. Sem contar a compressão transparente.

O ZFS apenas criaria um vdev com capacidade demenordispositivo - mas com 4 unidades, você faria dois vdevs espelhados. por exemplo, um vdev mirror-1 com 1 TB e 500 GB e um vdev mirror-2 com 320 GB e 250 GB. Para minimizar o desperdício de espaço, você pode particionar as unidades de 1 TB e 320 GB para que tenham uma partição de 500 GB e uma partição de 250 GB para corresponder às unidades espelhadas. Isso daria ao pool uma capacidade total de 750 GB (em uma configuração semelhante a RAID1+0) antes da compactação. O espaço restante (500 GB e 70 GB) nessas unidades pode ser usado para outra coisa, como coisas com as quais você não se importa porque foram baixadas e "copiadas em backup na Internet".

Se você puder pagar, recomendo substituir a unidade de 250 GB por outra unidade de 1 TB. Isso seria ótimo para zfs e muito bom para btrfs, pois aumentaria a capacidade para aproximadamente 1,3 TB para qualquer um deles, antes da compactação transparente. Com muito menos espaço “desperdiçado”.

Não use LVM ou mdadm para fazer o RAID-1/espelhamento, o btrfs pode fazer isso sozinho - e isso anularia grande parte do propósito de usar um sistema de arquivos de correção de erros como o btrfs.

Recursos como instantâneos e compactação transparente ainda funcionariam, mas você perderia a capacidade de qualquer um desses sistemas de arquivos corrigir erros, porque você está efetivamente fornecendo a ele apenas uma única unidade.

Vocêpodeuse software ou hardware raid em ZFS ou btrfs se quiser, mas a) não é necessário eb) não é uma boa ideia, na verdade é uma péssima ideia. É mais trabalhoso e mais complexo de configurar, remove um recurso vital e não oferece nenhum benefício compensatório.

Se você quiser usar LVM ou mdadm, use ext4(ou, melhor ainda, xfs) em cima deles.

Aliás, ainda não acho que confiaria no btrfs para RAID-5/6, mas é absolutamente adequado para espelhos como RAID-1 ou RAID-10.

informação relacionada