Não zere o super bloco. Edite como mdadm sugeriu /etc/mdadm.conf
ou /etc/mdadm/mdadm.conf
e altere DEVICE ....
para:
DEVICE /dev/sda1
DEVICE /dev/sdb1
DEVICE /dev/sdc1
DEVICE /dev/sdd1
DEVICE /dev/sde1
Eu tenho um array RAID 5 criado a partir de partições em 5 drives - / dev/sda1
, /dev/sdb1
, /dev/sdc1
, /dev/sdd1
e /dev/sde1
. Quando eu monto o array manualmente, funciona bem.
Infelizmente, parece que também existem superblocos em /dev/sdb
e /dev/sdc
(provavelmente algo que eu estraguei cedo) e, quando o array é montado automaticamente na inicialização, ele é compilado com /dev/sdb
em vez de /dev/sdb1
( o mesmo com /dev/sdc
) e falha ao montar (com um erro fs inválido).
$ sudo mdadm --assemble --scan --force (presumably what happens on startup)
mdadm: WARNING /dev/sdb1 and /dev/sdb appear to have very similar superblocks.
If they are really different, please --zero the superblock on one
If they are the same or overlap, please remove one from the
DEVICE list in mdadm.conf.
$ sudo mdadm --detail /dev/md7
/dev/md7:
Version : 00.90
Creation Time : Wed Apr 6 18:17:07 2011
Raid Level : raid5
Array Size : 7814047744 (7452.06 GiB 8001.58 GB)
Used Dev Size : 1953511936 (1863.01 GiB 2000.40 GB)
Raid Devices : 5
Total Devices : 5
Preferred Minor : 7
Persistence : Superblock is persistent
Update Time : Sat Apr 30 13:55:50 2011
State : clean
Active Devices : 5
Working Devices : 5
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
UUID : 224009a1:e4173bf3:2490f10a:1455ce9c (local to host ravenscar)
Events : 0.2
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 16 1 active sync /dev/sdb
2 8 32 2 active sync /dev/sdc
3 8 48 3 active sync /dev/sdd1
4 8 65 4 active sync /dev/sde1
$ sudo mdadm --examine /dev/sdb
/dev/sdb:
Magic : a92b4efc
Version : 00.90.00
UUID : 224009a1:e4173bf3:2490f10a:1455ce9c (local to host ravenscar)
Creation Time : Wed Apr 6 18:17:07 2011
Raid Level : raid5
Used Dev Size : 1953511936 (1863.01 GiB 2000.40 GB)
Array Size : 7814047744 (7452.06 GiB 8001.58 GB)
Raid Devices : 5
Total Devices : 5
Preferred Minor : 7
Update Time : Wed Apr 27 21:15:03 2011
State : clean
Active Devices : 5
Working Devices : 5
Failed Devices : 0
Spare Devices : 0
Checksum : f83035d3 - correct
Events : 2
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 1 8 17 1 active sync /dev/sdb1
0 0 8 1 0 active sync /dev/sda1
1 1 8 17 1 active sync /dev/sdb
2 2 8 33 2 active sync /dev/sdc
3 3 8 49 3 active sync /dev/sdd1
4 4 8 65 4 active sync /dev/sde1
Então eu faço:
$ sudo mdadm --stop /dev/md7
$ sudo mdadm --assemble /dev/md7 /dev/sd[abcde]1
E então funciona.
Minha pergunta: É seguro usar a opção --zero-superblock
para remover esses superblocos incorretos? que outras medidas devo tomar? Eu fiz a escolha certa construindo a matriz com partições em vez de unidades ( /dev/sda1
em vez de /dev/sda
e assim por diante).
O que parece acontecer é que o MD vê o mesmo superbloco de dois dispositivos (o sdb1 é um subconjunto do sdb). Matar o superbloco mataria o superbloco real, então não faça isso.
Superblocos MD v0.90 são armazenados no final do dispositivo em um bloco alinhado com 64k. No seu caso, sdb1 é a única partição e o superbloco pode ser encontrado no final de sdb e sdb1. De alguma forma (isso parece ser um problema antigo, veja o link no final). O MD ficou confuso e começou a pensar que você tem duas cópias do superbloco em dois dispositivos separados.
A correção é fácil se você tiver algum espaço extra nessa partição - você pode simplesmente limpar o superbblock e reparticionar o disco finalizando a partição 64k antes do final do disco; O MD não verá um suberblock no sdb e montará o array adequadamente usando o sdb1. Se você não pode tirar 64k do sdb, você terá que reconstruir o array. Se este não for o seu disco de inicialização, você também pode usar uma nova versão de superbloco. v.1.1 e v.1.2 armazenam o superbloco em algum lugar no início da matriz, o que resolverá esse problema específico.
Acabei de experimentar exatamente o mesmo problema em um ataque1. Usando "fdisk -u" (use setores como unidades) a partição estava terminando no setor 143374743. Subtraí 128 desse número (128 setores de 512 bytes = 64k) e usei o número resultante como o final da partição. Eu poderia então verificar que o MD não veria o superbloco em sda com:
# mdadm --misc -E /dev/sda
Parece que a mudança comportamental recente de usar setores e eliminar a compatibilidade do DOS em ferramentas de particionamento levou a que a última partição sempre terminasse no final do disco (em vez de em um limite de cilindro). Alguns outros parâmetros podem entrar em jogo como - por exemplo - eu tenho um sistema em execução que mostra os superblocos duplicados quando os discos são consultados diretamente, e ainda monta sua matriz corretamente.
Para mais informações sobre os formatos de superblocos MD, consulte:
A FAQ do Debian (ponto 11.) menciona este problema:
Se você não tiver nenhum dado no array, basta limpá-lo e começar de novo. Se você tiver dados, eu faria o backup antes de brincar com os superblocos.
Pessoalmente, eu obteria os dados dele e dd
de alguns setores de /dev/zero
no início de cada disco, depois reparticionaria e recriaria a matriz. Eu me sentiria mais confortável sabendo que tudo estava configurado corretamente para começar.
Como um aparte: Essa é uma matriz bem grande para se fazer o RAID-5, na minha opinião. Fique de olho no tempo de reconstrução. No caso de uma falha de disco único, você terá uma perda de dados catastrófica se tiver outro erro durante a leitura durante a reconstrução. Você pode querer considerar o RAID-6.
Por azar, eu apaguei o RAID-Superblock quando li a seguinte massagem:
mdadm: WARNING /dev/sdb1 and /dev/sdb appear to have very similar superblocks.
If they are really different, please --zero the superblock on one
If they are the same or overlap, please remove one from the
DEVICE list in mdadm.conf.
Depois, meu RAID1 não pôde mais iniciar.
Felizmente, criar um novo RAID1 com parâmetros idênticos ao original, não excluiu o anterior: link via link
Como, em parte, o polegar / enganoso / inútil acima mensagem mdadm é, como é inteligente mdadm com recreação.
Tags raid mdadm software-raid