Eu tenho minha partição / boot em uma matriz RAID 1 usando mdadm. Essa matriz degradou-se algumas vezes no passado e, toda vez que removo a unidade física, adiciono uma nova, trago a matriz ao normal, ela usa uma nova letra de unidade. Deixando o antigo ainda na matriz e falhou. Não consigo remover todos os componentes que não existem mais.
[root@xxx ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdg1[10] sde1[8](F) sdb1[7](F) sdd1[6](F) sda1[4] sdc1[5]
358336 blocks super 1.0 [4/3] [UUU_]
Aqui está o que eu tentei remover as unidades e partições inexistentes. Por exemplo /dev/sdb1
,.
[root@xxx ~]# mdadm /dev/md0 -r /dev/sdb1
mdadm: Cannot find /dev/sdb1: No such file or directory
[root@xxx ~]# mdadm /dev/md0 -r faulty
mdadm: Cannot find 8:49: No such file or directory
[root@xxx ~]# mdadm /dev/md0 -r detached
mdadm: Cannot find 8:49: No such file or directory
Que 8:49
eu acredito que se refere ao número maior e menor mostrado na --detail
, mas eu não tenho certeza para onde ir a partir daqui. Estou tentando evitar uma reinicialização ou reiniciar o mdadm.
[root@xxx ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.0
Creation Time : Thu Aug 8 18:07:35 2013
Raid Level : raid1
Array Size : 358336 (350.00 MiB 366.94 MB)
Used Dev Size : 358336 (350.00 MiB 366.94 MB)
Raid Devices : 4
Total Devices : 6
Persistence : Superblock is persistent
Update Time : Sat Apr 18 16:44:20 2015
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 3
Spare Devices : 0
Name : xxx.xxxxx.xxx:0 (local to host xxx.xxxxx.xxx)
UUID : 991eecd2:5662b800:34ba96a4:2039d40a
Events : 694
Number Major Minor RaidDevice State
4 8 1 0 active sync /dev/sda1
10 8 97 1 active sync /dev/sdg1
5 8 33 2 active sync /dev/sdc1
6 0 0 6 removed
6 8 49 - faulty
7 8 17 - faulty
8 8 65 - faulty
Nota: A matriz está legitimamente degradada agora e estou recebendo uma nova unidade lá enquanto falamos. No entanto, como você pode ver acima, isso não deve importar. Ainda devo poder remover /dev/sdb1
desta matriz.
Respostas:
Isso ocorre porque os nós do dispositivo não existem mais no seu sistema (provavelmente o udev os removeu quando a unidade morreu). Você poderá removê-los usando a palavra-chave
failed
oudetached
:Se a sua versão do mdadm for muito antiga para fazer isso, você poderá fazê-lo funcionar, fazendo com que
mknod
o dispositivo exista novamente. Ou, honestamente, simplesmente ignore - não é realmente um problema e deve desaparecer na próxima vez que você reiniciar.fonte
mknod
. Sim, provavelmente não é um problema, mas eu sou TOC, lol.O que acabei fazendo foi usar o
mknod
@derobert sugerido para criar os dispositivos quemdadm
estava procurando. Tentei os números maiores / menores que o mdadm estava me dizendo que não conseguia encontrar com as diferentes letras de unidade que eu estava tentando remover até que funcionasse.Então tive que usar a
--force
opção para remover o componente.Em seguida, removi o dispositivo de bloco criado.
fonte
mdadm
continuou dizendo: "dispositivo ou recurso ocupado", mas isso me fez tentar alimentá-lo não com um dispositivo de bloco falso, mas com um dispositivo de bloco "verdadeiro", como uma imagem montada em loopback. Nesse ponto, descobri que tinha um histórico/dev/loop
que ainda estava usando um arquivo na matriz degradada. Eu o desconectei e finalmentemdadm
me deixei parar a matriz. Horay! Para todos que estão lendo isso, sempre há uma explicação lógica paramdadm
ser tão idiota; portanto, procure um processo antigo / arquivo / ponto de montagem / manipulador nfs / dispositivo de bash / loopback aberto / etc. ainda usando a matriz degradada. :)Você também pode corrigir apenas desengordurando o número de discos na matriz:
No meu caso, tenho uma matriz RAID-1
/dev/md0
com/dev/sda1
e "removida". Eu simplesmente a reduzi para usar apenas uma unidade:Depois que o removeu foi realmente removido (não há mais linhas removidas
mdadm --detail
)fonte