The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Не запускается программный RAID-5 под Linux после перестанов..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"Не запускается программный RAID-5 под Linux после перестанов..."  +/
Сообщение от Sergey_A.A. (ok) on 18-Мрт-06, 17:24 
Ситуация такая: на машине под управлением Gentoo Linux-2.6.15 используется программный RAID-5.
Всего 8 дисков 200/250 Гб.
Диски на 200 Гб имеют 1 раздел Linux Raid autodetect
Диски на 250 Гб имеют 2 раздела Linux Raid autodetect, один из которых 200 Гб, а другой 50 Гб.
Всего собирается 2 массива:
/dev/md0 (он состоит из 200 Гб разделов /dev/sd[a-h]1)
и
/dev/md1 (состоит из 50 Гб разделов /dev/sd[a-h]1 на 250 гиговых дисках - таких всего 6).

Один из дисков (200 Гб) при перезагрузке периодически не определялся и было принято решение "переткнуть" его в другое место.
В итоге получилась следующая ситуация: имена всех дисков начиная с sdd изменились (sde стал sdd, sdf стал sde и т.д. а диск, который был sdd стал sdh).
Сначала он был отключен и массив функционировал без одного диска, затем его подключили как sdh (массив по прежнему его не видел).
Было решено сделать addhotadd /dev/md0 /dev/sdh1
система начала подключение, но менее 20 секунд спустя намертво повисла!
После перезагрузки данный массив не собирается, хотя до перезагрузки работал (без одного диска).

Параметры создания

raiddev /dev/md0
        raid-level      5
        nr-raid-disks   8
        nr-spare-disks  0
        chunk-size      32
        persistent-superblock 1
        parity-algorithm        left-symmetric
        device          /dev/sda1
        raid-disk       0
        device          /dev/sdb1
        raid-disk       1
        device          /dev/sdc1
        raid-disk       2
        device          /dev/sdd1
        raid-disk       3
        device          /dev/sde1
        raid-disk       4
        device          /dev/sdf1
        raid-disk       5
        device          /dev/sdg1
        raid-disk       6
        device          /dev/sdh1
        raid-disk       7

raiddev /dev/md1
        raid-level      5
        nr-raid-disks   6
        nr-spare-disks  0
        chunk-size      32
        persistent-superblock 1
        parity-algorithm        left-symmetric
        device          /dev/sda2
        raid-disk       0
        device          /dev/sdb2
        raid-disk       1
        device          /dev/sdc2
        raid-disk       2
        device          /dev/sdf2
        raid-disk       3
        device          /dev/sdg2
        raid-disk       4
        device          /dev/sdh2
        raid-disk       5


Вот, что он выдает в messages

