Raid1 com partição ativa e sobressalente

8

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

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

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 digo ao meu ataque para transformar o disco sobressalente em ativo? E por que foi adicionado como um dispositivo sobressalente? Recriar ou remontar a matriz não é uma opção, porque é minha partição raiz. E não consigo encontrar nenhuma dica para esse assunto no HOWTO do Software Raid.

Qualquer ajuda seria apreciada.

Solução Atual

Encontrei uma solução para o meu problema, mas não tenho certeza de que essa seja a maneira real de fazer isso. Observando mais de perto minha invasão, descobri que o sdb5 sempre estava 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

portanto, a leitura do dispositivo sdb5 no array md3 sempre acabava adicionando o dispositivo como sobressalente.

Finalmente, eu apenas recriei a matriz

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

que funcionou.

Mas a pergunta permanece em aberto para mim: existe uma maneira melhor de manipular os resumos no superbloco e dizer à matriz para transformar o sdb5 de um disco sobressalente em um disco ativo? Ainda estou curioso por uma resposta.

Daniel Baron
fonte
O que mostra "cat / proc / mdstat"? Não é apenas a reconstrução e o "sobressalente" desaparece quando a reconstrução é concluída? O que mostra "mdadm --version"? Havia um bug antigo ... consulte mail-archive.com/[email protected]/msg09818.html .
rems
Não, esse é o problema. O primeiro trecho da pergunta mostra a saída de / proc / mdstat para a matriz. O dispositivo já foi sincronizado, mas como você pode ver após o processo de sincronização bem-sucedido, o dispositivo permanece como sobressalente e não é transformado em ativo.
Daniel Baron
mdadm - v2.6.7.1
Daniel Baron

Respostas:

1

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

cat / proc / mdstat

que deve informar se existe um processo de compilação e quanto tempo esperar.

Se nenhum edifício estiver ocorrendo, tente o seguinte

mdadm / dev / md3 - remova / dev / sdb5

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

E relate como isso funciona para você. Veja http://linux.die.net/man/8/mdadm para mais detalhes.

Rolnik
fonte
Obrigado pela sua ajuda, Rolnik. Como você pode ver no meu primeiro trecho / proc / mdstat mostra os dois dispositivos na matriz. O dispositivo já foi sincronizado antes (não mostrado aqui) sem problemas. Porém, após concluir o processo de ressincronização, os dispositivos não foram transformados em um dispositivo ativo. Remover e adicionar novamente não alterou esse comportamento.
Daniel Baron
1

Tarde demais, mas fazer isso apenas ativaria a unidade sobressalente:

mdadm --grow /dev/md3 -n 2

Como diz a página de manual:

Para criar, construir ou aumentar: -n, --raid-devices = Especifique o número de dispositivos ativos na matriz. Além disso, o número de dispositivos sobressalentes (veja abaixo) deve ser igual ao número de dispositivos componentes (incluindo dispositivos "ausentes") listados na linha de comando para --create. Definir um valor 1 provavelmente é um erro e, portanto, exige que --force seja especificado primeiro. Um valor de 1 será permitido para linear, multipath, RAID0 e RAID1. Nunca é permitido para RAID4, RAID5 ou RAID6. Esse número só pode ser alterado usando --grow para matrizes RAID1, RAID4, RAID5 e RAID6 e apenas em kernels que fornecem o suporte necessário.

Pablo Montepagano
fonte
0

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

Algo assim (verifique com a sua documentação!):

mdadm --grow --level = defeituoso --layout = flush / dev / sdb5

Em seguida, 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. Portanto, mesmo após uma reinicialização, ele conhece o status e evita partições marcadas como defeituosas.

Alexis Wilke
fonte