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?