LINUX.ORG.RU
ФорумAdmin

debian raid1 BOOT_DEGRADED. inird не хочет собирать массив, если отключить от машины один из дисков

 , , , ,


1

2

Доброе утро всем!

Есть debian jessie minimal. Два диска в raid1, корень на /dev/md0. С двумя дисками все Ок. Как только отключаю один из дисков - initrd не хочет собирать /dev/md0. md0 появлятеся, но пишет статус inactive, Raid level : raid0 (вместо 1). Если в консоли восстановления сделать следующее:

(initramfs) mdadm -S /dev/md0 && mdadm --assemble --scan
то массив поднимается, статус сразу active. Выглядит это так: http://postimg.org/image/ve7yolylf/ http://postimg.org/image/7gzo9jueh/ http://postimg.org/image/3qv3687cf/

Подскажите плиз, что надо прописать загрузчику и initramfs, чтобы при загрузке собирался degraded массив?

Заранее всем спасибо.

ps: Сори что повторно создал тему. Думаю, что тут более понятно все описал. Предыдущий топик: grub2 and sortware raid1 не грузится с одним диском.

pps: Вот как ставилась система

Cразу после установки стартую скрипт:

#!/bin/sh

apt-get update && apt-get upgrade && apt-get -y install dbus mc openssh-server openssh-client ntp sudo less tree apt-file htop initramfs-tools mdadm lvm2

cat <<EOF >> /etc/modules
md_mod
raid1
EOF

echo "BOOT_DEGRADED=true"  >>  /etc/initramfs-tools/conf.d/mdadm
echo "options md_mod start_ro=1 start_dirty_degraded=1"  >> /etc/modprobe.d/mdadm.conf

cp /etc/default/grub /etc/default/grub-orig

cat <<EOF > /etc/default/grub
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="bootdegraded=true md-mod.start_dirty_degraded=1"
GRUB_CMDLINE_LINUX=""
EOF

update-initramfs -u && update-grub

grub-install /dev/sda && grub-install /dev/sdb
он ставит нужный мне софт и добавляет bootdegraded=true md-mod.start_dirty_degraded=1, обновляет initramfs и grub, ставит grub на sda и sdb (если при установке поставил не на оба).

Версия ядра и разделы:

root@vdeb:~# uname -a
Linux vdeb 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt4-3 (2015-02-03) x86_64 GNU/Linux

root@vdeb:~# cat /etc/debian_version 
8.0

root@vdeb:~# lsblk && blkid
NAME    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda       8:0    0    8G  0 disk
└─sda1    8:1    0    8G  0 part
  └─md0   9:0    0    8G  0 raid1 /
sdb       8:16   0    8G  0 disk
└─sdb1    8:17   0    8G  0 part
  └─md0   9:0    0    8G  0 raid1 /
sr0      11:0    1 1024M  0 rom
/dev/sdb1: UUID="52f50c29-ec6f-7bb0-bc02-4771e9b459cb" UUID_SUB="310cadb9-4e97-d692-a396-aba349e53181" LABEL="vdeb:0" TYPE="linux_raid_member" PARTUUID="2945999c-01"
/dev/sda1: UUID="52f50c29-ec6f-7bb0-bc02-4771e9b459cb" UUID_SUB="6b11bf3e-d102-b8c4-c9f8-822b628ae9e1" LABEL="vdeb:0" TYPE="linux_raid_member" PARTUUID="51117c15-01"
/dev/md0: UUID="82ecf9a8-429a-44b8-bdb7-ddacb963a054" TYPE="ext4"

root@vdeb:~# grep -v ^# /etc/fstab
UUID=82ecf9a8-429a-44b8-bdb7-ddacb963a054 /               ext4    errors=remount-ro 0       1
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0

★★

зачем вообще саму систему на рейд пихать, у меня на зеркалах только данные с которыми работает ОС расположены, а ценность самой ОС ноль целых хрен десятых.

axelroot
()

md0 появлятеся, но пишет статус inactive, Raid level : raid0 (вместо 1).

?!

Для того самого диска, с которым не грузится, покажи

mdadm -E -e 0.9 /dev/sda1
mdadm -E -e 1.0 /dev/sda1
mdadm -E -e 1.1 /dev/sda1
mdadm -E -e 1.2 /dev/sda1


mdadm -E -e 0.9 /dev/sda
mdadm -E -e 1.0 /dev/sda
mdadm -E -e 1.1 /dev/sda
mdadm -E -e 1.2 /dev/sda
router ★★★★★
()
Ответ на: комментарий от router

И покажи фотографию с /proc/mdstat, когда

