6 июл. 2014 г.

GRUB2 на MDRAID+LVM разделе

И снова пара слов о GPT и Linux. Как оказалось, по-прежнему не все так просто с этой парочкой, особенно в случае не самой стандартной установки ОС (с другой стороны, далеко и не самой нестандартной =) ). Думаю, большинство свежих инсталляторов (за все не поручусь, но дебиановский точно) уже научилось правильно размечать жесткие диски размером более 2 Tb как с точки зрения Advanced Format (aka 4k-cluster), так и со стороны создания GPT-таблицы разделов вместо MBR. 
В моем случае установщик Debian Wheezy не смог справиться с установкой GRUB2 на диск, размеченный под LVM поверх MD RAID. Мне не нравится создавать несколько md-устройств при установке под разные цели (/boot, /, etc), поэтому более красивым и гибким решением видится создание одного раздела размером с диск на каждом из устройств и объединение их в md-устройство, поверх которого уже нарезать тома для операционной системы.
Так вот, оказалось, что создать все это безобразие (корректно создать sda1 и sdb1; объединить их в md0_mdraid1; создать lvm vg на md0; создать lv внутри vg; отформатировать созданные тома в нужную fs и установить туда debian) установщику по силам, а финальный аккорд - установка grub2 - нет. Текст ошибки уже забылся, но общая идея недовольства загрузчика была в том, что в предложенной конфигурации (загрузка с md-устройства и lvm-тома) необходимо встраивание загрузчика (установка в sda1 а не в sda), что в случае с GPT-таблицей разделов невозможно. Как-то так.
Пока я искал решение этой проблемы, несостоявшуюся установку я затер, поэтому процесс далее включает в себя разметку диска и создание md-устройства. Однако предполагаю, что можно было бы обойтись и без этого, оставив-таки большую часть ручной работы инсталлятору.
Итак, во-первых, спасибо автору этого материала за вдохновение (а именно, за четкое представление того, что нужно сделать) .
Общая идея - с помощью умеющих работать с gpt-таблицей утилит (gdisk, sfdisk, parted) нужно создать маленький раздел (1Mb за глаза, и примерно столько остается неразмеченного пространства при создании первого раздела установщиком дебиана, поэтому я выше упоминал об упрощении ручной работы), который должен иметь тип BIOS boot partition (Code: EF02). При создании помним об Advanced Format (кратко: раздел должен начинаться с номера сектора, кратного 8). Далее размечаем диск согласно желаниям (все еще помня про 4k-кластеры). 
Полезная команда: разметив один диск (sda), можно полностью скопировать таблицу разделов на другой такой же(sdb):
sgdisk -R=/dev/sdb /dev/sda 
Чтобы после этого идентификаторы диска не оказались идентичными, еще одно действие:

sgdisk -G /dev/sdb
Собственно, и все. При такой разметке GRUB2 сможет установиться в этот boot-partition и оттуда загрузить себя и все остальное. Далее в статье идут примеры создания md-устройства и разметка lvm-томов. Можно сделать, а можно топать в инсталлятор (ибо вышеописанные действия скорее всего придется делать до момента начала установки с live-cd, например, GParted или CloneZilla). 
Если же предложенные действия делаются после свалившегося на установке загрузчика инсталлятора (с того же live-cd), то, полагаю, можно попробовать сразу установить GRUB2 на диски:
grub-install /dev/sda
grub-install /dev/sdb
Ставим на оба, так как в случае mirror при выпадении одного из дисков (обычно установщик ставит GRUB2 только на первый диск), на котором GRUB2 был установлен, мы не сможем загрузиться.