Não é possível remontar sistemas de arquivos locais para leitura-gravação (RAID1)

1

Eu montei uma nova máquina na placa-mãe Asus P9X79, usando seu controlador RAID para criar uma matriz RAID1 de duas unidades de 500Gb.

Ao inicializar o Arch de uma unidade externa, consigo trabalhar bem com /dev/md126 , que corresponde à matriz. Desta forma eu criei as partições e sistemas de arquivos nele, então executei o chroot e instalei o Arch Linux na unidade.

No entanto, não consigo inicializar a partir do RAID com êxito: / , /boot e /home não podem ser remontados no modo de leitura / gravação ( mount retornos 32 ) e acabo em emergência console. Tentando remontar de lá também falha, dizendo que a unidade está protegida contra gravação.

Eu percebi que alguns módulos do kernel necessários não foram carregados na inicialização e tocados com mkinitcpio.conf . Eu tenho mdadm_udev como um gancho (após udev , antes de filesystems ). No meu entender, isso deve ser o suficiente, mas também tentei adicionar raid1 , raid456 , ext2 e ext4 à matriz MODULES , isso não alterou nada.

O próprio RAID1 é reconhecido no ambiente inicial graças ao gancho mdadm_udev (os dispositivos estão lá). raid1 é, penso eu, também carregado por esse gancho automaticamente.

Ainda sou capaz de inicializar a partir da unidade externa e montar o dispositivo RAID1 muito bem; então eu fiz lsmod sobre ele e comparei com lsmod no sistema "nativo". Nada parece suspeito para mim:

$ diff <(sort lsmod.old | cut -f1 -d ' ') <(sort lsmod.new | cut -f1 -d ' ')
7a8,12
> async_memcpy
> async_pq
> async_raid6_recov
> async_tx
> async_xor
13a19,20
> drm
> drm_kms_helper
24a32
> i2c_algo_bit
43c51
< nvidia
---
> nouveau
48a57,58
> raid456
> raid6_pq
64a75,76
> ttm
> uas
71a84
> xor

old é o que funciona. Como você pode ver, a única linha que começa com < é < nvidia . Então todos os módulos necessários são carregados (alguns dos módulos adicionais em new são dependências de raid456 que eu tentei carregar).

O que estou perdendo aqui? Quais podem ser as possíveis diferenças entre dois sistemas? As versões do kernel são as mesmas: 3.6.8. (BTW o meio de instalação que eu tentei usar tinha 3.6.6 e não funcionava com este array; todas as operações acabaram penduradas indefinidamente).

    
por Lev Levitsky 03.12.2012 / 13:06

2 respostas

3

(Lev encontrou a solução , estou exegese para explicar por que funciona.)

using its RAID controller to create a RAID1 array

Isso é um mau sinal: você está usando fakeraid - uma implementação RAID que é implementada principalmente pelo driver do Windows com uma pequena ajuda do firmware. Você obtém todas as desvantagens do RAID de hardware (dependência do firmware) com todas as desvantagens do RAID de software (sem vantagem de desempenho).

Os metadados RAID são controlados pelo firmware. (Metadados são os dados extras que precisam ser armazenados em algum lugar e que não fazem parte do sistema de arquivos ou partição armazenados no dispositivo RAID: coisas como onde cada bloco de dados deve ser classificado, dados extras para lidar com ressincronização e assim por diante). implementação (pelo menos para este driver), isso não é tratado apenas pelo kernel, o mdmon utility é também é necessário.

Quando o seu sistema inicializa, a princípio, há apenas o kernel e uma unidade RAM inicial (um initramfs ). Esta unidade RAM inicial deve conter todos os módulos carregáveis e programas necessários para montar o sistema de arquivos raiz. Como isso deve caber na RAM, a maioria das distribuições gera o initramfs sob demanda, com base nos drivers necessários em seu sistema. Isso geralmente é feito em cada atualização do kernel.

Parece que os scripts de geração initramfs do Arch Linux não detectaram que você precisava do programa mdmon no momento da inicialização e, portanto, gerou um initramfs não funcional. Forçar mdmon a estar presente no initramfs fez o initramf funcionar.

    
por 03.12.2012 / 23:12
2

Eu consegui trabalhar usando o conselho de aqui . Ou seja, adicionei /sbin/mdmon à matriz BINARIES em mkinitcpio.conf .

Isso parece um pouco com magia negra para mim, então uma resposta detalhada com explicações é bem-vinda.

    
por 03.12.2012 / 14:04