LINUX.ORG.RU

Загрузка Linux с корнем на RAID

 , , , ,


0

2

Здравствуйте,
пишу сюда маленький отчет о том, что получилось: дано: платформа в ДЦ, там 1 SSD и 2 HDD

ls /dev/disk/by-id/
scsi-SATA_OCZ-VERTEX3_OCZ-SR1JY2829D281969
scsi-SATA_TOSHIBA_DT01ACA_15354TTGS
scsi-SATA_WDC_WD3000FYYZ-_WD-WCC133RT47RK
цель: установить на зеркало из 2-х HDD систему так, чтобы даже в случае если из сервера вынут SSD и один HDD, система могла бы быть загружена и работать.
Решений в интернете много, но мне в этих решениях не нравилось собирать массив из разделов дисков (/dev/sd[bc]1), а не из самих дисков (/dev/sdb, /dev/sdc). Получается так, что после замены диска в массиве нужно будет вспоминать как был разбит бывший, создавать разделы на новом и добавлять созданные разделы в рейд руками. Не буду утомлять пересказом множества инструкций на тему как установить систему на один диск, а потом перетащить её на софт-рейд.
Перейду сразу к трудности: когда диски больше 2TB зеркало может иметь суперблок с метаданными версии 1.2 и не может версии 0.9. Старое ядро не умеет работать с метаданными 1.2.
Решение:
1) в initrd добавил модулей и вызов mdadm для сборки массива до монтирования рута.
2) суперблок начинается по смещению 4К от начала диска, GPT таблица разделов рейда начинается с 34К, а по смещению 0 у нас нули, легси биос не видит ни одного загрузочного устройства, если не специального раздела с каталогом /boot
Загрузчиком ОС выступает Extlinux (Syslinux), а он свой код хранит в разделе с ОС.
Решение получилось такое: рисуем на обоих дисках по смещению 0 mbr с единственным разделом (который первый в md-рейд, в котором /boot) и добавляем загрузочный код от Syslinux 440 байт. Пришлось в ручную считать новое смещение раздела (с учетом суперблока md-рейда и GPT) оно получилось 2320 секторов (первый раздел в рейде имеет смещение 2048) и пользоваться давно забытыми инструментами.
Работает.

Зачем тебе старое ядро?

anonymous
()

вспоминать как был разбит бывший

они же одинаковые

Нагородил всего. Есть причина не использовать grub2 и новое ядро с оптимизациями для SSD и с LVM dm-raid, LVM dm-cache?

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

grub2 не нужен, LVM не нужен. Платформа давно не обновлялась, проект заброшен, а у меня много обвеса написано под неё.

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

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

anonymous
()

Мы на LOR долго и интенсивно размышляли над этой темой - и нашли более простое и удобное решение. Его суть заключается в использовании суперблока версии 1.0.

Как уменьшить количество секторов на HDD?
Какими командами сделать RAID на часть диска?
Как установить GRUB рядом с RAID1?
Как установить GRUB на RAID1?
Кто и как вычисляет положение суперблока?
Какой точный размер у разных HDD??
mdadm --bitmap=internal - как она работает?
Как загрузиться с RAID?

ZFS - в чём от неё профит?

Einstok_Fair ★★☆
()
Последнее исправление: Einstok_Fair (всего исправлений: 1)
Ответ на: комментарий от Einstok_Fair

Спасибо, прочитал все.
В моем варианте данные gpt не наедут на данные суперблока, потому как gpt сделана в зеркале, после суперблока. Поскольку данные gpt в конце зеркала, а это в конце диска, то утилиты разметки (gdisk) работая с /dev/sdb видят «порченную» gpt, битую в начале и кривую в конце - ну да зная архитектуру, я просто не буду на это обращать внимание.
mbr и легси биос нормально видят двинутый загрузочный раздел в 200G, но писать в него ничего не собираются - поэтому данные на зеркале всегда будут записываться через устройство /dev/md127 и всегда будут согласованы.
Вот только mbr, вероятно придется копировать при замене диска - да посмотрим. Вдруг алгоритмы зеркалирования возьмут блок начиная с сектора 0.

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

Вдруг алгоритмы зеркалирования возьмут блок начиная с сектора 0.

не возьмут, проверили же (может я не все ссылки запостил?). Чтобы взяли - нужно делать не твой вариант, а наш вариант.

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