Создание Raid5, при перезагрузке диск становится removed

Автор Iflex, 05 марта 2013, 12:57:41

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Iflex

Всем привет.

Пытаюсь создать raid5.  Пользуюсь мануалом.
Делаю так :
mdadm --create --verbose /dev/md0 --level=5  --raid-devices=4 /dev/sd[bcde]
после сборки рейда сделал:

mkfs.ext4 -m 0 /dev/md0
echo "DEVICE partitions" > /etc/mdadm/mdadm.conf
mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf


в  /etc/mdadm/mdadm.conf вижу:
DEVICE partitions
ARRAY /dev/md/0 level=raid5 num-devices=4 metadata=1.2 name=Fileserver:0 UUID=8ddad0bd:8e2064b6:26dc3bbc:1d49b541

Создал папку, смонтировал туда raid, прописал в fstab, всё хорошо.
/dev/md0        /home/filefolder       ext4    defaults        0       2

в mdadm -D /dev/md0 вижу, что все четыре диска active.

после перезагрузки - всё монтируется нормально, папка видна, однако в mdadm -D /dev/md0 вижу, что только три диска active, один - removed.
Если сделать mdadm --add, то он будет несколько часов собираться, и всё снова будет ok. До перезагрузки..

Помогите плз разобраться, раньше такой проблемы не встречал. может, в дебиане какая-то своя фишка? у меня squeeze.
Может, в mdadm.conf надо написать что-то дополнительно?
В гугле там советуют вписать имя компа или spare=0.




Сообщение объединено: 05 марта 2013, 22:53:32

Сделал по-новой, собрал raid.
в /etc/mdadm/mdadm.conf вписал имя компа и spares=0, не помогло
вот что вижу в dmesg при перезагрузке:
Открыть содержимое (спойлер)
[    2.151352] md: raid6 personality registered for level 6
[    2.151354] md: raid5 personality registered for level 5
[    2.151355] md: raid4 personality registered for level 4
[    2.154935] md: raid10 personality registered for level 10
[    2.158817] mdadm: sending ioctl 1261 to a partition!
[    2.158818] mdadm: sending ioctl 1261 to a partition!
[    2.160667] mdadm: sending ioctl 1261 to a partition!
[    2.160669] mdadm: sending ioctl 1261 to a partition!
[    2.160972] mdadm: sending ioctl 1261 to a partition!
[    2.160973] mdadm: sending ioctl 1261 to a partition!
[    2.162450] md: md0 stopped.
[    2.163024] md: bind<sdc>
[    2.163126] md: bind<sdd>
[    2.163216] md: bind<sdb>
[    2.164042] raid5: device sdb operational as raid disk 0
[    2.164044] raid5: device sdd operational as raid disk 2
[    2.164046] raid5: device sdc operational as raid disk 1
[    2.164309] raid5: allocated 4282kB for md0
[    2.164331] 0: w=1 pa=0 pr=4 m=1 a=2 r=4 op1=0 op2=0
[    2.164333] 2: w=2 pa=0 pr=4 m=1 a=2 r=4 op1=0 op2=0
[    2.164335] 1: w=3 pa=0 pr=4 m=1 a=2 r=4 op1=0 op2=0
[    2.164336] raid5: raid level 5 set md0 active with 3 out of 4 devices, algorithm 2
[    2.164364] RAID5 conf printout:
[    2.164365]  --- rd:4 wd:3
[    2.164366]  disk 0, o:1, dev:sdb
[    2.164367]  disk 1, o:1, dev:sdc
[    2.164368]  disk 2, o:1, dev:sdd
[    2.164385] md0: detected capacity change from 0 to 6001191813120
[    2.165025]  md0: unknown partition table
[    2.364666] mdadm: sending ioctl 1261 to a partition!
[    2.364668] mdadm: sending ioctl 1261 to a partition!
[    2.364864] mdadm: sending ioctl 1261 to a partition!
[    2.364866] mdadm: sending ioctl 1261 to a partition!
[    2.401369] PM: Starting manual resume from disk
[    2.401371] PM: Resume from partition 8:2
[    2.401372] PM: Checking hibernation image.
[    2.401659] PM: Error -22 checking image file
[    2.401661] PM: Resume from disk failed.
[свернуть]

