У меня есть массив RAID 5, построенный из разделов на 5 дисках - /dev/sda1
, /dev/sdb1
, /dev/sdc1
, /dev/sdd1
, и /dev/sde1
. Когда я собираю массив вручную, он работает нормально.
К сожалению, суперблоки тоже есть на /dev/sdb
и /dev/sdc
(возможно, что-то я напортачил на раннем этапе), и когда массив автоматически собирается при запуске, он строится с /dev/sdb
вместо того /dev/sdb1
(то же самое с /dev/sdc
) и не удается смонтировать (с ошибкой недопустимой файловой системы).
$ sudo mdadm --assemble --scan --force (presumably what happens on startup)
mdadm: WARNING /dev/sdb1 and /dev/sdb appear to have very similar superblocks.
If they are really different, please --zero the superblock on one
If they are the same or overlap, please remove one from the
DEVICE list in mdadm.conf.
$ sudo mdadm --detail /dev/md7
/dev/md7:
Version : 00.90
Creation Time : Wed Apr 6 18:17:07 2011
Raid Level : raid5
Array Size : 7814047744 (7452.06 GiB 8001.58 GB)
Used Dev Size : 1953511936 (1863.01 GiB 2000.40 GB)
Raid Devices : 5
Total Devices : 5
Preferred Minor : 7
Persistence : Superblock is persistent
Update Time : Sat Apr 30 13:55:50 2011
State : clean
Active Devices : 5
Working Devices : 5
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
UUID : 224009a1:e4173bf3:2490f10a:1455ce9c (local to host ravenscar)
Events : 0.2
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 16 1 active sync /dev/sdb
2 8 32 2 active sync /dev/sdc
3 8 48 3 active sync /dev/sdd1
4 8 65 4 active sync /dev/sde1
$ sudo mdadm --examine /dev/sdb
/dev/sdb:
Magic : a92b4efc
Version : 00.90.00
UUID : 224009a1:e4173bf3:2490f10a:1455ce9c (local to host ravenscar)
Creation Time : Wed Apr 6 18:17:07 2011
Raid Level : raid5
Used Dev Size : 1953511936 (1863.01 GiB 2000.40 GB)
Array Size : 7814047744 (7452.06 GiB 8001.58 GB)
Raid Devices : 5
Total Devices : 5
Preferred Minor : 7
Update Time : Wed Apr 27 21:15:03 2011
State : clean
Active Devices : 5
Working Devices : 5
Failed Devices : 0
Spare Devices : 0
Checksum : f83035d3 - correct
Events : 2
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 1 8 17 1 active sync /dev/sdb1
0 0 8 1 0 active sync /dev/sda1
1 1 8 17 1 active sync /dev/sdb
2 2 8 33 2 active sync /dev/sdc
3 3 8 49 3 active sync /dev/sdd1
4 4 8 65 4 active sync /dev/sde1
Тогда я делаю:
$ sudo mdadm --stop /dev/md7
$ sudo mdadm --assemble /dev/md7 /dev/sd[abcde]1
И тогда это работает.
Мой вопрос: Безопасно ли использовать --zero-superblock
вариант удалить те ошибочные суперблоки? какие еще меры мне следует предпринять? Правильно ли я сделал выбор, построив массив с разделами вместо дисков (/dev/sda1
вместо того /dev/sda
, и так далее).
Не обнуляйте суперблок. Редактировать как предложил mdadm /etc/mdadm.conf
или /etc/mdadm/mdadm.conf
и изменить DEVICE ....
кому:
DEVICE /dev/sda1
DEVICE /dev/sdb1
DEVICE /dev/sdc1
DEVICE /dev/sdd1
DEVICE /dev/sde1
Похоже, что MD видит один и тот же суперблок с двух устройств (sdb1 - это подмножество sdb). Убийство суперблока убило бы настоящий суперблок, так что не делайте этого.
Суперблоки MD v0.90 хранятся в конце устройства в блоке, выровненном по 64 КБ. В вашем случае sdb1 - единственный раздел, а суперблок можно найти в конце как sdb, так и sdb1. Каким-то образом (похоже, это старая проблема, см. Ссылку в конце) MD запутался и начал думать, что у вас есть две копии суперблока на двух разных устройствах.
Исправить это легко, если у вас есть дополнительное пространство на этом разделе - вы можете просто стереть суперблок, а затем переразбить диск, закончив раздел 64k до конца диска; MD не увидит субблок на sdb и правильно соберет массив с помощью sdb1. Если вы не можете вынуть 64k из sdb, вам придется пересобрать массив. Если это не ваш загрузочный диск, вы также можете использовать более новую версию суперблока. v.1.1 и v.1.2 хранят суперблок где-то в начале массива, что решит эту конкретную проблему.
Я только что столкнулся с той же проблемой на raid1. Используя «fdisk -u» (использовать секторы как единицы), раздел заканчивался на секторе 143374743. Я вычел 128 из этого числа (128 512-байтовых секторов = 64 КБ) и использовал полученное число как конец раздела. Затем я мог убедиться, что MD не увидит суперблок на sda с помощью:
# mdadm --misc -E /dev/sda
Похоже, недавнее изменение поведения, связанное с использованием секторов и отказом от совместимости с DOS в инструментах разбиения, привело к тому, что последний раздел всегда оканчивался на самом конце диска (а не на границе цилиндра). Некоторые другие параметры могут быть задействованы, например, у меня есть работающая система, которая показывает дублирующиеся суперблоки при прямом запросе дисков и по-прежнему правильно монтирует свой массив.
Для получения дополнительной информации о форматах суперблока MD см .:
https://raid.wiki.kernel.org/index.php/RAID_superblock_formats#The_version-0.90_Superblock_Format
В часто задаваемых вопросах Debian (пункт 11) упоминается эта проблема:
http://git.debian.org/?p=pkg-mdadm/mdadm.git;a=blob_plain;f=debian/FAQ;hb=HEAD
Если у вас нет данных в массиве, я бы просто стер его и начал все сначала. Если у вас есть данные, я бы сделал резервную копию, прежде чем играть с суперблоками.
Лично я бы извлек из него данные и dd
несколько секторов /dev/zero
в начале каждого диска, затем заново разбейте и перестройте массив. Мне было бы удобнее знать, что с самого начала все было настроено правильно.
В качестве отступления: на мой взгляд, это довольно большой массив для создания RAID-5. Следите за временем восстановления. В случае отказа одного диска у вас будет катастрофическая потеря данных, если у вас будет другая ошибка при чтении во время восстановления. Вы можете рассмотреть RAID-6.
К сожалению, я удалил RAID-Superblock при чтении следующего сообщения:
mdadm: WARNING /dev/sdb1 and /dev/sdb appear to have very similar superblocks.
If they are really different, please --zero the superblock on one
If they are the same or overlap, please remove one from the
DEVICE list in mdadm.conf.
После этого мой RAID1 больше не мог запускаться.
К счастью, создание нового RAID1 с параметрами, идентичными исходному, не удалило старый: http://lists.debian.org/debian-user-french/2006/03/msg00607.html через http://kevin.deldycke.com/2007/03/how-to-recover-a-raid-array-after-having-zero-ized-superblocks/
Как частично большой палец / вводящее в заблуждение / бесполезное сообщение выше mdadm, как умный - это mdadm с отдыхом.