Por que o RAID-1 do mdadm está ressincronizando a partir do zero, apesar do bitmap?

5
# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 nbd0[3] sda10[0]
      53246315 blocks super 1.2 [3/1] [U__]
      [>....................]  recovery =  1.0% (537088/53246315) finish=203.0min speed=4326K/sec
      bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices: <none>

# nbd-client -d /dev/nbd0
Disconnecting: que, disconnect, sock, done

# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 nbd0[3](F) sda10[0]
      53246315 blocks super 1.2 [3/1] [U__]
      bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices: <none>

# mdadm /dev/md/raidy --remove /dev/nbd0
mdadm: hot removed /dev/nbd0 from /dev/md/raidy

# nbd-client 10.99.99.250 7777 /dev/nbd0
Negotiation: ..size = 53247411KB
bs=1024, sz=53247411

# mdadm --incremental --run /dev/nbd0
mdadm: /dev/nbd0 attached to /dev/md/raidy which is already active.

# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 nbd0[3] sda10[0]
      53246315 blocks super 1.2 [3/1] [U__]
      [>....................]  recovery =  0.0% (31616/53246315) finish=196.2min speed=4516K/sec
      bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices: <none>

# uname -a
Linux vi-notebook 2.6.35-zen2-08220-g2c56b9e #14 ZEN PREEMPT Thu Oct 21 02:48:18 EEST 2010 i686 GNU/Linux

# mdadm --version
mdadm - v3.1.4 - 31

Como desconectar e reconectar corretamente o dispositivo ao RAID-1 para aproveitar o bitmap com intenção de gravação?

Experimentando novamente:

Personalities : [raid1] 
md0 : active raid1 nbd0[3] sda10[0]
      53246315 blocks super 1.2 [3/2] [UU_]
      bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices: <none>

    /dev/md/raidy:
        Version : 1.2
  Creation Time : Tue Mar 30 05:42:53 2010
     Raid Level : raid1
     Array Size : 53246315 (50.78 GiB 54.52 GB)
  Used Dev Size : 53246315 (50.78 GiB 54.52 GB)
   Raid Devices : 3
  Total Devices : 2
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Mon Jan 31 18:18:03 2011
          State : active, degraded
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : vi-notebook:0  (local to host vi-notebook)
           UUID : bc325b24:fa0a4957:47820c56:fc818fa3
         Events : 2661551

    Number   Major   Minor   RaidDevice State
       0       8       10        0      active sync   /dev/sda10
       3      43        0        1      active sync   /dev/nbd0
       2       0        0        2      removed

Agora removendo um dos dispositivos:

# mdadm /dev/md/raidy --fail /dev/nbd0 
mdadm: set /dev/nbd0 faulty in /dev/md/raidy
# mdadm /dev/md/raidy --remove /dev/nbd0 
mdadm: hot removed /dev/nbd0 from /dev/md/raidy

Agora, adicione-o novamente:

mdadm --incremental --run /dev/nbd0

Começa a ressincronizar desde o início:

Personalities : [raid1] 
md0 : active raid1 nbd0[3] sda10[0]
      53246315 blocks super 1.2 [3/1] [U__]
      [>....................]  recovery =  0.4% (244480/53246315) finish=289.5min speed=3050K/sec
      bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices: <none>


/dev/md/raidy:
        Version : 1.2
  Creation Time : Tue Mar 30 05:42:53 2010
     Raid Level : raid1
     Array Size : 53246315 (50.78 GiB 54.52 GB)
  Used Dev Size : 53246315 (50.78 GiB 54.52 GB)
   Raid Devices : 3
  Total Devices : 2
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Mon Jan 31 18:22:07 2011
          State : active, degraded, recovering
 Active Devices : 1
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 1

 Rebuild Status : 0% complete

           Name : vi-notebook:0  (local to host vi-notebook)
           UUID : bc325b24:fa0a4957:47820c56:fc818fa3
         Events : 2661666

    Number   Major   Minor   RaidDevice State
       0       8       10        0      active sync   /dev/sda10
       3      43        0        1      spare rebuilding   /dev/nbd0
       2       0        0        2      removed
    
por Vi. 20.11.2010 / 15:54

3 respostas

2

Hrm. Olhando para os resultados acima, não está claro se você tinha vários discos sincronizados em primeiro lugar. Parece que houve um disco com falha que estava sincronizando, que foi removido, depois foi adicionado novamente e, em seguida, estava sendo ressincronizado novamente. Em nenhum momento eu vejo uma tela que mostre 2 discos totalmente sincronizados.

Assegurei-me de que ambos os discos estão ativos, que eles sejam totalmente sincronizados juntos, e somente após verificar se eu tentaria remover um disco e adicioná-lo novamente.

Observe que o bitmap de intenção de gravação é apenas uma ajuda para ressincronizar rapidamente dois discos que já estão quase em sincronia (ou seja, após uma falha do sistema ou quando um disco é removido por um curto período de tempo). Não se destina a remoção a longo prazo ou a discos que ainda não estão totalmente sincronizados.

    
por 28.01.2011 / 19:31
2

Você deve usar "--re-add" para adicionar o disco removido, assim:

# mdadm /dev/md0 --re-add /dev/sdf2

Eu apenas tentei, e funcionou, sem uma reconstrução - se o disco foi removido anteriormente usando "--remove", como você fez.

Note que isto é importante - o disco tem que ter sido removido usando "--remove". Se você acabou de puxar um disco com força, conecte-o novamente e tente "--re-add", você irá obter

mdadm: --re-add for /dev/sdf2 to /dev/md0 is not possible

Por que isso? Analisando o link , seção "--re-add":

If [...] the slot that it used is still vacant, then the device will be added back to the array in the same position.

Se você acabou de puxar o disco para fora, o slot ainda será ocupado pelo disco com falha (marcado com F em / proc / mdstat):

$ cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 loop0[0] loop3[2](F)
      1047552 blocks super 1.2 [2/1] [U_]
      bitmap: 1/1 pages [4KB], 65536KB chunk

Remova o disco com falha e o "--re-add" funcionará, aproveitando o bitmap.

    
por 26.02.2014 / 20:42
0

Não tenho certeza se isso ajuda - mas acho que seu problema parece ser o dispositivo nbd.

Se você quiser RAID1 em uma rede IP - por que não usa drbd ?

    
por 05.05.2011 / 21:35

Tags