Mdadm после перезагрузки нет raid
В системе Debian мой домашний каталог находится в массиве raid1 md. После создания он некоторое время работал нормально, но однажды второй диск исчез из массива.
Когда я вручную добавляю отсутствующий диск, он определяется как резервный, и массив восстанавливается. До следующей перезагрузки .
Оба диска новые, SMART-проверки в порядке.
Я проверил dmesg и вот полная "сбойная" последовательность: Хорошо синхронизированный RAID:
2 ответа 2
Ваш (новый) mdadm.conf не читается ко времени сборки массивов.
Это происходит потому, что это происходит до того, как ваша корневая файловая система смонтирована (очевидно: вам нужно иметь работающее RAID-устройство для доступа к нему), поэтому этот файл читается из образа initramfs, содержащего так называемую предзагрузочную среду.
Таким образом, чтобы сделать эту работу, после обновления конфига, запустите
чтобы обновить initramfs.
Ваше устройство RAID не обнаруживается и не собирается автоматически при загрузке.
Чтобы обеспечить это, измените типы разделов-участников на 0xfd (автоопределение Linux RAID) - для таблиц разделов в стиле MBR или на 00FD (то же самое) для GPT. Вы можете использовать fdisk или gdisk , соответственно, чтобы сделать это.
mdadm запускается при загрузке (вне initramfs), сканирует доступные разделы, считывает блоки метаданных со всех типов 0xfd собирает и запускает все устройства RAID, на которые он способен. Для этого не требуется копия обновленного mdadm.conf в образе initramfs.
Какой метод выбрать, решать только вам. Лично мне нравится второе, но если у вас есть несколько (много) RAID-устройств и вы хотите запустить только несколько из них при загрузке (требуется рабочая корневая файловая система), а остальные активировать позже, первый подход или комбинацию из них это путь.
2 ответа 2
В Linux имена /dev /sdXY не гарантируются постоянными. То есть для данного набора физических дисков узлы устройства не гарантированно отображаются в том же порядке от одной загрузки к другой.
Если у вас есть один диск, вы можете быть почти на 100% уверены, что он всегда будет отображаться как один и тот же узел устройства (например, /dev /sda).
Если у вас есть два диска, вы можете быть совершенно уверены, что они всегда будут отображаться в одном и том же порядке (например, «/dev/sda при загрузке 1» - это то же физическое устройство, что и «/dev/sda при загрузке 2» для любого два последовательных ботинка).
Если у вас есть сто дисков, вероятность того, что два диска будут поменяны местами, неожиданно возрастает довольно высоко. Это может быть результатом любого количества нарушений, но в итоге все сводится к тому, что узлы устройства /dev /sdX создаются в порядке обнаружения диска, и этот порядок обнаружения не гарантируется.
Если вы хотите гарантировать, что один и тот же диск всегда будет называться по указанному имени, вы должны использовать постоянный идентификатор. Демон, с которым у всех есть отношения любви-ненависти, с udev облегчает эту задачу, будучи обычно настроенным для создания символических ссылок в каталогах /dev /disk /by- *, которые указывают на различные аспекты дисков (шина / производитель / модель / последовательный квадруплет, местоположение топологии шины, WWN, . ) к узлу устройства, как обнаружено ядром. Вы также можете добавить собственные правила для создания любой схемы именования, которую вы предпочитаете. Я ударил что - то подобное (но не точно такой же) сам, который был разрешен путем перехода на WWN имен.
В больших массивах хранения это на самом деле очень реальная проблема и является причиной довольно сильной пропаганды постоянного использования постоянных имен устройств при обращении к хранилищу.
Ваша проблема должна исчезнуть (или, по крайней мере, быть значительно уменьшена, исключая реальные проблемы с дисками), если вы повторно добавите диски в свой массив, как, например, /dev/disk/by-id/wwn - * - part * вместо / DEV / sdXY. Это не должно иметь негативного влияния ни на что другое.
А уже не нужно для автосборки рейда делать на диске разделы с типом «Linux RAID» ?
ARRAY /dev/md0 level=raid10 num-devices=4 UUID=86863898:2c7ab753:26fd8de7:14f261bc
Вообще до этого тут спокойно работал RAID5, на дисках по 500Гб х 3шт. Но решили сделать 10 на новых дисках и тут такая проблема.
Никогда не нужно было. Он сам по сигнатурам смотрит. Там же и к какому массиву оно относится и т.п.
Занеси свой массив в /etc/mdadm/mdadm.conf или куда-то где-то туда, не спец в федоре. И перегенеряй граб и initrd. Тоже не знаю как это в федоре делается.
Может кто подсказать как перегенирировать grub и initrd в старой федоре? Или мб достаточно только initrd?
Да я думаю, тебе надо просто в mdadm.conf добавить и всё. Потому как ты загржаешься не с массива.
Так ведь добавлено. В первом посте я листинг конфига привёл mdadm.conf
А сигнатуры он где ищет? На всех-всех-всех блочных устройствах? И на /dev/vg0/lv11 тоже?
Везде где дотянется.
ARRAY /dev/md0 level=raid10 num-devices=4 UUID=86863898:2c7ab753:26fd8de7:14f261bc
Пробовал добавить auto=yes, но увы не помогает
Забыл добавить еще вот что:
Менялся системный диск на ssd, но менялся еще потому, что там сломался grub. Grub на новый диск ставился новый, но все содержимое ФС переносилось без изменений.
Попробуйте собирать массив не на целых дисках, а на разделах. Создайте 1 раздел на весь диск и укажите тип раздела Linux raid. Ну и массив собирайте из /dev/sda1 и т. д.
кстати да, почему пропустили этот совет?
Нужно тупо закомментировать эту строку, и массив поднимется после ребута
Не понял, какую строку закоментировать? auto=yes я пробовал добавить - все так же. Пробовал и рейд разделами, а не дисками, ситуация такая же.
И это, думаю, тоже:
Уровень и количество устройств и так хранятся в метаданных.
Но проблема, кажется, не в конфигурации.
Проблема еще актуальна.
Давайте подумаем, что отвечает за инициализацию массива во время загрузки? Возможно какой-то скрипт. Так как в логах dmesg нет ничего про про устройства md, думаю что проблема с инициализацией.
Если после перезагрузки сделать mdadm —assemble –scan, то массив стартует в том же состоянии, в котором был до перезагрузки
Дабы исключить эксплуатационные ошибки, я поставил на виртуалку Fedora 9, добавил 4 диска по 1Гб. Собираю из них 10 рейд, а после перезагрузки он так же пропадает. Похоже, что помимо конфига в /etc/mdadm.conf нужно что-то еще.
/etc/fstab - если просто раздел
update-initramfs - захреначить поддержку в ядро, если грузимся с райда
ну было же уже по треду, почему не попробовал?
update-initramfs в системе нету, я делал:
проверь, а есть ли поддержка md в initrd
если нет, то придется добавить
увы не шаман по твоему дистру
хм, как помню, ни разу таким не заморачивался. зачем?
Используй раздел (чуть меньше чем весь диск) на диске с соотв. меткой типа раздела.
Раздел как минимум позволит при замене дисков не попасть в ситуацию когда «такого же размера» диск на деле чуть меньше и рейд его (диск) не принимает
не актуально, почти всегда диски меняют на больше по размеру, если плановая. на факап может и пригодится твой совет, если есть зип
Попробовал сделать через разделы. Тип выставил fd. После перезагрузки рейд так же пропадает.
Доброго времени суток!
CentOS5.4, mdadm - v2.6.9 - 10th March 2009
Собирал 3 единицы raid1. всё отлично работает. Системный диск не в зеркале.
mdadm.conf
Код:
md1 : active raid1 sdc[0] sdd[1]
312571136 blocks [2/2] [UU]
md0 : active raid1 sda[0] sdb[1]
312571136 blocks [2/2] [UU]
Но после перезагрузки, система не собирает массив, и ругается на отсутствие md1, md2 устройств.
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
Apr 30 19:23:11 dionis kernel: md: bind
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
Apr 30 19:23:15 dionis kernel: md: bind
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
Apr 30 19:23:19 dionis kernel: md: bind
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
Apr 30 20:33:01 dionis kernel: md: bind
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
Apr 30 20:33:01 dionis kernel: md: bind
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
Apr 30 20:33:01 dionis kernel: md: bind
Apr 30 20:33:01 dionis kernel: raid1: raid set md2 active with 2 out of 2 mirrors
Вопрос:
Как сделать так чтобы массив автоматически собирался после перезагрузки системы?
Видимо кто-то мочит массив, попробуй удалить или переместить /etc/mdadm/mdadm.conf, для сборки массива ядром оно точно не нужно.
переместил mdadm.conf никакой пользы особой это не принесло?
Так /etc/mdadm/mdadm.conf или /etc/mdadm.conf?
таки СентОС это серверная Ось?
Вряд ли там вообще заморачивались с корректной работой этого
Так /etc/mdadm/mdadm.conf или /etc/mdadm.conf? И так и так пробовал.
Вряд ли там вообще заморачивались с корректной работой этого
Думаю, проблема в руках, а не центосе. Если RAID-устройства создавались после инсталяции, то скорей всего проблема в initrd - поддержка автосборки md-устройств включается в него только при наличии оных в /etc/raidtab или /etc/fstab, и initrd следует пересобрать.
ай, ну не знал, не знал
У вас массивы из дисков целиком?
darkshvein спасибо, толковый ответ! Буду очень признателен, если ткнёте носом в хорошую доку по пересборке initrd под CentOS
2. mkinitrd -f /boot/initrd-`uname -r`.img `uname -r`
Ребят, вы все тормозите. Тут же по логам чётко сказано что массив собирается, просто потом происходит md2 stopped. Стопудофф тут скрипты химичат. Вот я поэтому и предложил конфиг убрать. Посмотри, может там надо чтобы какой-нить /etc/init.d/mdadm или sw-raid запускался.
>Тут же по логам чётко сказано что массив собирается, просто потом происходит md2 stopped. Стопудофф тут скрипты химичат.
У меня аналогичные мысли возникли.
Глянул mdmonitor — он работает только с /etc/mdadm.conf, так что /etc/mdadm/mdadm.conf явно не при делах.
Скорее всего какое-то самосборное софтовое поделие тупо останавливает /dev/md*. Но тут уже мы вряд ли сможем ТС'у помочь.
Самосборное, странно, у меня чистая инсталляция. Кстати, пересборки initrd не помогла, не собирается массив.
Попробуй перейти в режим интерактивной загрузки (i при появлении соответствующей надписи) и отказывай всем в запуске. По идее, после этого рейд должен нормально работать. Тогда можно будет действовать методом исключения.
Все драйвера устройств SATA/ATA/SCSI скомпилированы статически с ядром (от скудности вариантов)
На всех дисках разделы маркированы FD (raid autodetect)
То есть^ сначала собираю рейд, потом делаю ФС на нём, потом маркирую разделы флагом FD (именно в такой последовательности)
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.
Добрый день. Давно был собран raid1 из двух дисков, и после отключения и подключения дисков он перестал работать. Ниже состояние системы. Хотелось был либо как-то восстановить raid1 или разобрать но что бы сохранились все данные. Боюсь сам что-то делать т.к. не уверент что мои действия не похерят все данные.
ivan@ivan:~$ sudo mdadm -D /dev/md127
ivan@ivan:~$ cat /proc/mdstat
ivan@ivan:~$ sudo mdadm -E /dev/sdb2
ivan@ivan:~$ sudo mdadm -E /dev/sda2
был собран raid1 из двух дисков, и после отключения и подключения дисков он перестал работать
Raid же как раз и создан для обеспечения надёжности жёстких носителей! Если уж он не справился - знать хана!
вообще убить его относительно сложно.
Пока fdisk/dd/mdadm –create не нажимаешь, он скорее останется жив если с дисками проблем нет.
Спасибо за ссылку, а что вы имели ввиду «вообще убить его относительно сложно» потерять данные с диска?
в смысле обычными командами если добавлять-удалять диски останавливать-запускать райд, то ничего не потеряется
и после отключения и подключения дисков он перестал работать.
и после отключения и подключения дисков
Похоже на такую ситуевину:
У меня такое было раз. После беспорядочного выдергивания дисков.
Bootmen ☆☆☆ ( 17.05.20 05:50:39 )
Последнее исправление: Bootmen 17.05.20 05:58:34 (всего исправлений: 3)
Изначально дело было так Появился новый sdd, я воткнул его в место основного диска где ubuntu+win10, что бы поставить на него винду и ubuntu. при подлюченных 2-х дисках что в raid1 видна не хотела ставиться на ssd, я их отключил. Винда поставилась, хатем так же при отключенных дисках raid1 поставил ubuntu. После этого подключил оба диска raid1 и загрузился с новой ubuntu. Понял что там нужно заново собирать raid1 не стал это делать (т.к. хотел перейти на апаратный raid), вытащил ssd, воткнул обратно старый диск, загрузился со старой ubuntu и обнаружил что мой raid развалился.
ARRAY metadata=imsm UUID=30b1f210:55912187:a28538bc:c5127416
воткнул обратно старый диск, загрузился со старой ubuntu и обнаружил что мой raid развалился.
Ничего он не развалился. Переименовался в md127 и поэтому проблемы. Я вам выше дал ссылку как починить. Там в комментах дельные советы. Сам использовал. Особенно обратите внимание, про исправление в конфиге значения HOSTNAME
Добрый день! HOSTNAME я изменил, рейд стал называться md0 но все остальное не изменилось. Статью я изучил, но там немного про другое. У меня состояние дисков sync а там active sync и Array State у меня АА а там AAA.AA.AAAAA
Но если все же пойти по тому пути то после
sudo mdadm –assemble /dev/md0 –uuid=38a209a7:8550c401:97fccdb1:9ecc0708 возникает ошибка
У меня проблемы с mdadm после перезагрузки, я не могу собрать /dev/md0 .
Я работаю над Debian Wheezy.
Я сделал следующие шаги:
Здесь все работает успешно.
После монтирования RAID я мог использовать его, создавать файлы, получать к нему доступ с других компьютеров .
Теперь возникает проблема:
После перезагрузки сервера (перезагрузите сейчас) RAID больше не существует, /dev/md0 пропал.
Сначала я проверил /etc/mdadm/mdadm.conf :
После того, как я попробую:
Демон mdadm работает ( ps aux | grep mdadm )
пусто /proc /mdstat
Читайте также: