O sistema não inicializa a partir da partição LVM RAID1 raiz quando algum dos PV subjacentes está faltando

O sistema não inicializa a partir da partição LVM RAID1 raiz quando algum dos PV subjacentes está faltando

Eu tenho LVM RAID 1 (não mdadm RAID 1, mas exatamente LVM2 RAID 1) para minha partição raiz. Eu gostaria de fazer meu sistema inicializar sem nenhum dos HDDs onde residem os PVs subjacentes da partição LVM raiz.

A linha de inicialização do kernel em grub.cfg (gerada automaticamente pelo GRUB2) se parece com:

linux   /kernel-genkernel-x86-3.11.7-hardened-r1-3 root=/dev/mapper/vg-root ro dolvm

Parece perfeito com ambos os discos habilitados e o sistema é tolerante a falhas de HDD em tempo de execução, ou seja, funciona corretamente se algum dos HDDs estiver inoperante durante o tempo de execução.

No entanto, se eu tentar inicializar sem um dos HDDs, recebo

Refusing activation of partial LV root. Use --partial to override.

durante a inicialização e o kernel panic. Por um lado, parece razoável, já que não é um comportamento normal o lvm iniciar quando um dos PV está ausente. No entanto, é absolutamente necessário para inicializar o servidor. A possível solução alternativa em que consigo pensar é adicionar alguma opção adicional à linha de inicialização do kernel.

Você sabe como fazer o LVM RAID 1 funcionar para partição raiz quando um dos HDDs não funciona?

Responder1

O problema foi resolvido noLVM v.em junho de 2014.

AdegradadoO modo de ativação LV foi adicionado ao LVM, que se tornou o modo de ativação padrão. Basicamente, ele ativa um LV se for possível sem perda de dados, mas mesmo que o LV esteja incompleto (como no caso do LVM RAID1 sem uma perna).

Uma descrição mais completa pode ser encontrada aqui:LVM: ativação: Adicionar modo de ativação "degradado".

Responder2

Eu não tentei isso antes e não tenho certeza se é a melhor solução, mas deve ajudá-lo a começar ... Eu recomendo fortemente que você pelo menos navegue pelas fontes na parte inferior para verificar a sanidade do que eu cheguei aqui... :)

Basicamente, você precisará inicializar a mídia de resgate e verificar novamente os PVs, VGs e LVs.

lvm pvscan
lvm vgscan    
lvm lvscan

Então, você poderá forçar a ativação do VG:

lvm vgchange -ay --partial VolGroup00

Feito isso, você pode remover a cópia espelhada ausente do VG:

lvm vgreduce --removemissing --force VolGroup00

Uma vez feito isso, você deve reiniciar em uma configuração não espelhada.

Depois de voltar a funcionar e ter consertado/substituído as unidades defeituosas, você precisará adicioná-las de volta ao sistema e, em seguida, fazer algo como o seguinte (assumindo que /dev/sdb é o unidade que falhou e você criou uma partição LVM nela usando fdisk como /dev/sdb1, e esse /dev/sda1 é onde está o espelho bom):

pvcreate /dev/sdb1
lvm vgextend VolGroup00 /dev/sdb1

Então você precisará recriar cada um dos espelhos LV com algo como:

lvm lvconvert -m 1 /dev/VolGroup00/usr /dev/sda1 /dev/sdb1
lvm lvconvert -m 1 /dev/VolGroup00/var /dev/sda1 /dev/sdb1
lvm lvconvert -m 1 /dev/VolGroup00/root /dev/sda1 /dev/sdb1
...

Fontes:

informação relacionada