Controlador SATA substituído, software RAID (mdadm) parou de inicializar: grub rescue no such disk

2

Eu tenho uma máquina servidor relativamente antiga que não tem portas SATA na placa-mãe (Dell Precision Workstaion 650). Também tem um controlador FakeRAID barato (Chipset VIA VT6421) e dois discos Seagate 3TB (ST3000DM001) conectados ao controlador. O controlador foi configurado para usar unidades no modo Stripe (não RAID): eu basicamente o usei como um controlador SATA, em vez de um controlador RAID. Eu era capaz de configurar um RAID de software (mdadm) neste sistema. Cada uma das duas unidades físicas é particionada da seguinte forma:

Number  Start (sector)    End (sector)  Size        Code  Name
1                2048            4095   1024.0 KiB  EF02  BIOS boot partition
2                4096         3186687   1.5 GiB     EF00  EFI System
3             3186688      5856337919   2.7 TiB     FD00  Linux RAID
4          5856337920      5860532223   2.0 GiB     8200  Linux swap

Então existem:

  1. 1 MiB de espaço livre não alocado no início de cada unidade como requerido pelo GRUB para unidades GPT no BIOS legado
  2. Partition # 1 (1MiB): partição de boot do BIOS para o GRUB
  3. Partição # 2 (1.5GiB) para / boot = > md0
  4. Partição # 3 (2.7TiB) para / = > md1
  5. Partição # 4 (2GiB) para swap = > md127

As partições # 2, # 3 e # 4 são montadas nos RAIDs de software md0, md1 e md127 (usando o raid1):

$ cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdb2[2] sda2[3]
    1590208 blocks super 1.2 [2/2] [UU]

md1 : active raid1 sdb3[2] sda3[3]
    2926444352 blocks super 1.2 [2/2] [UU]

md127 : active raid1 sdb4[1] sda4[0]
    2097088 blocks [2/2] [UU]

O Grub (verison 1.99) é instalado individualmente em cada uma das duas unidades físicas.

Esta configuração é capaz de inicializar e tem funcionado com mais ou menos sucesso (Ubuntu Server 12.04 i686) nos últimos dois anos, exceto por algumas falhas de HDD (acho que principalmente devido ao superaquecimento, já que o resfriamento não foi muito Boa). Duas vezes uma unidade com falha foi removida e uma nova unidade foi adicionada e sincronizada com êxito na matriz.

Agora estou substituindo o controlador HDD, o barato FakeRAID (old_controller) com Supermicro SAT2-MV8 SATA HBA PCI-X de 8 portas (new_controller) que é um controlador SATA puro, não FakeRAID, porque os conectores antigos do controlador são realmente frágeis e parece causar erros de interface às vezes.

O PROBLEMA agora é que não consigo inicializar o sistema sem o antigo_controlador. Em particular, se nenhuma das unidades estiver conectada ao old_controller, então ela sempre terminará no erro "no such disk" e na linha de comando de resgate do grub. Então, no modo de recuperação, o comando "ls" não lista (md / 0) enquanto as partições da unidade física são exibidas. Se, no entanto, uma das unidades estiver conectada ao old_controller, o sistema inicializará normalmente e, se nesse caso, o grub for interrompido, o comando "ls" mostrará (md / 0) junto com outras partições de unidade. Eu tentei várias configurações.

Configurações que inicializam (pelo menos, atingem o menu de seleção de imagens do GRUB linux):

  1. disk1 + disk2 no old_controller
  2. disk1 no old_controller + disk2 no new_controller
  3. disk2 no old_controller + disk1 no new_controller
  4. disk1 no old_controller
  5. disk2 no old_controller

O comando "ls" do GRUB nesses casos sempre lista (md / 0)

Configurações que FAIL para inicializar (erro "sem disco" e resgate grub > linha de comando):

  1. disk1 e disk2 no new_controller
  2. disk1 no new_controller
  3. disk2 em new_controller
  4. disk1 e disk2 no new_controller com o old_controller completamente removido da placa-mãe
  5. disk1 no new_controller com old_controller completamente removido da placa-mãe
  6. disk2 no new_controller com o old_controller completamente removido da placa-mãe

O comando "ls" do GRUB nesses casos NÃO lista (md / 0)

Por que o GRUB não pode montar o array md quando nenhuma das unidades está conectada ao old_controller? No geral, você poderia me ajudar a fazer o sistema funcionar sem o antigo_controlador?

Você poderia recomendar um bom lugar para ler em profundidade sobre como o software RAID é montado na inicialização. Especialmente com o GRUB? Como as unidades para o array md são identificadas pelo GRUB? Como um controlador SATA substituído pode afetar esse processo?

Obrigado!

    
por sd1074 09.12.2015 / 01:36

1 resposta

1

Eu responderei minha própria pergunta.

Resumindo: atualizando do GRUB1.99 para o GRUB 2.02 beta2 RESOLVIDO o problema .

De alguma forma, o módulo mdraid1x do GRUB1.99 do GRUB não pôde detectar corretamente o RAID quando as unidades foram conectadas ao novo controlador. Não tenho certeza qual é a diferença exata entre os controladores SATA. Uma coisa, no entanto, é que, embora nenhum deles pudesse detectar o tamanho correto de 3 TB das unidades, seus valores reportados eram diferentes: 800 MB em old_controller e 2 TB em new_controller. Talvez de alguma forma isso tenha afetado a capacidade do mdraid1x de detectar as partições RAID.

No entanto, este problema parece ter sido corrigido no GRUB 2.02 beta2.

    
por 15.12.2015 / 21:21