Загрузчик Grub про RAID ничего не знает. Но если его установить в MBR каждого диска, то работать будет.
Загрузчик Lilo знает про RAID уровней 0 и 1, соответственно умеет с них загружать систему.
Тома LVM желательно размещать поверх RAID уровней 1 или 5. В случае смерти диска, у тома есть неплохой шанс остаться в целости и сохранности.
В процессе установки очень нежелательно размещать корневую ФС на половинке зеркала, иначе загрузки с половинки зеркала придется применять бубен.
Инсталляция
Основная идея такова:
Корневая ФС должна быть на целом зеркале, потом не придется плясать с прописыванием загрузчика на вторую половинку зеркала.
Поскольку инсталлятор не умеет делать LVM поверх MD, приходится временно размещать /usr и /var на свободном пространстве одного из дисков. Но, если инсталлятору подсунуть уже созданный LVM поверх MD, то становится возможным рулить томами LVM.
Разбиение дисков
Предположим что два наших диска определились как sda и sdb.
Диск sda разобъем на два раздела:
sda1 размером в 250 МБ. Тип раздела устанавливаем в FD.
sda2 размером в оставшееся свободное пространство на диске. Тип раздела устанавливаем в FD.
Диск sdb разобъем на шесть разделов:
sdb1 размером в 250 МБ. Тип раздела устанавливаем в FD.
sdb5 размером в 1 ГБ. Здесь временно будет жить /usr.
sdb6 размером в 1 ГБ. Здесь временно будет жить /var.
sdb7 размером в 1 ГБ. Здесь временно будет жить /home.
sdb8 размером в 250 МБ. Здесь временно будет жить /tmp.
sdb9 размером в 250 МБ. Здесь временно будет жить /var/tmp.
Разделы sda1 и sdb1 объединим в RAID1 и назовем его md0. На нем будет жить корневая ФС.
Монтируем разделы
Форматируем разделы в XFS и монтируем их следующим образом:
md0 в /.
sdb5 в /usr.
sdb6 в /var.
sdb7 в /home.
sdb8 в /tmp.
sdb9 в /var/tmp.
Инсталляция системы и перезагрузка
Устанавливаем систему как обычно.
При установке загрузчика может вылезти окошко с багой про какие-то там хеши, это приведет к следующим неприятностям:
Не создается initrd для устанавливаемого ядра (up или smp – без разницы), получаем после перезагрузки «Не могу смонтировать корневую ФС».
Для Lilo не создается /etc/lilo.conf.
Для Grub не создается /boot/grub/menu.lst.
Эта бага появляется при установке на SATA (через libata). Бага стабильная, у меня она вылезла уже на четырех инсталляциях.
Настройка
Если не получается загрузится в первый раз (обычно при этом нет образа initrd), то загружаетесь с болванки в режиме rescue и с помощью chroot /mnt попадаете в систему.
Установка загрузчика
Создаем /etc/lilo.conf со следующим содержимым:
Затем тестируем конфигурацию:
И устанавливаем загрузчик:
Внимание
Для XFS загрузчик прописывается только в MBR, иначе убьем ФС. У XFS с самого начала раздела лежит суперблок, загрузчик писать некуда.
Настройка MD
Создаем /etc/raidtab со следующим содержимым:
Внимание
Раздела sdb2 еще нет (на его месте лежат временные разделы), поэтому md1 будет создан в виде половинки зеркала. failed-disk нужен для правильного создания md1.
Создаем md1 в виде половинки зеркала:
Делаем неактивными две строки в /etc/raidtab:
Проверяем состояние md0 и md1 следующим образом:
Зеркало на md0 должно быть целым, а на md1 в виде половинки.
Пересоздание initrd
Может случится так, что при установке не был сгенерирован initrd. Да и лишний раз не помешает его пересоздать вручную, так спокойнее будет.
В нашем случае структура linuxrc внутри initrd должна быть следующей:
Загрузка дисковых модулей
Загрузка модулей RAID
Загрузка модулей для корневой ФС
В конце linuxrc должна быть такая команда /bin/raidautorun /safedev/md255. Иначе не взлетим.
При создании initrd есть возможность залесть во внутрь образа и что-нибудь в нем поправить. Для этого существует ключ --pause у mkinitrd.
Создаем initrd следующим образом:
Обновляем пакет startup
Берем из backports пакет startup (надо не забыть его туда положить) и обновляем существующий в системе.
Почему так? Причины просты:
Необходим запуск MD и LVM в правильном порядке и в нужное время.
При остановке системы необходимо деактивировать тома LVM.
Необходимо деактивировать все MD кроме одного, на котором лежит корневая ФС.
Перезагружаемся
Перезагружаемся в режиме single. Для этого в промпте lilo говорим следующее:
Заходим в систему рутом и приступаем к созданию LVM.
Создание LVM
Исходные данные следующие:
Том будет называться lvm0.
Жить том будет на /dev/md1.
Сначала проинициализируем lvm:
Затем создадим PV:
Создаём том lvm0 (вообще-то это группа томов aka VG, но так короче):
Теперь lvm0 необходимо распилить на кусочки.
Распиливаем lvm0
Нам надо перенести инфу с временных разделов на lvm0.
Я делаю так (для серверов достаточно):
Под /usr – 1G
Под /var – 1G
Под /home – 1G
Под /tmp – 250M
Под /var/tmp – 250M
Распиливаем lvm0:
Создаем на получившихся разделах ФС (у меня XFS):
Переносим инфу с временных разделов
Для переноса необходимо смонтировать наши новые разделы куда-нибудь. Пусть это будет /root/fake-root:
Теперь перенесем нужное. Переносим с помощью cpio. Примерно так:
Правим права на /tmp и /var/tmp
Отмонтируем разделы:
Перемонтируем новые разделы взамен временных
Если всё нормально, то меняем ///etc/fstab/:
Превращаем /dev/md1 в полноценное зеркало
С sdb сносим все разделы кроме sdb1*. Затем на освободившемся месте создаем sdb2 равный по объему sda2. Тип раздела sda2** устанавливаем в FD.
Всё это можно сделать с помощью fdisk.
После чего будет предложено перезагрузится для перечитывания таблицы разделов на sdb.
Перезагружаемся обратно в single.
Убираем комментарии у двух строк в /etc/raidtab:
Запускаем ресинхронизацию на /dev/md1 и ждем:
В процессе синхронизации, sdb2 будет виден как spare disk. По окончанию синхронизации он перейдет в online.
Процесс синхронизации можно посмотреть несколькими способами:
Ссылки
/Alt Linux / Dokumentacija / Rabota S Diskami / LVMSOFTRAID 1