LINUX.ORG.RU
ФорумAdmin

mdadm не переживает перезагрузку системы


0

0

Доброго времени суток!
CentOS5.4, mdadm - v2.6.9 - 10th March 2009
Собирал 3 единицы raid1. всё отлично работает. Системный диск не в зеркале.
mdadm.conf
Код:

[root@dionis dev]# cat /etc/mdadm/mdadm.conf
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=0.90 UUID=34bd2d02:def34e52:dff5af3e:5d9e6d7d auto=md spare-group=1
ARRAY /dev/md1 level=raid1 num-devices=2 metadata=0.90 UUID=04a9a744:8e4497c4:7b735356:e7f6d207 auto=md spare-group=1
ARRAY /dev/md2 level=raid1 num-devices=2 metadata=0.90 UUID=6f0ca3b7:9c5c0f8e:e26a0ff8:5b5e86fc auto=md spare-group=1


/proc/mdstat
Код:

[root@dionis dev]# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sde[0] sdg[1]
312571136 blocks [2/2] [UU]

md1 : active raid1 sdc[0] sdd[1]
312571136 blocks [2/2] [UU]

md0 : active raid1 sda[0] sdb[1]
312571136 blocks [2/2] [UU]

unused devices: <none>

Но после перезагрузки, система не собирает массив, и ругается на отсутствие md1, md2 устройств.

/var/log/messages
Код:

Apr 30 18:34:03 dionis kernel: raid1: raid set md2 active with 2 out of 2 mirrors
Apr 30 18:34:45 dionis kernel: EXT3 FS on md0, internal journal
Apr 30 18:34:45 dionis kernel: EXT3 FS on md1, internal journal
Apr 30 18:34:45 dionis kernel: EXT3 FS on md2, internal journal
Apr 30 19:10:14 dionis kernel: md: md driver 0.90.3 MAX_MD_DEVS=256, MD_SB_DISKS=27
Apr 30 19:10:14 dionis kernel: md: bitmap version 4.39
Apr 30 19:10:15 dionis kernel: md: Autodetecting RAID arrays.
Apr 30 19:10:15 dionis kernel: md: autorun ...
Apr 30 19:10:15 dionis kernel: md: ... autorun DONE.
Apr 30 19:23:11 dionis kernel: md: md0 stopped.
Apr 30 19:23:11 dionis kernel: md: bind<sdb>
Apr 30 19:23:11 dionis kernel: md: bind<sda>
Apr 30 19:23:11 dionis kernel: md: raid1 personality registered for level 1
Apr 30 19:23:11 dionis kernel: raid1: raid set md0 active with 2 out of 2 mirrors
Apr 30 19:23:15 dionis kernel: md: md1 stopped.
Apr 30 19:23:15 dionis kernel: md: bind<sdd>
Apr 30 19:23:15 dionis kernel: md: bind<sdc>
Apr 30 19:23:15 dionis kernel: raid1: raid set md1 active with 2 out of 2 mirrors
Apr 30 19:23:19 dionis kernel: md: md2 stopped.
Apr 30 19:23:19 dionis kernel: md: bind<sdg>
Apr 30 19:23:19 dionis kernel: md: bind<sde>
Apr 30 19:23:19 dionis kernel: raid1: raid set md2 active with 2 out of 2 mirrors
Apr 30 19:24:04 dionis kernel: EXT3 FS on md0, internal journal
Apr 30 19:24:04 dionis kernel: EXT3 FS on md1, internal journal
Apr 30 19:24:04 dionis kernel: EXT3 FS on md2, internal journal
Apr 30 20:25:07 dionis kernel: md: md driver 0.90.3 MAX_MD_DEVS=256, MD_SB_DISKS=27
Apr 30 20:25:07 dionis kernel: md: bitmap version 4.39
Apr 30 20:25:08 dionis kernel: md: Autodetecting RAID arrays.
Apr 30 20:25:08 dionis kernel: md: autorun ...
Apr 30 20:25:08 dionis kernel: md: ... autorun DONE.
Apr 30 20:33:01 dionis kernel: md: md0 stopped.
Apr 30 20:33:01 dionis kernel: md: bind<sdb>
Apr 30 20:33:01 dionis kernel: md: bind<sda>
Apr 30 20:33:01 dionis kernel: md: raid1 personality registered for level 1
Apr 30 20:33:01 dionis kernel: raid1: raid set md0 active with 2 out of 2 mirrors
Apr 30 20:33:01 dionis kernel: md: md1 stopped.
Apr 30 20:33:01 dionis kernel: md: bind<sdd>
Apr 30 20:33:01 dionis kernel: md: bind<sdc>
Apr 30 20:33:01 dionis kernel: raid1: raid set md1 active with 2 out of 2 mirrors
Apr 30 20:33:01 dionis kernel: md: md2 stopped.
Apr 30 20:33:01 dionis kernel: md: bind<sdg>
Apr 30 20:33:01 dionis kernel: md: bind<sde>
Apr 30 20:33:01 dionis kernel: raid1: raid set md2 active with 2 out of 2 mirrors