gardarea51

#1
[    2.164385] md0: detected capacity change from 0 to 6001191813120
Вроде как говорит, что изменения на диске произошли. Может быть диск сбоит или бэды на нем? Вообще при создании ребилд нормально идет?

Iflex

#2
Не знаю на счёт изменений, я на него ничего не клал, хотя, если примонтировать, то на нём есть только одна пустая папка lost+found;
Однако, df -l даёт:
Filesystem            1K-blocks        Used      Available       Use%   Mounted on
/dev/md0             5768578064    190408    5768387656   1%       /mnt/test

:o
может это типа какого-то "зарезервированного пространства"?..


df -h /home/sharefolder/
Filesystem            Size  Used Avail Use% Mounted on
/dev/md0              5.4T  186M  5.4T   1% /home/sharefolder

Ну куда он юзается, если я указываю mkfs.ext4 -m 0 ??

Самое, что я не понимаю, это как при вводе команды:
mdadm --create /dev/md0 --level=5 --raid-devices=4 --spare-devices=0 /dev/sd[bcde]
у меня получается, что один диск сразу removed!
Если попытаться примонтировать рейд куда-то, он ребилдится абсолютно нормально,
но при ребуте, опять диск removed.

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

p.s.
кстати, а зачем может быть нужна в mdadm.conf строчка?:
CREATE owner=root group=disk mode=0660 auto=yes
у меня то её нету

gardarea51

#3
Честно говоря я сам этим файлом практически не пользовался. Что могу посоветовать. Попробуйте остановить рэйд, очистить суперблоки дисков и снова его собрать. В общем-то, если бы был бэд-блок, то система скорее всего написала бы об этом с логе, а у вас этого кажется нет.

И вот кое что нашел. Там говорится, что при создании raid5-массива mdadm автоматически создает деградированный массив с 1 запасным диском. Потому что там ребилд произойдет быстрее. Для отмены такого поведения нужно использовать опцию --force. Ну и там же примеры:
mdadm --create --verbose --force --assume-clean /dev/md0 --level=5 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

Возможно, вы просто не дожидаетесь полного ребилда... хотя чему там ребилдиться то. Попробуйте очистить суперблоки и собрать снова с опцией --force. Надеюсь, это вам поможет.

Iflex

#4
Ну, судя по тому, что вы нашли, там написано, --force соберёт raid не в degraded mode, а сразу в рабочий, и это будет гораздо дольше.

Однако, решение проблемы я нашёл!

это бага! и устраняется она обновлением ядра. По умолчанию в squeeze какое-то 2.6, я поставил 3. и всё заработало!
в dmesg больше не пишется сообщение mdadm: sending ioctl 1261 to a partition! (которое и нужно было гуглить).
и после ребута всё работает отлично!

Делаем так:
1. Смотрим текущую версию:  cat /proc/version
2. в /etc/apt/sources.list добавляем строчку deb http://backports.debian.org/debian-backports squeeze-backports main
3. apt-get update , затем смотрим какие есть ядра достуные apt-cache search linux-image-3
4. инсталлируем: apt-get -t squeeze-backports install linux-image-3.2.0-0.bpo.4-amd64 firmware-linux-free
5. ребутимся, затем собираем рейд.


Единственно, остаётся вопрос по настройке рейда. Немного не понимаю на счёт свободного дискового пространства.
5Raid на 4 хардах даст всего 3 харда свободного дискового пространства. Это понятно.
Если у нас 4 идентичных харда по 2ТБ, это есть 3x2000/1024=5,859375, то есть, 5,8 терабайт. Всё понятно.
Не понятно, какого чёрта у меня 5,4 ?

Хотя, судя по информации,
6 терабайт= 6000 000 000 000 / 1024/1024/1024 = 5587,935447692871
тем не менее, это не 5,4!

df -h /home/sharefolder
Filesystem            Size  Used Avail Use% Mounted on
/dev/md0              5.4T  186M  5.4T   1% /home/sharefolder

с чего это 5.4 и куда делось 186?!
форматировал так: mkfs.ext4 -m 0 /dev/md0