LINUX.ORG.RU
ФорумAdmin

Centos7 Grub2 software Raid1

 , ,


1

3

Дано: два одинаковых диска 3Tb. Нужно сделать рейд 1, чтобы при вытаскивании первого sda диска автоматом грузился со второго. При прочтении множества мануалов, сложилось впечатление либо никто не проверял работоспособность того что собирают, либо оставляют на овось, и при падении диска начинают в попыхах ставить grub на оставшийся диск.

  • 1) вопрос как это сделать правильно? Заметил что при манипуляциях с графическим инсталером не получается сделать идентичные разделы, диски как то не одинаково метятся. Понимаю что можно просто поставить систему на один диск и далее поднять рейд. Минус такого решения, долгая синхронизация (до 6 часов) рейда. В идеале правильно разметить диски, поставить их в рейд и потом устанавливать систему. Диски 3 Tb значит нужен efi. разделы:
    • 1 - efi-boot 50Mb ? без рейда
    • 2 - grub 2Mb ? без рейда
    • 3 - boot 500 Mb без рейда
    • 4 - swap можно без рейда, можно в рейд 0 так как при отваливании одно диска ничего серьезного не произойдет, своп должен смотироваться автоматом в файл насколько я монимаю
    • 5 - / 32 Gb raid1

  • 2) Самый сложный пункт установка grub2 да так чтобы при отваливании sda система загрузилась. на sdb я так понимаю его надо ставить как то через chroot. То есть подмонтировать sdb прокинуть рабочии дирректории зачрутится и после этого ставить grab2 на sdb Тут еще важно понимать что так как система в рейд1 то fstab будет по умолчанию ссылаться на диск sda. И нужен альтернативный конфиг. Единственная инструкция которая похожа на правду попалась вот эта Сюда!

    Но она на centos 5

    Не ужели никто не далал ничего подобного ? На freebsd инструкцию нашел на раз два три при том еще с zfs, а тут облазил буквально все.



Последнее исправление: luk911 (всего исправлений: 2)

parted -a opt /dev/sda mklabel gpt
parted -a opt /dev/sda mkpart primary 0% 4MiB
parted -a opt /dev/sda mkpart primary 4MiB 504MiB
parted -a opt /dev/sda mkpart primary 504MiB 33272MiB
parted -a opt /dev/sda set 1 bios_grub on
parted -a opt /dev/sda set 2 raid on
parted -a opt /dev/sda set 3 raid on
аналогично для второго диска

sd{a,b}2 md0 /boot
sd{a,b}3 md1 /

grub-install /dev/sda /dev/sdb
i7
()
Ответ на: комментарий от i7

Спасибо, тут вроде все понятно, но отключив sda систем не будет грузится штатно. Сразу вылетает граб.

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

По крайней мере для Centos7 установка граба должна писаться как то так:

# grub2-install /dev/sda
# grub2-install /dev/sdb

после этого, поидеи еще надо выполнить реконфиг grub

# grub2-mkconfig -o /boot/grub2/grub.cfg

На сайте Центос раскопал такие рекомендации

Create the /etc/mdadm.conf:

# mdadm --detail --scan > /etc/mdadm.conf
Edit /etc/fstab, you must change all mounts from using UUID= to explicit device names, like /dev/md_d0p1, /dev/md_d0p2, ... Edit /etc/grub.conf, replace root=UUID=... with root=/dev/md_d0p1 (or the corresponding partition for your setup). You must also remove the kernel option rd_NO_MD (if present), otherwise no md device (RAID) will be discovered at boot time. Build the new initramfs image:
cd /boot 
mv initramfs-2.6.32-220.el6.x86_64.img initramfs-2.6.32-220.el6.x86_64.img.bak 
dracut /boot/initramfs-2.6.32-220.el6.x86_64.img 2.6.32-220.el6.x86_64

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

У меня еще вопросик часто встречал совет отступать в начале 2048 s или 1 MiB для выравнивания вроде как, знаю что -a opt будет задавать выравнивание, но совет по отступу все равно есть. По умолчанию CentOS ставится без раздела под граб или там ufi, но при этом ведь при установке куда то граб записывается. А для чего нужен этот маленький раздел в 4 мега ? И файловая система на нем нужна ? Ext2 ?

luk911
() автор топика

Во-первых, после отваливания sda, sdb станет sda (по буквам).

Работающая схема примерно такая:

1. RAID1 /boot

2. RAID1 под LVM

3. Опции, позволяющие собирать RAID в degraded

4. grub-isntall /dev/sda, grub-install /dev/sdb

Всё, после этого всё работает.

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

а вы проверяли ? вытаскивали диск ? проблема в том что fstab и в карте дисков указаны не sda а UUID. По этой же причине необходимо пересобирать initramfs. Советы у всех одинаковые, но покрайней мере на CentOs не все так просто.

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

в карте дисков указаны не sda а UUID

это где такая карта, как ее глянуть?

вытаскивали диск ?

а может у тебя биос может грузится тока с конкретно указанного устройсва, а остальное отправляет в игнор не?

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