http://postimg.org/image/7gzo9jueh/

вручную стартует нормально:

http://postimg.org/image/3qv3687cf/

Для того самого диска, с которым не грузится, покажи madam -E...

root@vdeb:~# sh mdadm-examine.sh 
mdadm: No super block found on /dev/sda1 (Expected magic a92b4efc, got 00000000)
mdadm: No super block found on /dev/sda1 (Expected magic a92b4efc, got 00000000)
mdadm: No super block found on /dev/sda1 (Expected magic a92b4efc, got 00000000)
/dev/sda1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 52f50c29:ec6f7bb0:bc024771:e9b459cb
           Name : vdeb:0  (local to host vdeb)
  Creation Time : Fri Feb 20 04:50:07 2015
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 16764928 (7.99 GiB 8.58 GB)
     Array Size : 8382464 (7.99 GiB 8.58 GB)
    Data Offset : 8192 sectors
   Super Offset : 8 sectors
   Unused Space : before=8104 sectors, after=0 sectors
          State : clean
    Device UUID : 6b11bf3e:d102b8c4:c9f8822b:628ae9e1

    Update Time : Fri Feb 20 13:26:47 2015
  Bad Block Log : 512 entries available at offset 72 sectors
       Checksum : de30f894 - correct
         Events : 330


   Device Role : Active device 0
   Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
mdadm: No super block found on /dev/sda (Expected magic a92b4efc, got 00000000)
mdadm: No super block found on /dev/sda (Expected magic a92b4efc, got 00000000)
mdadm: No super block found on /dev/sda (Expected magic a92b4efc, got 109063eb)
mdadm: No super block found on /dev/sda (Expected magic a92b4efc, got 96907290)

это на запущеной системе с двумя подключенными дисками.

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

зачем вообще саму систему на рейд пихать

на сервере не только ценность данных важно, но и отказоустойчивость. Все сую в зеркало /boot / и даже swap

в этом примере - просто тест на виртуалке

samson ★★
() автор топика

Тут grub2 and sortware raid1 не грузится с одним диском одно решение нашел:

Создаю /etc/initramfs-tools/scripts/init-premount/assemble-md0 следующего содержимого:

mdadm -S /dev/md0
mdadm -A --scan

chmod +x этому скрипту и update-initramfs -u - все ок. Но как то оно криво... Должен же быть метод заставить initrd собирать зеркало c одного диска простым указанием параметра типа bootdegraded=true md-mod.start_dirty_degraded=1 bootdelay=5000....

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

на сервере не только ценность данных важно, но и отказоустойчивость.

сам по себе сервер никакой отказоустойчивости не обеспечивает, этим занимаются кластеры HA, самый простенький можно построить на дрбд из двух нод, в нем падает один сервант, тут же поднимается второй и оба они используют один и тот же набор данных, зеркалирующихся по сети.

у вас же попытка повысить надежность дисковой подсистемы на которой размазана сама ОС, что для меня является сомнительным мероприятием.

axelroot
()

Так, давайте еще раз. Была дана ссылка на howtoforge с мануалом. Там сказано что надо set root='(md/0)'. И далее : The important part in our new menuentry stanza is the line set root='(md/0)' - it makes sure that we boot from our RAID1 array /dev/md0 (which will hold the /boot partition) instead of /dev/sda or /dev/sdb which is important if one of our hard drives fails - the system will still be able to boot.

baralgin
()
Ответ на: комментарий от samson

все сервисы суйте в виртуалки и размещайте их на кластерах, или держите их на san-ах, вот это и сохранность данных и отказоустойчивость.

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

Ну так если умирает системный винт, который не в рейде, то это увеличивает время простоя сервера, ведь быстрее сунуть другой винт, который отзеркалился бы. Или не так?

baralgin
()
Ответ на: комментарий от axelroot

сам по себе сервер никакой отказоустойчивости не обеспечивает, этим занимаются кластеры HA, самый простенький можно построить на дрбд из двух нод, в нем падает один сервант блаблабла

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

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

ведь быстрее сунуть другой винт, который отзеркалился бы. Или не так?

да все так, но помимо винтов на сервере есть чему ломаться, плюс зеркало не отменяет бекапов и повреждений самой ФС.

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

axelroot
()
Ответ на: комментарий от baralgin

Ну так если умирает системный винт

вово. А тут удлил дохлый из массива. отключил его (можно и на горячую). И воткнул новый. И даже ребутаться не надо... Правда на debian не пробовал. не знаю как там ядро себя поведет по поводу всяких там sata hotplug

Так, давайте еще раз. Была дана ссылка на howtoforge с мануалом. Там сказано что надо set root='(md/0)'

