Назад | Перейти на главную страницу

Предварительная загрузка рецепта Ubuntu partman с использованием LVM и RAID

Я пытаюсь выполнить предварительную установку сервера Ubuntu 12.04 и создал рецепт, который будет создавать RAID 1 на 2 дисках, а затем разбивать его с помощью LVM. К сожалению, при создании томов LVM partman жалуется, что в рецепте нет разделов, которые можно было бы использовать с LVM (в консоли он жалуется на непригодный рецепт).

Макет, который мне нужен, - это RAID 1 на sdb и sdc (установка с USB-накопителя, поэтому требуется sda), а затем использование LVM для создания загрузки, root и swap.

Странно то, что если я изменю точку монтирования boot_lv на home, рецепт будет работать нормально (кроме монтирования в неправильном месте), но при монтировании в / boot он не работает

Я знаю, что могу использовать отдельный / загрузочный основной раздел, но может ли кто-нибудь сказать мне, почему он не работает. Рецепт и соответствующие варианты ниже.

## Partitioning using RAID
d-i     partman-auto/disk string /dev/sdb /dev/sdc
d-i     partman-auto/method string raid
d-i     partman-lvm/device_remove_lvm boolean true
d-i     partman-md/device_remove_md boolean true
#d-i     partman-lvm/confirm boolean true
d-i     partman-auto-lvm/new_vg_name string main_vg
d-i partman-auto/expert_recipe string           \
    multiraid ::                    \
        100 512 -1 raid         \
            $lvmignore{ }           \
            $primary{ }         \
            method{ raid }          \
        .                   \
        256 512 256 ext3            \
            $defaultignore{ }       \
            $lvmok{ }           \
            method{ format }        \
            format{ }           \
            use_filesystem{ }       \
            filesystem{ ext3 }      \
            mountpoint{ /boot }     \
            lv_name{ boot_lv }      \
        .                   \
        2000 5000 -1 ext4           \
            $defaultignore{ }       \
            $lvmok{ }           \
            method{ format }        \
            format{ }           \
            use_filesystem{ }       \
            filesystem{ ext4 }      \
            mountpoint{ / }         \
            lv_name{ root_lv }      \
        .                   \
        64 512 300% linux-swap          \
            $defaultignore{ }       \
            $lvmok{ }           \
            method{ swap }          \
            format{ }           \
            lv_name{ swap_lv }      \
        .

d-i partman-auto-raid/recipe string \
    1 2 0 lvm -                     \
          /dev/sdb1#/dev/sdc1       \
    .                               
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 

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

## Partitioning using RAID
# The method should be set to "raid".
d-i     partman-auto/method string raid
# Specify the disks to be partitioned. They will all get the same layout,
# so this will only work if the disks are the same size.
d-i     partman-auto/disk string /dev/sda /dev/sdb

d-i     partman-lvm/device_remove_lvm boolean true
d-i     partman-md/device_remove_md boolean true
d-i     partman-lvm/confirm boolean true
d-i     partman-auto-lvm/new_vg_name string main_vg

# Next you need to specify the physical partitions that will be used. 
d-i partman-auto/expert_recipe string           \
    multiraid ::                    \
        256 512 256 raid            \
            $lvmignore{ }           \
            $primary{ }         \
            method{ raid }          \
            raidid{ 1 }         \
        .                   \
        4000 5000 -1 raid           \
            $lvmignore{ }           \
            method{ raid }          \
            raidid{ 2 }         \
        .                   \
        2000 5000 -1 ext4           \
            $defaultignore{ }       \
            $lvmok{ }           \
            method{ format }        \
            format{ }           \
            use_filesystem{ }       \
            filesystem{ ext4 }      \
            mountpoint{ / }         \
            lv_name{ root_lv }      \
        .                   \
        512 512 300% linux-swap         \
            $defaultignore{ }       \
            $lvmok{ }           \
            method{ swap }          \
            format{ }           \
            lv_name{ swap_lv }      \
        .


# Last you need to specify how the previously defined partitions will be
# used in the RAID setup. Remember to use the correct partition numbers
# for logical partitions. RAID levels 0, 1, 5, 6 and 10 are supported;
# devices are separated using "#".
# Parameters are:
# <raidtype> <devcount> <sparecount> <fstype> <mountpoint> \
#          <devices> <sparedevices>

d-i partman-auto-raid/recipe string         \
    1 2 0 ext3 /boot                \
        raidid=1                \
    .                       \
    1 2 0 lvm -                 \
        raidid=2                \
    .



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 

После небольшого поиска в Google я нашел ниже фрагмент кода из partman-auto-lvm, кажется, что если lvm recipe обнаруживает раздел / boot на LVM, он выйдет из строя, хотя вполне возможно иметь / boot на LVM. Согласно моим исследованиям, до GRUB 2 вы не могли загружаться с LVM, поэтому вам нужен был отдельный основной загрузочный раздел.

# Make sure a boot partition isn't marked as lvmok
if echo "$scheme" | grep lvmok | grep -q "[[:space:]]/boot[[:space:]]"; then
     bail_out unusable_recipe
fi

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