Я пытаюсь выполнить предварительную установку сервера 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
Обходной путь заключается в том, чтобы не указывать точку монтирования и делать это вручную с экранов настройки, что в некоторой степени сводит на нет цель автоматической установки.