Я построил RAID-массив с тремя дисками, двумя по 1,5 ТБ (sdb и sdd) и одним 3 ТБ (sdc). Мой подход состоит в том, чтобы объединить два диска 1,5 ТБ в диск RAID0 (md3) и создать зеркало RAID1 (md2) с диском 3 ТБ (sdc) и массивом RAID0 (md3). Все это работает.
Эта проблема: всякий раз, когда я перезагружаю компьютер, массив RAID1 (md2) видит только один активный диск (sdc), даже если массив RAID0 (md2) запускается правильно. Мне каждый раз приходится вручную заново добавлять массив md2. В чем дело? Есть ли способ заставить систему собирать md3 перед сборкой md2?
У меня уже был диск md2 с sdc. В общем, я выполнил команды (примерно):
mdadm --create --verbose /dev/md3 --level=stripe --raid-devices=2 /dev/sdb /dev/sdd
mdadm /dev/md2 --add /dev/md3
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
Я также добавил «DEVICE разделы, контейнеры / dev / md3» в файл mdadm.conf. Все это в Debian 6.0.8.
Дополнительная информация: После перезагрузки / proc / mdstat читает (информация о md0 и md1 удалена):
Personalities : [raid0] [raid1]
md3 : active raid0 sdb[0] sdd[1]
2930274304 blocks super 1.2 512k chunks
md2 : active raid1 sdc[4]
1415577600 blocks super 1.2 [2/1] [U_]
unused devices: <none>
Похоже, что md3 (массив RAID1) забыл о md2.
Также при запуске есть что-то подозрительное.
dmesg | grep -i 'md2\|md3\|raid'
[ 2.537001] md: raid0 personality registered for level 0
[ 2.539298] md: raid1 personality registered for level 1
[ 2.620402] md: md2 stopped.
[ 2.623636] raid1: raid set md2 active with 1 out of 2 mirrors
[ 2.623655] md2: detected capacity change from 0 to 1449551462400
[ 2.625028] md2: unknown partition table
[ 2.914801] md: md3 stopped.
[ 2.919365] raid0: looking at sdb
[ 2.919368] raid0: comparing sdb(2930274304)
[ 2.919370] raid0: END
[ 2.919371] raid0: ==> UNIQUE
[ 2.919372] raid0: 1 zones
[ 2.919373] raid0: looking at sdd
[ 2.919374] raid0: comparing sdd(2930274304)
[ 2.919376] raid0: EQUAL
[ 2.919377] raid0: FINAL 1 zones
[ 2.919380] raid0: done.
[ 2.919381] raid0 : md_size is 5860548608 sectors.
[ 2.919382] ******* md3 configuration *********
[ 2.919397] md3: detected capacity change from 0 to 3000600887296
[ 2.921296] md3: unknown partition table
[ 3.244104] raid1: raid set md1 active with 2 out of 2 mirrors
[ 3.468709] raid1: raid set md0 active with 2 out of 2 mirrors
Мой подход состоит в том, чтобы объединить два диска 1,5 ТБ в диск RAID0 (md3) и создать зеркало RAID1 (md2) с диском 3 ТБ (sdc) и массивом RAID0 (md3). Все это работает.
Ваш подход увеличивает вероятность потери данных, чем при использовании RAID-10. Один из ваших дисков в полосе исчез, другой бесполезен. Вот почему обычно люди склонны использовать полоски зеркал, а не зеркала из полос.
Кроме того, лучше не использовать вложенные RAID-массивы, так как это приводит к лишним накладным расходам. Программный RAID Linux поддерживает RAID-10 на нечетном количестве дисков. Таким образом, у вас может быть RAID-1 для загрузочного раздела на 2 или всех 3 дисках, а затем объединить 3 диска в RAID-10. Да, у вас останется немного места за пределами RAID-10, но, по крайней мере, у вас будет неплохой RAID-10. Оставшееся место можно использовать для не важных данных.
UPD.: Самый простой способ добиться подобной настройки - использовать возможность LVM-2 либо разделять, либо зеркалировать логические тома на физических дисках.
Оказалось, решение было довольно простым: не забудьте собрать md3 до md2. Эти инструкции предназначены специально для Debian 6.
В /etc/mdadm/mdadm.conf разместите диски в том порядке, в котором вы хотите, чтобы они собирались. В этом примере ARRAY / dev / md3 metadata = 1.2 ARRAY / dev / md2 metadata = 1.2
Запустите update-initramfs -u. Это было то, чего мне раньше не хватало!
Теперь, когда компьютер загружается, он сначала собирает md3, а затем собирает md2. Раньше он сначала собирал md2 и терпел неудачу, потому что не мог найти md3.