Статью читал. И прописывал так. Тут без разницы как root указывать. Можно и через uuid. Дело в том, что и grub и initrd и ядро все види нормально. Оно же грузится с двух дисков. И груб загружается с каждого в отдельности. и в grub shell> ls (md/0)/boot все видит. grub грузит ядро и initrd. он тут вообще не причем. Вся проблема в том, что initrd не хочем поднимать зеркало, если там отсутствует один из дисков.

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

не отменяет бекапов

бекапы вообще ничто не отменяет

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

Недавно сдох диск не с системой. Слава богу данные были на DRBD и в виртуалках. Кластер. Рейда не было. Бекап был, но не потребовался слава богу. В итоге траха на 4 часа. Миграция виртуалок - время простоя, пришлось ждать конца рабочего дня. После замены диска DRBD синхронизировалась 25 часов. а если бы был рейд - траха никакого, винт в рейде поменять - 5 минут. система и данные однозначно на рейде.
тут уже все вроде бы сказали про это. Нужно смоделировать отказ любой детальки системы и далее расписать какие сервисы отвалятся, что работать не будет, что нужно будет сделать и т.д. ВИНТЫ - это по моему самая частая деталь которая ломается - расходник.
а если бы у меня сломался системный диск который не в рейде да и еще в рабочее время? Короче труба. Внешнее хранилище позволить себе не могу.

Vlad-76 ★★★★
()
Последнее исправление: Vlad-76 (всего исправлений: 1)

Ну так есть у кого еще какие идеи по поводу BOOT_DEGRADED? Неужели в debian нельзя по дефолту (либо указанием какого-нить флага/параметра) загрузить систему с неполным raid1?

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

http://gnu.su/news.php?extend.2388

10. Для предотвращения незагрузки машины, по причине того, что рейд находится в degraded состоянии добавляем bootdegraded=1 опцию ядра.

сам не пробовал, просто вспомнил - недавно читал после своего сбоя винта в кластере.

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

добавляем bootdegraded=1 опцию ядра

а вот это не работает. Везде пишут, что это для ubuntu. Думал и в дебиане аналогично, но нет.

Делал так:

echo "BOOT_DEGRADED=true"  >>  /etc/initramfs-tools/conf.d/mdadm
echo "options md_mod start_ro=1 start_dirty_degraded=1"  >> /etc/modprobe.d/mdadm.conf

bootdegraded=true md-mod.start_dirty_degraded=1 в строку загрузки ядра.
bootdegraded=1 тоже добавлял
Все без результата. Грузится только если при загрузке initrd остановить и заново собрать массив в init-premount

samson ★★
() автор топика
6 апреля 2015 г.

Очень интересный топик, но так и не понял чем закончилось. Костыль соорудил - полет нормальный. Но хотелось бы нативно верного решения.... Неужели нету?

По сути у меня та же проблема, настраиваю Deb Jessie:

RAID1 {sda,sdb}:
md0 {sda1,sdb1} /boot Primary
md1 {sda3,sdb3} RAID -> LVM -> {root,opt,var,data}
С двумя винтами грузится и работает прекрасно. Отрубаю один из винтов - не грузится :( /boot отрабатывает и дальше валится в initrd shell. /proc/mdstat показывает также как у тебя - оба md - inactive

Что делать?

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

CentOS/RHEL использовать. Ибо наколеночным поделкам, не загружающимся при вылете одного винта из зеркала, место либо в сортире, либо в виртуалке.

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

та любой линукс по сути своей набор миллиона и маленькой тележки костылей. rhel based разве чемто отличается? Админю парк около сотни rhel-ов разных ... както незаметил качественного отличия. Кстати, рхеловый инсталлер не позволяет LVM внутрь mdadm запихнуть :)

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

рхеловый инсталлер не позволяет LVM внутрь mdadm запихнуть

Неправда. Админю парк из ~50 centos'ей и ~100 debian'ов, и отвественно заявляю, что с 5-й по 7-ю ветки centos (и rhel, не?) X-овый инсталлятор позволяет использовать mdX как pv.

Админю парк около сотни rhel-ов разных

Сомнительно (исходя из вышесказанного). Разве что все они в виртуалках.

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

Уважаемый, здесь вопрос по делу был задан, вполне конкретный. А вы зафлудили тему никому не нужными советами где и кому что использовать.

По делу: я столкнулся с подобной проблемой, неужели ничего кроме скрипта-костыля до сих пор нет?

anonymous
()
Ответ на: комментарий от nbw

Подобные ваши советы тут тоже не нужны, проходите мимо

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