Загрузка на разваленном mdadm-RAID массиве

Типичным решением для создания отказоустойчивых систем является установка корня Linux на зеркальный RAID. Это решение позволяет защитить как данные на корневом разделе, так и возможность загрузки в случае отказа одного из дисков.

В случае использования для этой цели mdadm настройка массива производится ещё при установке. К сожалению, установщик Debian ставит загрузчик grub только на первый (hd0) из физических дисков, второй при этом остается незагрузочных (хотя и зеркалирует данные). Если разметка диска делается через GPT, то стандартная команда grub-install /dev/sdb хотя и прописывает загрузчик на второй диск, но загрузочным разделом все равно указывает hd0, а значит система без hd0 не грузится и задача резервирования загрузчика проваливается.

Для резервирования нужно на каждом из физических дисков прописать в качестве загрузочного раздела — раздел с того же физического диска. Штатным путем в grub-install указать загрузочный раздел не получается, но можно пойти следующим обходным путем. Изначально по установке ОС имеет корректный загрузчик на /dev/sda (hd0), и этот загрузчик указывает на тот же hd0. Сделаем то же для sdb. Это можно сделать "обманув" grub-install. А именно:

  1. Создаем с помощью grub-mkdevicemap файл /boot/grub/device.map.
  2. Подменяем в device.map диски (hd0) и (hd1) местами так, чтобы (hd0) теперь указывал на /dev/sdb.
  3. Делаем grub-install /dev/sdb.
  4. Удаляем device.map (или, в качестве альтернативы, прописываем в нем (hd0) на оба диска sda и sdb).

Всё! В результате при отказе любого из загрузочных sda или sdb система загрузится с массивом в degraded-режиме, но полностью сохранит работоспособность.

Добавить комментарий

Ваш e-mail не будет опубликован.