Mar 18 16:16:13 deep xinetd[6200]: Started working: 0 available services
Mar 18 16:16:13 deep raid5: automatically using best checksumming function: pIII_sse
Mar 18 16:16:13 deep pIII_sse  :  3068.000 MB/sec
Mar 18 16:16:13 deep raid5: using function: pIII_sse (3068.000 MB/sec)
Mar 18 16:16:13 deep md: md driver 0.90.3 MAX_MD_DEVS=256, MD_SB_DISKS=27
Mar 18 16:16:13 deep md: bitmap version 4.39
Mar 18 16:16:13 deep md: raid5 personality registered as nr 4
Mar 18 16:16:13 deep md: raidstart(pid 6284) used deprecated START_ARRAY ioctl. This will not be supported beyond July 2006
Mar 18 16:16:13 deep md: autorun ...
Mar 18 16:16:13 deep md: considering sdg1 ...
Mar 18 16:16:13 deep md:  adding sdg1 ...
Mar 18 16:16:13 deep md:  adding sdf1 ...
Mar 18 16:16:13 deep md:  adding sde1 ...
Mar 18 16:16:13 deep md:  adding sdd1 ...
Mar 18 16:16:13 deep md:  adding sdc1 ...
Mar 18 16:16:13 deep md:  adding sdb1 ...
Mar 18 16:16:13 deep md:  adding sda1 ...
Mar 18 16:16:13 deep md: created md0
Mar 18 16:16:13 deep md: bind<sda1>
Mar 18 16:16:13 deep md: bind<sdb1>
Mar 18 16:16:13 deep md: bind<sdc1>
Mar 18 16:16:13 deep md: bind<sdd1>
Mar 18 16:16:13 deep md: bind<sde1>
Mar 18 16:16:13 deep md: bind<sdf1>
Mar 18 16:16:13 deep md: bind<sdg1>
Mar 18 16:16:13 deep md: running: <sdg1><sdf1><sde1><sdd1><sdc1><sdb1><sda1>
Mar 18 16:16:13 deep md: md0: raid array is not clean -- starting background reconstruction
Mar 18 16:16:13 deep raid5: device sdg1 operational as raid disk 7
Mar 18 16:16:13 deep raid5: device sdf1 operational as raid disk 6
Mar 18 16:16:13 deep raid5: device sde1 operational as raid disk 5
Mar 18 16:16:13 deep raid5: device sdd1 operational as raid disk 4
Mar 18 16:16:13 deep raid5: device sdc1 operational as raid disk 2
Mar 18 16:16:13 deep raid5: device sdb1 operational as raid disk 1
Mar 18 16:16:13 deep raid5: device sda1 operational as raid disk 0
Mar 18 16:16:13 deep raid5: cannot start dirty degraded array for md0
Mar 18 16:16:13 deep RAID5 conf printout:
Mar 18 16:16:13 deep --- rd:8 wd:7 fd:1
Mar 18 16:16:13 deep disk 0, o:1, dev:sda1
Mar 18 16:16:13 deep disk 1, o:1, dev:sdb1
Mar 18 16:16:13 deep disk 2, o:1, dev:sdc1
Mar 18 16:16:13 deep disk 4, o:1, dev:sdd1
Mar 18 16:16:13 deep disk 5, o:1, dev:sde1
Mar 18 16:16:13 deep disk 6, o:1, dev:sdf1
Mar 18 16:16:13 deep disk 7, o:1, dev:sdg1
Mar 18 16:16:13 deep raid5: failed to run raid set md0
Mar 18 16:16:13 deep md: pers->run() failed ...
Mar 18 16:16:13 deep md: do_md_run() returned -5
Mar 18 16:16:13 deep md: md0 stopped.
Mar 18 16:16:13 deep md: unbind<sdg1>
Mar 18 16:16:13 deep md: export_rdev(sdg1)
Mar 18 16:16:13 deep md: unbind<sdf1>
Mar 18 16:16:13 deep md: export_rdev(sdf1)
Mar 18 16:16:13 deep md: unbind<sde1>
Mar 18 16:16:13 deep md: export_rdev(sde1)
Mar 18 16:16:13 deep md: unbind<sdd1>
Mar 18 16:16:13 deep md: export_rdev(sdd1)
Mar 18 16:16:13 deep md: unbind<sdc1>
Mar 18 16:16:13 deep md: export_rdev(sdc1)
Mar 18 16:16:13 deep md: unbind<sdb1>
Mar 18 16:16:13 deep md: export_rdev(sdb1)
Mar 18 16:16:13 deep md: unbind<sda1>
Mar 18 16:16:13 deep md: export_rdev(sda1)
Mar 18 16:16:13 deep md: ... autorun DONE.

То есть do_md_run выходит с "-5"


lsraid -d /dev/sda1
[dev   9,   0] /dev/md/0        FD11EE68.BA0F6CCE.98D4A909.D9782BA0 offline
[dev   8,   1] /dev/sda1        FD11EE68.BA0F6CCE.98D4A909.D9782BA0 good
[dev   8,  17] /dev/sdb1        FD11EE68.BA0F6CCE.98D4A909.D9782BA0 good
[dev   8,  33] /dev/sdc1        FD11EE68.BA0F6CCE.98D4A909.D9782BA0 good
[dev   ?,   ?] (unknown)        00000000.00000000.00000000.00000000 missing
[dev   8,  49] /dev/sdd1        FD11EE68.BA0F6CCE.98D4A909.D9782BA0 good
[dev   8,  65] /dev/sde1        FD11EE68.BA0F6CCE.98D4A909.D9782BA0 good
[dev   8,  81] /dev/sdf1        FD11EE68.BA0F6CCE.98D4A909.D9782BA0 good
[dev   8,  97] /dev/sdg1        FD11EE68.BA0F6CCE.98D4A909.D9782BA0 good

То же самое выводит
lsraid -d /dev/sd[b-g]1

Диск /dev/sdh1, который не подключился при из-за зависания при raidhotadd
выдает
lsraid -d /dev/sdh1
[dev   9,   0] /dev/md/0        FD11EE68.BA0F6CCE.98D4A909.D9782BA0 offline
[dev   8,   1] /dev/sda1        FD11EE68.BA0F6CCE.98D4A909.D9782BA0 good
[dev   8,  17] /dev/sdb1        FD11EE68.BA0F6CCE.98D4A909.D9782BA0 good
[dev   8,  33] /dev/sdc1        FD11EE68.BA0F6CCE.98D4A909.D9782BA0 good
[dev   ?,   ?] (unknown)        00000000.00000000.00000000.00000000 missing
[dev   8,  49] /dev/sdd1        FD11EE68.BA0F6CCE.98D4A909.D9782BA0 good
[dev   8,  65] /dev/sde1        FD11EE68.BA0F6CCE.98D4A909.D9782BA0 good
[dev   8,  81] /dev/sdf1        FD11EE68.BA0F6CCE.98D4A909.D9782BA0 good
[dev   8,  97] /dev/sdg1        FD11EE68.BA0F6CCE.98D4A909.D9782BA0 good

