воскресенье, 15 октября 2017 г.

Совместное использование expert_recipe, mdraid, LVM, GPT и GRUB2 в Ubuntu Lucid и Debian Squeeze

Перевод: Get expert_recipe, mdraid, LVM, GPT and grub2 Playing Together on Ubuntu Lucid and Debian Squeeze
Автор: Эндрю Гамильтон (Andrew Hamilton)

Жёсткие диски растут и растут. Теперь можно взять жёсткие диски на 3 терабайта и получить по огромному хранилищу на каждом сервере. Но тогда можно заметить, что текущие файлы автоматизации установки не работают, завершаясь аварийно на попытке установить GRUB2. Если нажать "Alt-F4", чтобы проверить журнал ошибок, то можно увидеть ошибки о том, что GRUB2 невозможно встроить в диск GPT.

Когда размер диска достигает 2 терабайт, установщик Debian и менеджер разделов partman по умолчанию используют разбивку разделов по схеме GPT. К несчастью старые версии partman неправильно настраивают GPT, если диски являются частью программного RAID-массива. К счастью, исправить это не так сложно, нужно только добавить несколько директив (или, возможно, поменять их, если некоторые из них уже используются в вашем файле автоматизации установки).

Что нам нужно - это добавить раздел, который не создают подобающим образом старые версии менеджера разделов partman. Этот раздел имеет тип bios_grub и должен иметь размер 1 мегабайт. Этот раздел позволяет GRUB2 найти место для размещения всего загрузчика и позволяет BIOS найти загрузочную информацию GRUB для загрузки загрузчика. Более подробную информацию о загрузочном разделе BIOS можно найти в Wikipedia – BIOS Boot Partition (Загрузочный раздел BIOS).

Чтобы добавить раздел bios_grub в файл автоматизации установки при помощи менеджера разделов partman, мы добавим к нашему рецепту expert_recipe следующее:
1 1 1 free \
            $iflabel{ gpt } \
            method{ biosgrub } \
        . \
Эти настройки добавят раздел размером 1 мегабайт с высшим приоритетом. Если метка диска имеет значение "GPT", то раздел будет создан методом biosgrub.

Поскольку мы добавили к диску ещё один раздел, также нужно будет увеличить на единицу номера всех разделов, используемых в RAID-массивах. Например, если сначала в файле автоматизации установки использовались следующие настройки RAID:
d-i partman-auto-raid/recipe string \
    1 2 0 ext3 /boot /dev/sda1#/dev/sdb1 \
    . \
    1 2 0 lvm - /dev/sda2#/dev/sdb2 \
    .
То теперь нам нужно отредактировать эту запись и увеличить номера разделов на единицу:
d-i partman-auto-raid/recipe string \
    1 2 0 ext3 /boot /dev/sda2#/dev/sdb2 \
    . \
    1 2 0 lvm - /dev/sda3#/dev/sdb3 \
    .
Полностью настройки диска в новом файле автоматизации установки будут выглядеть следующим образом:
d-i partman-auto/disk string /dev/sda /dev/sdb
d-i partman-auto/method string raid
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-auto/purge_lvm_from_device boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-md/confirm_nochanges boolean true
d-i partman-lvm/confirm boolean true
d-i partman-auto/choose_recipe select boot-root
d-i partman-auto-lvm/new_vg_name string vg01
d-i partman-auto-lvm/guided_size string 100%
d-i partman-auto-raid/recipe string \
    1 2 0 ext3 /boot /dev/sda2#/dev/sdb2 \
    . \
    1 2 0 lvm - /dev/sda3#/dev/sdb3 \
    .
d-i partman-auto/expert_recipe string \
    boot-root :: \
        1 1 1 free \
            $iflabel{ gpt } \
            method{ biosgrub } \
        . \
        256 10 256 raid \
            $lvmignore{ } \
            $primary{ } \
            method{ raid } \
        . \
        1000 20 1000000 raid \
            $lvmignore{ } \
            $primary{ } \
            method{ raid } \
        . \
        150% 30 150% swap \
            $defaultignore{ } \
            $lvmok{ } \
            lv_name{ lv_swap } \
            method{ swap } \
            format{ } \
        . \
        20480 40 20480 ext4 \
            $defaultignore{ } \
            $lvmok{ } \
            lv_name{ lv_root } \
            method{ format } \
            format{ } \
            use_filesystem{ } \
            filesystem{ ext4 } \
            mountpoint{ / } \
        . \
            1 50 -1 ext4 \
            $defaultignore{ } \
            $lvmok{ } \
            lv_name{ lv_dummy } \
        .
d-i mdadm/boot_degraded boolean true
d-i partman-md/confirm boolean true
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select Finish partitioning and write changes to disk
d-i partman/confirm boolean true
d-i partman-md/confirm_nooverwrite boolean true
d-i partman/confirm_nooverwrite boolean true
Ищете подробности об использовании expert_recipe в файлах автоматизации установки? Посмотрите другую статью в моём блоге, где описано больше подробностей - Заметки по использованию expert_recipe в файлах автоматизации установки Debian/Ubuntu.

1 комментарий:

Unknown комментирует...

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


sda 8:0 0 931,5G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 500M 0 part /boot
└─sda3 8:3 0 931G 0 part
└─md0 9:0 0 930,9G 0 raid1
├─vg0-swap 253:0 0 16G 0 lvm [SWAP]
└─vg0-lv--0 253:1 0 500G 0 lvm /
sdb 8:16 0 931,5G 0 disk
├─sdb1 8:17 0 500M 0 part
└─sdb2 8:18 0 931G 0 part
└─md0 9:0 0 930,9G 0 raid1
├─vg0-swap 253:0 0 16G 0 lvm [SWAP]
└─vg0-lv--0 253:1 0 500G 0 lvm /