блин я не знаю как на реальном железе, но в виртуалбоксе прописывает UUID и соответственно когда диск отключаешь, то он не грузится. Собственно поэтому и танцую с бубном. Но в манах на CentOS ведь есть все эти рекомендации.

luk911
() автор топика
Ответ на: комментарий от no-dashi

а шнурок вытаскивали от первого диска ? а то когда я второй отключаю тоже все грузится, но когда отключаешь диск на который была произведена первоначальная установка, то тут то все и вылазит.

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

Послушай, если ты что-то хочешь сказать, говори развернуто. Мысли читать я не умею. Сюда пришел за советом. Был бы умным как ты, сидел бы и ни с кем не общался.

fstab записываются UUID и судя по тому что есть how to https://wiki.centos.org/HowTos/Install_On_Partitionable_RAID1

не только в виртуалбоксе.

Если тебе не нравится чем то виртуал бокс - поясни чем.

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

у меня там все по UUID, ну собственно с этим я понял что делать.

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

Если не грузится вообще, то проблема не в fstab, до него дело не доходит, там по дороге kernel+initrd, так что UUID файловых систем здесь ни к селу ни к городу

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

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

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

хм застопорился на моменте создания raid для boot - Где то на дебиане по моему вообще не рекомендуют его создать если планируютеся загрузка системы с raid. Где то рекомендуют metadate выставлять 0.9

Grub 2 вроде должен дружить с метадата 1.2 ? И вообще нужно ли выносить этот раздел ?

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

Пусть компетентные ответят, а я с интересом слежу за темой :)

Deleted
()

Просто после инсталляции загрузись с rescue cd ; сделай chroot /sysimage; grub-install /dev/sda /dev/sdb и хоть куда там угодно, все работает , проверено

solawind
()
Ответ на: комментарий от no-dashi

А ось какая ? и не могли бы полный пример действий привести.

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

Да какие подробности? Я вообще думаю анаконда это и так делает сама, вручную написанное выполнить стоит разве чтоб для очистки совести и более крепкого сна ночью

А собственно создать зеркала и нарезать менеджер томов на них при инсталляции центос 7 элементарно делается несколькими щелчками мышкой

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

Мы не ищем легких путей :) запутался немного. Итак начинаем инсталяцию: 1) гружусь в rescue 2) удаляю на всякий таблицу разделов

dd if=/dev/zero of=/dev/sda bs=1k count=1
dd if=/dev/zero of=/dev/sdb bs=1k count=1
3) создаю разделы
parted -a opt /dev/sda mklabel gpt
parted -a opt /dev/sda mkpart primary 1MiB 5MiB
parted -a opt /dev/sda mkpart primary 5MiB 505MiB
parted -a opt /dev/sda mkpart primary 505MiB 1005MiB
parted -a opt /dev/sda mkpart primary 1005MiB -1
parted -a opt /dev/sda set 1 bios_grub on
parted -a opt /dev/sda set 2 raid on
parted -a opt /dev/sda set 3 raid on
parted -a opt /dev/sda set 4 raid on
второй диск размечаем gpt и копируем разделы с sda
parted -a opt /dev/sdb mklabel gpt
sgdisk -R /dev/sdb /dev/sda
sgdisk -G /dev/sdb

Разметка рейда: 1) Swap в reid 0 Сервер под веб и если в своп и и уйдет то при возрастании нагрузки и скорее всего это будет php и nginx соответственно малюсенькие файлы ставлю chunk=4

mdadm --create /dev/md0 --raid-devices=2 --level=0 --chunk=4 /dev/sda2 /dev/sdb2
2) раздел boot и / . Предупреждение выскакивает но все равно ставлю v 1.2 и под бут.
	1) mdadm --create /dev/md1 --raid-devices=2 --level=1 /dev/sda3 /dev/sdb3
mdadm --create /dev/md2 --raid-devices=2 --level=1 /dev/sda4 /dev/sdb4
записываем конфиг (не уверен нужно ли делать это в рескуе, так как это ж все tmp)
mdadm --detail --scan >> /etc/mdadm.conf

3) Создаем файловую систему на рейде:

mkswap /dev/md0
mkfs.ext2 /dev/md1
mkfs.xfs /dev/md1

Перезагружаюсь и через графический инсталер пытаюсь ставить систему: 1) Установщик не хочет принимать разделы и как минимум просит переформатировать файловую систему. Ок файловую систему переформатировал через граф интерфейс. Система поставилась.

Смущает то что после загрузки parted разделы на sda видит, а файловой системы не видит.

Очевидно упустил при создании рейда указать

--assume-clean
это для синхронизации рейда не разделами а поблочно, вроде как люди добрые советовали.

Что упустил на данном этапе ? что сделал неправильно ?

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

Установщик не хочет принимать разделы и как минимум просит переформатировать файловую систему.

возможно не дождался синхронизации рейда, см /proc/mdstat не очень все же понял зачем ты все это делаешь вручную, для твоей задачи графический инсталлятор все это делает и не ошибается

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

