Qual é a maturidade e a funcionalidade do LVM RAID?
LVM-RAID é realmente mdraid debaixo das cobertas. Funciona basicamente criando dois volumes lógicos por dispositivo RAID (um para dados, chamado "rimage"; outro para metadados, chamado "rmeta"). Em seguida, passa-os para os drivers mdraid existentes. Portanto, coisas como lidar com erros de leitura de disco, balanceamento de carga de E / S etc. devem estar bem maduras.
Essa é a boa notícia.
Ferramentas
Você não pode usá mdadm
-lo (pelo menos, não de maneira fácil¹) e as ferramentas LVM RAID não estão nem tão maduras. Por exemplo, no Debian Wheezy, lvs
não posso dizer o status da sincronização RAID5. Duvido muito que o reparo e a recuperação (especialmente de situações "o que nunca deveria acontecer!") Sejam tão bons quanto o mdadm (e acidentalmente encontrei um deles nos meus testes e finalmente desisti de recuperá-lo - recuperação com MDADM teria sido fácil).
Especialmente se você não estiver usando as versões mais recentes de todas as ferramentas, as coisas pioram.
Recursos ausentes
As versões atuais do LVM-RAID não suportam a redução ( lvreduce
) de um volume lógico RAID. Eles também não suportam a alteração do número de discos ou do nível RAID ( lvconvert
uma mensagem de erro informando que ainda não há suporte). lvextend
funciona e pode até aumentar os níveis de RAID aos quais recentemente tive suporte, como o RAID10. Na minha experiência, estender LVs é muito mais comum do que reduzi-los, então isso é realmente razoável.
Alguns outros recursos do mdraid não estão presentes e, especialmente, você não pode personalizar todas as opções possíveis com o mdadm.
Nas versões mais antigas (como encontradas, por exemplo, no Debian Wheezy), o LVM RAID também não suporta crescimento. Por exemplo, no Wheezy:
root@LVM-RAID:~# lvextend -L+1g vg0/root
Extending logical volume root to 11.00 GiB
Internal error: _alloc_init called for non-virtual segment with no disk space.
Em geral, você não deseja executar as versões do Wheezy.
O acima é uma vez que você instalá-lo. Esse também não é um processo trivial.
Problemas da ferramenta
Brincando com minha Jessie VM, desconectei (virtualmente) um disco. Isso funcionou, a máquina continuou funcionando. lvs
, no entanto, não deu indicação de que as matrizes estavam degradadas. Voltei a conectar o disco e removi um segundo. Permaneceu em execução (este é o raid6). Reconectado, ainda não há indicação de lvs
. Corri lvconvert --repair
no volume, ele me disse que estava tudo bem. Então eu puxei um terceiro disco ... e a máquina morreu. Reinsira-o, reinicie-o e agora não tenho certeza de como corrigir. mdadm --force --assemble
consertaria isso; nem vgchange
nem lvchange
parece ter essa opção (lvchange aceita --force
, mas não parece fazer nada). Mesmo tentando dmsetup
alimentar diretamente a tabela de mapeamento no kernel, não consegui descobrir como recuperá-lo.
Além disso, mdadm
é uma ferramenta dedicada apenas para gerenciar RAID. O LVM faz muito mais, mas parece (e admito que isso é bastante subjetivo) que a funcionalidade RAID foi meio que empurrada para lá; não se encaixa bem.
Como você realmente instala um sistema com LVM RAID?
Aqui está um breve resumo de como instalá-lo no Debian Jessie ou Wheezy. Jessie é muito mais fácil; observe se você vai tentar isso no Wheezy, leia tudo primeiro…
Use uma imagem de CD completa para instalar, não uma imagem netinst.
Prossiga normalmente, acesse o particionamento de disco, configure seus volumes físicos do LVM. Você pode colocar o /boot
LVM-RAID (no Jessie e no Wheezy com alguns trabalhos detalhados abaixo).
Crie seu (s) grupo (s) de volumes. Deixe-o no menu LVM.
Primeiro divertido: o instalador não tem o dm-raid.ko
módulo carregado ou disponível! Então você pode pegá-lo no pacote linux-image que será instalado. Alterne para um console (por exemplo, Alt- F2) e:
cd /tmp
dpkg-deb --fsys-tarfile /cdrom/pool/main/l/linux/linux-image-*.deb | tar x
depmod -a -b /tmp
modprobe -d /tmp dm-raid
O instalador não sabe como criar LVM-RAID LVs, então você precisa usar a linha de comando para fazer isso. Observe que eu não fiz nenhum benchmarking; o tamanho da faixa ( -I
) abaixo é totalmente um palpite para a minha configuração da VM:
lvcreate --type raid5 -i 4 -I 256 -L 10G -n root vg0
Em Jessie, você pode usar o RAID10 para troca. No Wheezy, o RAID10 não é suportado. Portanto, você pode usar duas partições de troca, cada RAID1. Mas você precisa dizer exatamente em quais volumes físicos os colocar ou coloca as duas metades do espelho no mesmo disco . Sim. A sério. De qualquer forma, isso se parece com:
lvcreate --type raid1 -m1 -L 1G -n swap0 vg0 /dev/vda1 /dev/vdb1
lvcreate --type raid1 -m1 -L 1G -n swap1 vg0 /dev/vdc1 /dev/vdd1
Por fim, volte ao instalador e pressione 'Concluir' no menu LVM. Agora você será apresentado a vários volumes lógicos. Esse é o instalador que não entende o que está acontecendo; ignore tudo com rimage
ou rmeta
em seu nome (veja o primeiro parágrafo acima para obter uma explicação do que são).
Vá em frente e crie sistemas de arquivos, troque partições, etc. normalmente. Instale o sistema base, etc., até chegar ao prompt do grub.
No Jessie, o grub2 funcionará se instalado no MBR (ou provavelmente com o EFI, mas ainda não testei). No Wheezy, a instalação falhará e a única solução é fazer o backport do grub2 de Jessie. Isso é realmente bastante fácil, ele compila de forma limpa no Wheezy. De alguma forma, obtenha seus pacotes grub com backport /target
(ou faça isso em um segundo, após o chroot) e:
chroot /target /bin/bash
mount /sys
dpkg -i grub-pc_*.deb grub-pc-bin_*.deb grub-common_*.deb grub2-common_*.deb
grub-install /dev/vda … grub-install /dev/vdd # for each disk
echo 'dm_raid' >> /etc/initramfs-tools/modules
update-initramfs -kall -u
update-grub # should work, technically not quite tested²
umount /sys
exit
Na verdade, no meu mais recente Jessie VM o grub-install travou. Mudar para F2 e fazer while kill $(pidof vgs); do sleep 0.25; done
, seguido pelo mesmo para lvs
, conseguiu através do grub-install. Ele apareceu para gerar uma configuração válida, apesar disso, mas apenas no caso eu fiz um chroot /target /bin/bash
, certificou-se /proc
e /sys
foram montadas, e fez um update-grub
. Naquele tempo, completou. Fiz então um dpkg-reconfigure grub-pc
para selecionar a instalação do grub nos MBRs de todos os discos virtuais.
No Wheezy, depois de fazer o acima, selecione 'continuar sem um gerenciador de inicialização'.
Conclua a instalação. Vai arrancar. Provavelmente.
Conhecimento da comunidade
Há um número razoável de pessoas que conhecem mdadm
e têm muita experiência em implantação. É provável que o Google responda à maioria das perguntas sobre o assunto. Geralmente, você pode esperar uma pergunta sobre o assunto aqui para obter respostas, provavelmente dentro de um dia.
O mesmo não pode ser dito para o LVM RAID. É difícil encontrar guias. A maioria das pesquisas do Google que eu realizava me ensinou a usar matrizes mdadm como PVs. Para ser honesto, isso provavelmente ocorre principalmente porque é mais recente e menos usado. De certa forma, parece injusto manter isso contra isso - mas se algo der errado, a comunidade existente muito maior em torno do mdadm tornará mais provável a recuperação dos meus dados.
Conclusão
O LVM-RAID está avançando rapidamente. No Wheezy, ele não é realmente utilizável (pelo menos, sem fazer backports do LVM e do kernel). No início de 2014, nos testes do Debian, parecia uma ideia interessante, mas inacabada. Os testes atuais, basicamente o que se tornará Jessie, parecem algo que você realmente pode usar, se frequentemente precisar criar pequenas fatias com diferentes configurações de RAID (algo que é um pesadelo administrativo mdadm
).
Se suas necessidades forem atendidas adequadamente por algumas matrizes RAID mdadm grandes, divididas em partições usando LVM, sugiro continuar usando isso. Se, em vez disso, você tiver que criar muitas matrizes (ou mesmo matrizes de volumes lógicos), considere alternar para LVM-RAID. Mas mantenha bons backups.
Muitos dos usos do LVM RAID (e até do mdadm RAID) estão sendo adotados por coisas como armazenamento em cluster / sistemas de objetos, ZFS e btrfs. Eu recomendo também investigar aqueles, eles podem atender melhor às suas necessidades.
Obrigado
Gostaria de agradecer à psusi por me fazer revisitar o estado do LVM-RAID e atualizar esta publicação.
Notas de rodapé
Suspeito que você possa usar o mapeador de dispositivos para colar os metadados e dados de uma maneira que mdadm --assemble
os leve a sério. Claro, você pode rodar mdadm
em volumes lógicos muito bem ... e isso seria mais saudável.
Ao fazer a instalação do Wheezy, não consegui fazer isso pela primeira vez e acabei sem nenhuma configuração do grub. Eu tive que inicializar o sistema digitando todas as informações no prompt do grub. Uma vez inicializado, funcionou, então acho que funcionará bem no instalador. Se você terminar no prompt do grub, aqui estão as linhas mágicas para digitar:
linux /boot/vmlinuz-3.2.0-4-amd64 root=/dev/mapper/vg0-root
initrd /boot/initrd.image-3.2.0-4-amd64
boot
PS: Já faz um tempo desde que eu realmente fiz os experimentos originais. Fiz minhas anotações originais disponíveis. Observe que agora fiz outras mais recentes, abordadas nesta resposta, e não nessas anotações.