[dev   8,  113] /dev/sdh1        FD11EE68.BA0F6CCE.98D4A909.D9782BA0 unbound

Несмотря на то, что в массиве 7 дисков из 8 рабочие, запускаться он упорно не желает, в то время как 2й массив (из 6-ти 50 гиговых дисков определяет только 5 дисков из 6 и запускается без проблем без одного диска)

cat /proc/mdstat
Personalities : [raid5]
md1 : active raid5 sdg2[5] sdf2[4] sdc2[2] sdb2[1] sda2[0]
      224668480 blocks level 5, 32k chunk, algorithm 2 [6/5] [UUU_UU]

unused devices: <none>

В итоге: после смены порядка дисков, оба массива перестали определять по одному диску (то есть стали незащищенными), но оставались рабочими. При попытке выполнить raidhotadd для того диска, который не отображался в /proc/mdstat система повисла и не видит более тот массив, к которому я пытался подключить этот диск, в то время как второй массив, расположенный на тех же дисках виден без проблем.

при попытке запустить массив при помощи mdadm выводится

mdadm --assemble --force /dev/md0 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1
mdadm: failed to RUN_ARRAY /dev/md0: Input/output error

в то время как 2й массив запускается таким же образом

mdadm --assemble --force /dev/md1 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdf2 /dev/sdg2
mdadm: /dev/md1 has been started with 5 drives (out of 6)

В чем проблема незапуска массива и  как с этим бороться?

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Не запускается программный RAID-5 под Linux после перестанов..."  +/
Сообщение от Sergey_A.A. (ok) on 20-Мрт-06, 22:12 
Проблема решена :)
Всем спасибо за моральную поддержку ;)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Не запускается программный RAID-5 под Linux после перестанов..."  +/
Сообщение от PavelR (??) on 21-Мрт-06, 06:24 
>Проблема решена :)
>Всем спасибо за моральную поддержку ;)


Ну и рассказал бы в чем была проблема, какую версию ядра использовал и как проблему решил?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Не запускается программный RAID-5 под Linux после перестанов..."  +/
Сообщение от Sergey_A.A. (ok) on 23-Мрт-06, 21:13 
>Ну и рассказал бы в чем была проблема, какую версию ядра использовал
>и как проблему решил?


Проблема была решена путем правки драйвера программного RAID5. Массив не запускался потому что он имел состояние dirty и при этом в нем отсутствовал 1 диск. В драйвере временно пришлось на страх и риск убрать проверку массива на "dirty"... произвести его нормальное (а не аварийное) отключение. После этого был нормально подключен недостающий жесткий диск.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Не запускается программный RAID-5 под Linux после перестанов..."  +/
Сообщение от Станислав Б. on 21-Дек-09, 18:11 
Возникла аналогичная ситуация. Вот ещё одно решение.

Файл /var/log/dmesg для 4-х дискового md2 сообщал:
        md: created md2
        md: bind<sda3>
        md: bind<sdb3>
        md: bind<sdc3>
        md: bind<sdd3>
        md: running: <sdd3><sdc3><sdb3><sda3>
        md: kicking non-fresh sdb3 from array!
        md: unbind<sdb3>
        md: export_rdev(sdb3)
        md: md2: raid array is not clean -- starting background reconstruction
        raid5: device sdd3 operational as raid disk 3
        raid5: device sdc3 operational as raid disk 2
        raid5: device sda3 operational as raid disk 0
        raid5: cannot start dirty degraded array for md2
        RAID5 conf printout:
         --- rd:4 wd:3 fd:1
         disk 0, o:1, dev:sda3
         disk 2, o:1, dev:sdc3
         disk 3, o:1, dev:sdd3
        raid5: failed to run raid set md2
        md: pers->run() failed ...
        md: do_md_run() returned -5
        md: md2 stopped.

Восстановить работоспособность удалось с помощью mdadm. Из-за отстутствия был создан конфигурационный файл/etc/mdadm.conf:
        DEVICE partitions
        MAILADDR root
        ARRAY /dev/md2 level=raid5 num-devices=4 devices=/dev/sda3,/dev/sdb3,/dev/sdc3,/dev/sdd3
        
Далее - активация массива: mdadm -A /dev/md2 -f, где опция -f заставляет массив стать активным, иначе в /proc/mdstat он значится как "inactive". После этого недостающий раздел подключается командой: raidhotadd /dev/md2 /dev/sdb3.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру