Melhor estratégia para configurar o LVM sobre RAID para flexibilidade no caminho?

5

Tudo bem, espero que essa pergunta seja única o suficiente para não ser considerada outra. "Qual é a diferença entre o LVM e o RAID?" questões. Aqui vai ...

Estou configurando um servidor linux que tem uma gaiola de unidades que me permitirá conectar em aproximadamente 6 drives. As características que eu sou depois são:

  • Tolerância de falha de unidade (então ... RAID, basicamente)
  • Substituição on-line de unidades com falha
  • Alta utilização de espaço em disco (ou seja, se eu tiver 6 unidades de 1 TB, 5 TB com uma unidade de paridade é preferível a 1 TB em 6 espelhos)
  • Alocação flexível de volumes em todo o espaço em disco (assim ... LVM)
  • Aqui está a curva: Eu também quero poder, tanto quanto possível, substituir as unidades por outras maiores no futuro com um tempo mínimo de inatividade no servidor.

Se eu somente quisesse adicionar espaço substituindo unidades por unidades menores, eu poderia usar LVM apenas com lvreduce (desde que, é claro, eu esteja usando um FS encolhível como o Reiser ou ext [2-4] e também que o FS atual pode ser diminuído pela quantidade de drive que eu quero puxar). Mas isso não me dá nenhuma redundância.

A primeira solução em que consigo pensar para obter tanto a redundância quanto a capacidade de substituir unidades é usar as unidades como pares espelhados. Um par seria md0, o próximo par seria md1, etc. Então, eu adicionaria esses a um único grupo de volume. Quando eu quisesse adicionar espaço, eu reduziria um dos dispositivos md * do grupo de volume, puxaria as duas unidades, adicionaria duas unidades maiores, criaria um novo espelho md e as adicionaria ao grupo de volume, expandiria o FS, e eu terminei.

Mas isso reduz minha eficiência de espaço para 50%, porque cada unidade física obtém seu próprio espelho. Eu só tenho 3TB ... e isso vai me fazer precisar substituir com unidades maiores mais cedo.

É claro que, em vez de pares espelhados, eu poderia conectá-los como conjuntos RAID5 de 3 unidades. Cada 3 drives me daria 2TB. Então, eu obteria um total de 4 TB, mas agora estou correndo em um problema onde, para puxar um dispositivo md do grupo de volume, é preciso muito mais espaço com ele (puxando um levaria 2TB em vez de 1TB). Isso significa que precisarei de muito mais espaço de folga no FS ou então não posso trocar as unidades assim.

Então, é aí que estou preso. A única maneira que conheço para obter redundância com tamanhos de unidade heterogêneos e substituição de unidade on-line requer que eu tome uma decisão de compromisso entre a maior eficiência de espaço e maior requisito de espaço de folga para extrair uma unidade (ou conjunto de unidades ).

Existe algum truque inteligente que está faltando?

    
por Jemenake 26.02.2012 / 20:41

2 respostas

2

Acho que o que você está propondo (LVM com vários PVs RAID-1) está correto, exceto por um detalhe: você não precisa necessariamente puxar um conjunto RAID do seu VG para substituí-lo:

  1. Troque um disco em um dos conjuntos RAID ( mdadm fail, remove, swap físico, re-add)
  2. Reconstruir
  3. Troque o segundo
  4. Reconstruir
  5. mdadm --grow
  6. pvresize

Claro, isso pressupõe que você tenha bons backups e que seu disco único não morra enquanto você está fazendo a reconstrução.

    
por 26.02.2012 / 23:20
0

Uma solução seria confiar no ZFS como o sistema de arquivos. No entanto, é comum o Solaris, várias variantes do BSD, portanto, não é necessário no Linux. Uma possível solução seria usar o Debian na variante Debian / kFreeBSD, significando um kernel BSD com uma área de usuário GNU.

O ZFS é ideal para uma alocação muito dinâmica de armazenamento de um pool do ZFS. Com 6 unidades, você pode usar um RAID-2Zs, o que significa que, das seis unidades, duas podem falhar. No entanto, o preço a pagar é que você só pode usar o espaço em disco correspondente a 4 unidades. Existem outras possibilidades, pois no ZFS não é importante a configuração de um pool que é construído.

Dê uma olhada em

por 26.02.2012 / 20:59

Tags