md raid não montado por dracut

3

Antecedentes

Estou executando o Centos 7. Originalmente, ele estava sendo executado em um único disco que parecia com isso:

1  200M    EFI System       (/boot/efi)
2  500M    Microsoft basic  (/boot)
3  465.1G  Linux LVM 

LVM VG centos
- LVM LV ext4 centos-root (/)
- LVM LV swap centos-swap (swap)

Esta era apenas uma solução temporária, como originalmente deveria estar instalada em um array RAID1 de software Linux. Eu comecei a migrar hoje. Isto é o que parece atualmente:

Both new disks have this partition layout:

1  200M    EFI System   (/boot/efi)
2  457.6G  Linux RAID   /dev/md0  RAID1 (for boot and LVM)
3  8G      Linux RAID   /dev/md1  RAID0 (so 16GB total, for swap)

/dev/md0 looks like this:

1  500M  Linux filesystem (/boot)
2  457G  Linux LVM        (centos-root is migrated to this)

LVM now has only one LV, centos-root

/etc/mdadm.conf é assim:

ARRAY /dev/md0 level=raid1 num-devices=2 metadata=1.2 name=main.centos.local:0 UUID=5b5057b4:4235ba4b:5342dfda:acf63302
   devices=/dev/sda2,/dev/sdb2
ARRAY /dev/md1 level=raid0 num-devices=2 metadata=1.2 name=main.centos.local:1 UUID=f82a8c99:9b391d83:4efc9456:9e9bad98
   devices=/dev/sda3,/dev/sdb3

/etc/fstab é assim:

/dev/mapper/centos-root                   /          xfs    defaults  0 0
UUID=fcb5f82f-ce6b-460b-800f-329e010bc403 /boot      xfs    defaults  0 0
UUID=C532-14AE                            /boot/efi  vfat   umask=0077,shortname=winnt 0 0
/dev/md1                                  swap       swap   defaults  0 0

blkid envia isto (somente entradas relevantes):

/dev/sdb1: SEC_TYPE="msdos" UUID="C532-14AE" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="ed301bbd-c15c-40af-ae75-bf238d0e6270" 
/dev/sda1: SEC_TYPE="msdos" UUID="C532-14AE" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="f3a76412-41a0-4e04-9b04-ad1c159133cf" 
/dev/md0p1: LABEL="boot" UUID="fcb5f82f-ce6b-460b-800f-329e010bc403" TYPE="xfs" PARTLABEL="primary" PARTUUID="df8d6481-c6ce-423a-b5d5-205d355e5653" 
/dev/md0p2: UUID="7LfywM-oPHy-MTEt-swlI-EVbZ-opTo-m82E6R" TYPE="LVM2_member" PARTLABEL="primary" PARTUUID="19e7f9d5-a955-4036-8338-03a748faa1f6" 
/dev/mapper/centos-root: UUID="deaa9788-b487-4991-adf7-2945788fb6cd" TYPE="xfs"

Eu tenho um script que monta automaticamente a outra partição EFI em /boot/efi_[device] , e quando o kernel é atualizado, o grub.cfg é copiado para essa partição para manter tudo em sincronia.

/dev/sda1 e /dev/sdb1 são mantidos em sincronia pelo script (eu verifiquei isso), então não deve ser um problema que fstab monte um para /boot/efi (isso também significa que se uma unidade foi removido devido a falha, o sistema ainda está garantido para inicializar). Eu poderia ter colocado swap em um LV para simplificar as coisas, mas o RAID0 obtém um desempenho melhor (pelo que vale a pena) e eu ganho 16GB extras de espaço.

Eu migrei o LV da unidade antiga para a nova PV usando os seguintes comandos:

pvcreate /dev/md0p2
vgextend centos /dev/md0p2
pvmove /dev/sdg3
vgreduce centos /dev/sdg3

Então eu regenerei o initramfs com dracut (depois de fazer o backup do original), e finalmente recuperei o grub.cfg. Depois, montei as novas partições /boot e /boot/efi e copiei tudo de volta.

Problema

Depois de desconectar a unidade antiga e inicializar, o dracut não consegue encontrar as matrizes RAID e, é claro, a partição /boot e também a minha LVG. Parece que simplesmente não está chamando mdadm --assemble on /dev/md0 e /dev/md . Sou capaz de fazer exatamente isso a partir do prompt dracut , depois do qual lvm_scan encontra meu LVG, posso vincular /dev/centos/root a /dev/root e o sistema continua inicializando sem problemas depois de sair do prompt. Tudo parece estar exatamente onde deveria estar.

Houve uma atualização de kernel disponível, então eu tentei instalá-lo (assumindo que eu estraguei algo da primeira vez ao regenerar os arquivos initramfs e grub.cfg), mas sem dados. O sistema ainda falha da mesma maneira. Isso é verdade quando eu inicializo a partir da partição EFI manualmente (como deveria ser, pois os dois são idênticos).

Link para rdsosreport.txt em pastebin

O que estou perdendo aqui? Como faço para dracut montar meus arrays?

    
por Toasty 27.02.2016 / 05:03

1 resposta

3

A documentação do dracut implica que qualquer matriz de raid md deve ser montada automaticamente e que o parâmetro rd.md.uuid deve ser usado apenas se você quiser apenas determinadas matrizes montadas como parte do processo de inicialização.

Parece que, na realidade, as matrizes não são montadas automaticamente e, na verdade, são montadas apenas quando o parâmetro rd.md.uuid é definido (para cada matriz que precisa ser montada). Pode ser que desde que o parâmetro rd.lvm.lv já esteja definido, que de alguma forma interferiu com md , mas eu não tenho tempo para testar isso.

Em suma, adicionar parâmetros rd.md.uuid para ambas as matrizes à variável GRUB_CMDLINE_LINUX em /etc/default/grub e, em seguida, regenerar a configuração do grub corrigiu o problema para mim.

    
por 05.03.2016 / 10:19