Вопрос:
Как сделать так чтобы массив автоматически собирался после перезагрузки системы?

Видимо кто-то мочит массив, попробуй удалить или переместить /etc/mdadm/mdadm.conf, для сборки массива ядром оно точно не нужно.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

переместил mdadm.conf никакой пользы особой это не принесло?

keferoff
() автор топика

Так /etc/mdadm/mdadm.conf или /etc/mdadm.conf?

nnz ★★★★
()

таки СентОС это серверная Ось?
Вряд ли там вообще заморачивались с корректной работой этого

darkshvein ☆☆
()
Ответ на: комментарий от darkshvein

Так /etc/mdadm/mdadm.conf или /etc/mdadm.conf? И так и так пробовал.

keferoff
() автор топика
Ответ на: комментарий от darkshvein

таки СентОС это серверная Ось?

Да

Вряд ли там вообще заморачивались с корректной работой этого

[root@centos ~]# mount | grep md
/dev/md1 on / type ext3 (rw)
/dev/md0 on /boot type ext3 (rw)
[root@centos ~]# pvscan 2> /dev/null | grep md
  PV /dev/md2   VG centory   lvm2 [6.28 GB / 0    free]
[root@centos ~]# cat /etc/redhat-release 
CentOS release 5.4 (Final)

Думаю, проблема в руках, а не центосе. Если RAID-устройства создавались после инсталяции, то скорей всего проблема в initrd - поддержка автосборки md-устройств включается в него только при наличии оных в /etc/raidtab или /etc/fstab, и initrd следует пересобрать.

Nastishka ★★★★★
()
Ответ на: комментарий от CyberTribe

Да целиком.

darkshvein спасибо, толковый ответ! Буду очень признателен, если ткнёте носом в хорошую доку по пересборке initrd под CentOS

keferoff
() автор топика

Ребят, вы все тормозите. Тут же по логам чётко сказано что массив собирается, просто потом происходит md2 stopped. Стопудофф тут скрипты химичат. Вот я поэтому и предложил конфиг убрать. Посмотри, может там надо чтобы какой-нить /etc/init.d/mdadm или sw-raid запускался.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

>Тут же по логам чётко сказано что массив собирается, просто потом происходит md2 stopped. Стопудофф тут скрипты химичат.

У меня аналогичные мысли возникли.

Глянул mdmonitor — он работает только с /etc/mdadm.conf, так что /etc/mdadm/mdadm.conf явно не при делах.
Скорее всего какое-то самосборное софтовое поделие тупо останавливает /dev/md*. Но тут уже мы вряд ли сможем ТС'у помочь.

nnz ★★★★
()
Ответ на: комментарий от nnz

Самосборное, странно, у меня чистая инсталляция. Кстати, пересборки initrd не помогла, не собирается массив.

keferoff
() автор топика
Ответ на: комментарий от keferoff

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

nnz ★★★★
()
Ответ на: комментарий от keferoff

Все драйвера устройств SATA/ATA/SCSI скомпилированы статически с ядром (от скудности вариантов)
На всех дисках разделы маркированы FD (raid autodetect)
То есть^ сначала собираю рейд, потом делаю ФС на нём, потом маркирую разделы флагом FD (именно в такой последовательности)

Код:

[root@dionis log]# fdisk -l

Disk /dev/sda: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 1 38913 312568641 fd Linux raid autodetect

Disk /dev/sdb: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 1 38913 312568641 fd Linux raid autodetect

Disk /dev/sdc: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdc1 1 38913 312568641 fd Linux raid autodetect

Disk /dev/sdd: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdd1 1 38913 312568641 fd Linux raid autodetect

Disk /dev/sde: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sde1 1 38913 312568641 fd Linux raid autodetect

Disk /dev/sdg: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdg1 1 38913 312568641 fd Linux raid autodetect

Disk /dev/sdh: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdh1 1 38913 312568641 fd Linux raid autodetect

Disk /dev/sdf: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdf1 * 1 13 104391 fd Linux raid autodetect
/dev/sdf2 14 38913 312464250 8e Linux LVM



После перезагрузки вижу следующий лог:
Код:

