Raid 5 é quebrado após substituir um disco

Raid 5 é quebrado após substituir um disco

Meu servidor me enviou um e-mail informando que um dos meus discos não conseguiu ler um bloco. Então decido substituí-lo antes que falhe completamente. Adicionei um novo disco e substituí o que falhou.

sudo mdadm --manage /dev/md0 --add /dev/sdg1
sudo mdadm --manage /dev/md0 --replace /dev/sdb1 --with /dev/dbg1

após a sincronização, eu queria remover o /dev/sdb1 com falha e removê-lo do array com:

sudo mdadm --manage /dev/md0 --remove /dev/sdb1

mas quando quero remover o disco da caixa, primeiro removo outros 2, mas coloco-os de volta imediatamente. Depois disso eu provo se meu ataque ainda está funcionando e não funcionou. Tentei reiniciar, na esperança de que ele se curasse. No passado, isso nunca foi um problema, mas também nunca substituí um disco.

Depois que isso não funcionou, dei uma olhada no que fazer e tentei adicionar novamente o disco, mas isso não adiantou e a montagem também não funcionou:

sudo mdadm --assamble --scan

detecta apenas 2 discos, então tentei dizer o nome dos discos

sudo mdadm -v -A /dev/md0 /dev/sda1 /dev/sdf1 /dev/sdc1 /dev/sdd1

mas diga-me que todos os discos estão ocupados:

sudo mdadm -v -A /dev/md0 /dev/sda1 /dev/sdf1 /dev/sdc1 /dev/sdd1 
mdadm: looking for devices for /dev/md0
mdadm: /dev/sda1 is busy - skipping
mdadm: /dev/sdf1 is busy - skipping
mdadm: /dev/sdc1 is busy - skipping
mdadm: /dev/sdd1 is busy - skipping

sdg1 obtém sdf1 após reiniciar.

mdstat parece detectar os discos corretos (inseri sdb1 novamente na esperança de que ajude e tentei com e sem):

cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : inactive sdd1[3](S) sdb1[1](S) sdc1[2](S) sda1[0](S) sdf1[4](S)
      14650670080 blocks super 1.2
       
unused devices: <none>

Se eu consultar apenas os discos /dev/sda1e /dev/sdf1mostrar o mesmo estado da matrizAA..