да спасибо, про синхронизацию не подумал, все быстро делал. 1) gpt не уверен в граф он афтоматом выставит ? 2) boot на рейд не ставится через граф интерфейс. 2) chunk для swap вроде задать в граф инсталере нельзя. Не критично конечно. 3) не уверен по поводу выравнивания (может конечно перестраховываюсь) 4) ну и заодно понимание как оно работает и как в случае сбоя все это поднимать обратно.

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

не уверен нужно ли делать это в рескуе, так как это ж все tmp

mdadm.conf на рескью не нужен. В рабочей системе инсталятор вроде сам всё делает.

Смущает то что после загрузки parted разделы на sda видит, а файловой системы не видит.

ФС у тебя на mdX, на sda у тебя рэйд. parted фс на нём и не должен видеть. Если в mount примонтированы mdX, то всё ок.

cat /proc/mdstat показывает, всё ли впорядке с рэйдами (в том числе и синхронизацию, которая должна завершится, если идёт).

После загрузки в рабочую систему grub2-install на оба диска и grub2-mkconfig.

Хочешь грузиться с efi с зеркалирванного esp - вот инструкция.

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

Спасибо большое. Да я понял fstab переделаю на mdX (сейчас там UUID так инсталлер прописал.) после этого отредактировать /etc/grub2.cfg заменить root=UUID=... на root=/dev/md.. Проверить и убрать rd_NO_MD если есть.

grub2-install /dev/sda
grub2-install /dev/sdb
grub2-mkconfig -o /boot/grub2/grub.cfg

cd /boot 
mv initramfs-2.6.32-220.el6.x86_64.img initramfs-2.6.32-220.el6.x86_64.img.bak 
dracut /boot/initramfs-2.6.32-220.el6.x86_64.img 2.6.32-220.el6.x86_64

Правильно понимаю ?

С efi тоже запутался, для больших дисков я так понял нужно чтоб раздел был gpt и этого достаточно. Efi нужен для винды я так понял или в каких то особых случаях ?

luk911
() автор топика

О чудо. Сделал все по шагам как писал. Не стал править UUID в fstab и /etc/grub2.cfg и не сатл пересобирать initramfs.

сделал только grub2-install /dev/sda grub2-install /dev/sdb grub2-mkconfig -o /boot/grub2/grub.cfg

Вытащил sda и перезагрузился. Думал он дольше чем обычно, запустил initramfs, но в результате загрузился.

Итак причина предыдущих неудач может быть либо в том что до этого через графичиский инсталлер не делал отдельный раздел под grub на обойх дисках. Либо в том что boot был xfs. Встречал на форумах и отсылки и на то и на другое.

Вопрос то что он значительно дольше грузится без первого диска, это нормально ? Я так понимаю так и должно быть, проверки там какие то.

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

C uuid'ами всё ок. Лучше оставить их, они надёжнее.

Думать дольше он мог из-за того, что не смог собрать рэйды. Пытался.

С efi тоже запутался, для больших дисков я так понял нужно чтоб раздел был gpt и этого достаточно.

Вполне достаточно. efi - это просто альтернатива bios'у. Кроме secureboot'а и возможности загрузки без grub'а особых преимуществ у него нет.

Ivan_qrt ★★★★★
()

Делал так (диски поменьше, но идея понятна; /dev/sd[ab]1, естественно, не в RAID; /dev/sda1 - /boot; /boot - ext[234]):

umount /dev/sda1
umount /dev/sdb1
dd if=/dev/sda1 of=/dev/sdb1 bs=4M
tune2fs -U random /dev/sdb1
mount /dev/sda1
mount /dev/sdb1 /mnt/bkboot

По поводу 1) - 4 --- чёооо?

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

не делал отдельный раздел под grub на обойх дисках.

без отдельного раздела все чудесно работает.

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

хм, и вправду получилось завести и без всего этого сложного пути. Собственно первоночально проблема была в том, что в граф инсталере не получалось сделать рейд 1 для бут (расскажу ниже как его сделать). Соответственно просто ставил бут на два диска без рейда. А тут и получал засаду, так как прописывался uuid первого диска, а не рейд массива. И вот тогда все эти пляски с бубном нужны в том числе и пересборка initramfs.

Сейчас завел и попростому. Дело в том, что при старте граф инсталлера выбирал стандартную разметку. Так вот первой идет бут с него и начинаем. Пытаемся поставить его на рейд 1, инсталлер ругается и не дает этого сделать, возвращая его в обычное состояние. Для того чтобы это сделать, нужно сначала в рейд поставить / основной раздел, а потом пытаться поменять boot на рейд один. Видимо это глюк инсталлера.

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

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

Да, и кстати если удалось в граф инсталлере выставить boot в рейд один то не нужно отдельно ставить граб на sdb. Инсталлер сам все поставит как надо.

luk911
() автор топика

заметил и еще одну интересную вещь, по умолчанию при создании рейда для бут граф инсталлер использует протокол для суперблоков версия 1. Хотя как я уже писал выше я ставил и 1.2 и все работает.

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