May 2 11:48:30 dionis kernel: md: autorun ...
May 2 11:48:30 dionis kernel: md: ... autorun DONE.
May 2 11:57:15 dionis kernel: ata9: PATA max UDMA/100 cmd 0xcc00 ctl 0xc880 bmdma 0xc400 irq 19
May 2 11:57:15 dionis kernel: ata10: PATA max UDMA/100 cmd 0xc800 ctl 0xc480 bmdma 0xc408 irq 19
May 2 11:57:15 dionis kernel: md: linear personality registered for level -1
May 2 11:57:15 dionis kernel: md: raid0 personality registered for level 0
May 2 11:57:15 dionis kernel: md: raid1 personality registered for level 1
May 2 11:57:15 dionis kernel: md: raid10 personality registered for level 10
May 2 11:57:15 dionis kernel: md: raid6 personality registered for level 6
May 2 11:57:15 dionis kernel: md: raid5 personality registered for level 5
May 2 11:57:15 dionis kernel: md: raid4 personality registered for level 4
May 2 11:57:15 dionis kernel: md: multipath personality registered for level -4
May 2 11:57:15 dionis kernel: md: faulty personality registered for level -5
May 2 11:57:15 dionis kernel: md: Autodetecting RAID arrays.
May 2 11:57:15 dionis kernel: md: invalid raid superblock magic on sda1
May 2 11:57:15 dionis kernel: md: sda1 does not have a valid v0.90 superblock, not importing!
May 2 11:57:15 dionis kernel: md: invalid raid superblock magic on sdb1
May 2 11:57:15 dionis kernel: md: sdb1 does not have a valid v0.90 superblock, not importing!
May 2 11:57:15 dionis kernel: md: invalid raid superblock magic on sdc1
May 2 11:57:15 dionis kernel: md: sdc1 does not have a valid v0.90 superblock, not importing!
May 2 11:57:15 dionis kernel: md: invalid raid superblock magic on sdd1
May 2 11:57:15 dionis kernel: md: sdd1 does not have a valid v0.90 superblock, not importing!
May 2 11:57:15 dionis kernel: md: invalid raid superblock magic on sde1
May 2 11:57:15 dionis kernel: md: sde1 does not have a valid v0.90 superblock, not importing!
May 2 11:57:15 dionis kernel: md: invalid raid superblock magic on sdg1
May 2 11:57:15 dionis kernel: md: sdg1 does not have a valid v0.90 superblock, not importing!
May 2 11:57:15 dionis kernel: md: invalid raid superblock magic on sdf1
May 2 11:57:15 dionis kernel: md: sdf1 does not have a valid v0.90 superblock, not importing!
May 2 11:57:15 dionis kernel: md: invalid raid superblock magic on sdh1
May 2 11:57:15 dionis kernel: md: sdh1 does not have a valid v0.90 superblock, not importing!
May 2 11:57:15 dionis kernel: md: Scanned 8 and added 0 devices.
May 2 11:57:15 dionis kernel: md: autorun ...
May 2 11:57:15 dionis kernel: md: ... autorun DONE.

keferoff
() автор топика

Кстати, что в cat /proc/mdstat
после загрузки

и ещё вопрос
таки массивы из дисков целиком, или на дисках есть разделы (даже один на диск) и из них уже массивы?

CyberTribe ★★
()
Ответ на: комментарий от CyberTribe

....таки массивы из дисков целиком, или на дисках есть разделы (даже один на диск) и из них уже массивы?....

Сервер в режиме пуско-наладочных работ. Пробовал и с разделами на дисках (один раздел на весь диск с флагом FD)на всех дисках. Пробовал и без разделов. Результат один и тот же.

keferoff
() автор топика
Ответ на: комментарий от keferoff

Сразу после загрузки: root@dionis dev]# cat /proc/mdstat Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty] unused devices: <none>

Если рейд собрать руками на основе конфига assemble, всё собирается без проблем. Проблема только при начальной загрузке.

keferoff
() автор топика
Ответ на: комментарий от keferoff

Странно оно всё выглядит.
Корень не на raid-е, так?
Тогда initrd можно не трогать.
Попробуйте руками прибить разделы на этих дисках, занулить первые несколько мегабайт данных на дисках с помощью dd, и создать md массивы вручную, на каждом диске по одному разделу с типом fd, при создании укажите использовать версию суперблока 0.90 (ядро более новые не понимает)

CyberTribe ★★
()
Ответ на: комментарий от CyberTribe

Совершенно верно, корень не на RAID. Хорошая мысль, делаю: 1. mdadm --zero-superblock 2. Делаю на каждом из дисков /dev/sda /dev/sdb по разделу и маркирую флагом FD 3. Заново собираю массив с помощью mdadm 2.6.9 (0.90 metadata) 4. Жду окончания сборки 5. Перегружаюсь :) Как закончится синк дисков отпишусь ~40 минут