sudo mdadm --query --examine /dev/sda1 
/dev/sda1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : 7c3e9d4e:6bad2afa:85cd55b4:43e43f56
           Name : lianli:0  (local to host lianli)
  Creation Time : Sat Oct 29 18:52:27 2016
     Raid Level : raid5
   Raid Devices : 4

 Avail Dev Size : 5860268032 (2794.39 GiB 3000.46 GB)
     Array Size : 8790402048 (8383.18 GiB 9001.37 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
   Unused Space : before=262056 sectors, after=0 sectors
          State : clean
    Device UUID : 3e912563:b10b74d0:a49faf2d:e14db558

Internal Bitmap : 8 sectors from superblock
    Update Time : Sat Jan  9 10:06:33 2021
  Bad Block Log : 512 entries available at offset 72 sectors
       Checksum : c7d96490 - correct
         Events : 303045

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 0
   Array State : AA.. ('A' == active, '.' == missing, 'R' == replacing)
sudo mdadm --query --examine /dev/sdd1 
/dev/sdd1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : 7c3e9d4e:6bad2afa:85cd55b4:43e43f56
           Name : lianli:0  (local to host lianli)
  Creation Time : Sat Oct 29 18:52:27 2016
     Raid Level : raid5
   Raid Devices : 4

 Avail Dev Size : 5860268032 (2794.39 GiB 3000.46 GB)
     Array Size : 8790402048 (8383.18 GiB 9001.37 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
   Unused Space : before=262056 sectors, after=0 sectors
          State : clean
    Device UUID : bf303286:5889dc0c:a6a1824a:4fe1ae03

Internal Bitmap : 8 sectors from superblock
    Update Time : Sat Jan  9 10:05:58 2021
  Bad Block Log : 512 entries available at offset 72 sectors
       Checksum : ef1f16fd - correct
         Events : 303036

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 3
   Array State : AA.A ('A' == active, '.' == missing, 'R' == replacing)
sudo mdadm --query --examine /dev/sdc1 
/dev/sdc1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : 7c3e9d4e:6bad2afa:85cd55b4:43e43f56
           Name : lianli:0  (local to host lianli)
  Creation Time : Sat Oct 29 18:52:27 2016
     Raid Level : raid5
   Raid Devices : 4

 Avail Dev Size : 5860268032 (2794.39 GiB 3000.46 GB)
     Array Size : 8790402048 (8383.18 GiB 9001.37 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
   Unused Space : before=262056 sectors, after=0 sectors
          State : clean
    Device UUID : b29aba8f:f92c2b65:d155a3a8:40f41859

Internal Bitmap : 8 sectors from superblock
    Update Time : Sat Jan  9 10:04:33 2021
  Bad Block Log : 512 entries available at offset 72 sectors
       Checksum : 47feb45 - correct
         Events : 303013

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 2
   Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)

Vou continuar tentando, mas atualmente estou sem ideias, também é a primeira vez que troco um disco no ataque. Espero que alguém possa me ajudar.

Pelo menos eu também tenho um backup, mas não quero resetar os discos rígidos para perceber que o backup também não funciona....

Atualizar: Depois de adicionar todos os discos para montar, obtive:

sudo mdadm -v -A /dev/md0 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sdf1
mdadm: looking for devices for /dev/md0
mdadm: /dev/sda1 is identified as a member of /dev/md0, slot 0.
mdadm: /dev/sdb1 is identified as a member of /dev/md0, slot 1.
mdadm: /dev/sdc1 is identified as a member of /dev/md0, slot 2.
mdadm: /dev/sdd1 is identified as a member of /dev/md0, slot 3.
mdadm: /dev/sdf1 is identified as a member of /dev/md0, slot 1.
mdadm: added /dev/sdf1 to /dev/md0 as 1
mdadm: added /dev/sdc1 to /dev/md0 as 2 (possibly out of date)
mdadm: added /dev/sdd1 to /dev/md0 as 3 (possibly out of date)
mdadm: added /dev/sda1 to /dev/md0 as 0
mdadm: /dev/md0 assembled from 2 drives - not enough to start the array.

Responder1

Encontrei uma solução:

Após mais pesquisas e a informação de 'possível desatualização' entrei no modo detalhado ( sudo mdadm -v -A /dev/md0 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sdf1), encontrei esta página:https://raid.wiki.kernel.org/index.php/RAID_Recovery

Na seção 'Tentando montar usando --force', eles descrevem como usar força se a contagem de eventos diferente for menor que 50. O meu era muito menor, então tentei, o array raid se conecta novamente e detecta um dos discos ainda como fora de data, mas espero que seja capaz de sincronizá-lo com as informações dos outros. Pode ser que eu tenha perdido alguns dados, mas aprendi que, se removesse o disco errado do array, esperaria até que o array estivesse em sincronia...

O comando que usei para fazer meu ataque funcionar novamente:

sudo mdadm --stop /dev/md0
sudo mdadm -v -A --force /dev/md0 /dev/sda1 /dev/sdc1 /dev/sdd1 /dev/sdf1

Atualizar: Provavelmente uma unidade não foi adicionada, então a força adicionou apenas um driver para colocar a matriz de volta em um estado funcional. O dispositivo com o maior evento diferente teve que ser adicionado posteriormente com --re-add:

sudo mdadm --manage /dev/md0 --re-add /dev/sdc1

Agora meu array está sincronizado novamente e posso tentar remover o disco rígido com defeito novamente.

informação relacionada