Raid1 com partição ativa e sobressalente

8

Estou tendo o seguinte problema com uma partição raid de software RAID1 no meu sistema Ubuntu (10.04 LTS, 2.6.32-24-server, caso isso seja importante).

Um dos meus discos (sdb5) relatou erros de E / S e, portanto, foi marcado como defeituoso na matriz. O array foi então degradado com um dispositivo ativo. Por isso, substituí o disco rígido, copiei a tabela de partições e adicionei todas as novas partições aos meus arrays de raid. Após a sincronização, todas as partições acabaram bem, tendo dois dispositivos ativos - exceto um deles. A partição que relatou o disco com defeito antes, no entanto, não incluiu a nova partição como um dispositivo ativo, mas como um disco reserva:

md3 : active raid1 sdb5[2] sda5[1]
  4881344 blocks [2/1] [_U]

Um olhar detalhado revela:

root@server:~# mdadm --detail /dev/md3
[...]
Number   Major   Minor   RaidDevice State
   2       8       21        0      spare rebuilding   /dev/sdb5
   1       8        5        1      active sync   /dev/sda5

Então, aqui está a pergunta: Como eu digo ao meu ataque para transformar o disco reserva em um ativo? E por que foi adicionado como um dispositivo de reserva? Recriar ou remontar a matriz não é uma opção, porque é minha partição raiz. E eu não consigo encontrar nenhuma sugestão para esse assunto no HOWTO do Raid de Software.

Qualquer ajuda seria apreciada.

Solução atual

Encontrei uma solução para o meu problema, mas não tenho certeza se essa é a maneira real de fazê-lo. Olhando mais de perto para o meu ataque, descobri que sdb5 sempre foi listado como um dispositivo sobressalente:

mdadm --examine /dev/sdb5
[...]
Number   Major   Minor   RaidDevice State
this     2       8       21        2      spare   /dev/sdb5

   0     0       0        0        0      removed
   1     1       8        5        1      active sync   /dev/sda5
   2     2       8       21        2      spare   /dev/sdb5

então, a leitura do dispositivo sdb5 para o array md3 sempre acabou em adicionar o dispositivo como sobressalente.

Por fim, acabei de recriar o array

mdadm --create /dev/md3 --level=1 -n2 -x0 /dev/sda5 /dev/sdb5

que funcionou.

Mas a questão permanece em aberto para mim: existe uma maneira melhor de manipular os resumos no superbloco e dizer ao array para transformar o sdb5 de um disco reserva para um disco ativo? Ainda estou curioso para uma resposta.

    
por Daniel Baron 14.02.2011 / 15:47

3 respostas

1

Daniel:   Inicialmente, verifique novamente se o sobressalente está sendo integrado ao array fazendo um:

cat /proc/mdstat

que deve informar se há um processo de criação em andamento e por quanto tempo esperar que isso aconteça.

Se nenhum prédio estiver ocorrendo, tente o seguinte

mdadm /dev/md3 --remove /dev/sdb5

mdadm /dev/md3 --add /dev/sdb5

E relatar como isso funciona para você. Consulte o link para obter mais detalhes.

    
por 14.02.2011 / 16:14
1

Muito tarde, mas isso só permitiria a unidade sobressalente:

mdadm --grow /dev/md3 -n 2

Como diz a manp:

For create, build, or grow: -n, --raid-devices= Specify the number of active devices in the array. This, plus the number of spare devices (see below) must equal the number of component- devices (including "missing" devices) that are listed on the command line for --create. Setting a value of 1 is probably a mistake and so requires that --force be specified first. A value of 1 will then be allowed for linear, multipath, RAID0 and RAID1. It is never allowed for RAID4, RAID5 or RAID6. This number can only be changed using --grow for RAID1, RAID4, RAID5 and RAID6 arrays, and only on kernels which provide the necessary sup‐ port.

    
por 03.03.2012 / 21:23
0

Pelo que me lembro, quando tive esse problema (por um motivo diferente) eu tive que usar --grow para adicionar novamente a unidade de reposição "corretamente" (também limpando a condição de erro).

Algo parecido com isto (verifique com sua documentação!):

mdadm --grow --level = com defeito --layout = flush / dev / sdb5

Então você pode adicionar o dispositivo e ele deve ser reconhecido.

O problema é que o driver md salva o status de cada partição nos dados de inicialização das unidades. Então, mesmo depois de uma reinicialização, ele conhece o status e evita que as partições sejam marcadas como defeituosas.

    
por 27.01.2012 / 00:03