Назад | Перейти на главную страницу

Почему RAID-1 mdadm повторно синхронизируется с нуля, несмотря на растровое изображение?

# 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

Как правильно отключить и снова подключить устройство к RAID-1, чтобы воспользоваться растровым изображением намерения записи?

Снова экспериментируем:

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

Теперь снимаем одно из устройств:

# 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

Теперь повторно добавляем его:

mdadm --incremental --run /dev/nbd0

Он начинает ресинхронизацию с самого начала:

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

Вы должны использовать "--re-add", чтобы вернуть удаленный диск, например:

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

Я просто попробовал, и он работал, без перестройки - если диск был предварительно удален с помощью "--remove", как вы.

Обратите внимание, что это важно - диск должен быть удален с помощью «--remove». Если вы просто вытащите диск, подключите его снова и попытаетесь "--re-add", вы получите

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

Это почему? Смотря на http://linux.die.net/man/8/mdadm, раздел «--re-add»:

Если [...] слот, который он использовал, все еще свободен, то устройство будет добавлено обратно в массив в той же позиции.

Если вы только что вытащили диск, слот все равно будет занят неисправным диском (отмечен F в / 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

Удалите неисправный диск, и «--re-add» будет работать, используя растровое изображение.

Грм. Глядя на ваши результаты выше, неясно, изначально ли у вас было несколько синхронизированных дисков. Похоже, это был неисправный диск, который синхронизировался, который был удален, затем добавлен повторно, а затем снова синхронизировался. Я никогда не видел дисплея, на котором отображалось бы 2 полностью синхронизированных диска.

Я должен был убедиться, что оба диска активны, позволить им полностью синхронизироваться вместе, и только после проверки я попытаюсь удалить диск и снова добавить его.

Обратите внимание, что битовая карта намерения записи служит только вспомогательным средством для быстрой повторной синхронизации двух дисков, которые уже почти синхронизированы (т.е. после сбоя системы или когда диск извлекается на короткий период времени). Он не предназначен для длительного удаления или для дисков, которые еще не полностью синхронизированы.

Я не уверен, поможет ли это, но я думаю, что ваша проблема, похоже, связана с устройством nbd.

Если вы хотите использовать RAID1 в IP-сети - почему бы вам не использовать drbd?