keferoff
() автор топика
Ответ на: комментарий от keferoff

CyberTribe спасибо вам! Вы настоящий IT богатырь :)
По приведённому выше сценарию получилось. Вот логи:
May 2 14:35:54 dionis kernel: md: autorun ...
May 2 14:35:54 dionis kernel: md: considering sdb1 ...
May 2 14:35:54 dionis kernel: md: adding sdb1 ...
May 2 14:35:54 dionis kernel: md: adding sda1 ...
May 2 14:35:54 dionis kernel: md: created md1
May 2 14:35:54 dionis kernel: md: bind<sda1>
May 2 14:35:54 dionis kernel: md: bind<sdb1>
May 2 14:35:54 dionis kernel: md: running: <sdb1><sda1>
May 2 14:35:54 dionis kernel: raid1: raid set md1 active with 2 out of 2 mirrors
May 2 14:35:54 dionis kernel: md: ... autorun DONE.
May 2 14:35:54 dionis kernel: md1: unknown partition table
May 2 14:35:54 dionis kernel: EXT3 FS on md1, internal journal

А вот и fdisk

[root@dionis log]# fdisk -l

Disk /dev/sda: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 1 38913 312568641 fd Linux raid autodetect

Disk /dev/sdb: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 1 38913 312568641 fd Linux raid autodetect

keferoff
() автор топика
Ответ на: комментарий от keferoff

Если по простому, то это в общем то яркий пример изьёба ) Не получилось между дисками, не беда, сделаем между разделами.

Теперь возникает вопрос, не пострадает ли надёжность массива из-за того что массив между разделами, а не целыми дисками? Думаю что логический диск это дополнительный «слой сложности» и ежели навернётся раздел, то поднять инфу с рейда будет сложнее чем когда, если бы рейд был организован между целыми дисками.

Прокоментируйте пожалуйста.

keferoff
() автор топика
Ответ на: комментарий от keferoff

Делать массивы из дисков целиком а не из разделов - вообще не очень правильный подход. Например по тому, что ядро не сможет автоматом подключить такой массив - оно его не увидит, потому что нет раздела с типом raid autodetect.
Ну и надёжность зеркала в данном случае не страдает ни капли.

CyberTribe ★★
()
Ответ на: комментарий от keferoff

sfdisk -d /dev/sda | sfdisk /dev/sdb

Скопировать таблицу разделов с одного диска на другой.
Так можно делать при добавлении нового диска, или если на одном из старых таблица слетела. Это решает большинство проблем с разделами.

Разумеется, второй диск не должен быть меньше первого.

nnz ★★★★
()
Ответ на: комментарий от nnz

То есть, если я правильно понял, при замене одного из дисков в зеркале, придётся копировать таблицу разделов, даже в случае если диск не системный? Пример: имеется 3 диска в системе: sdf - системный без raid. Диски sda и sdb в raid1. Выходит из строя sda. И мне помимо замены диска и ребилда, потребуется ещё таблицу разделов переносить?

keferoff
() автор топика
Ответ на: комментарий от keferoff

Ну да, а в чём проблема?
Это одна команда.
Итого замена диска сведётся к 3.
1. убрать сбоящий финт из raid-а
2. скопировать таблицу разделов.
3. добавить новый диск в raid.

CyberTribe ★★
()
Ответ на: комментарий от keferoff

Конечно. Это же гораздо проще, чем руками через fdisk разделы создавать.

Кстати, а что такое «системный диск»? Диск без таблицы разделов?

nnz ★★★★
()
Ответ на: комментарий от nnz

Системный диск? Ну я виндузятник в недавнем прошлом, так что это диск на котором находятся исполняемые файлы, ядро и библиотеки ОС, короче диск на котором стоит Linux :)

keferoff
() автор топика
Ответ на: комментарий от keferoff

Обычно это диск с корневым разделом. Хотя многие исполняемые файлы могут лежать в /usr, а /usr при желании тоже можно на отдельный раздел вынести. /boot, в котором лежат ядра и вспомогательные файлы загрузчика, тоже иногда на отдельный раздел выносят.
Хотя, как правило, все это размещается в пределах одного диска. Но это условие вовсе не обязательно. Так что универсального понятия «системный диск» в юниксе, как видишь, нет.

А копирование таблицы разделов для рейда к этому диску никак не относится. Ее надо копировать с заведомо рабочего диска рейда на новый.

nnz ★★★★
()
Ответ на: комментарий от nnz

Всем спасибо за толковые советы и подробные комментарии!
CyberTribe и nnz спасибо! ;)

keferoff
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.