Как настроить RAID + 2 объема LVM через предварительное семя?

Внутренне, мы используем Ubuntu (14.04 Надежных людей) на наших рабочих станциях, и до сих пор мы сделали все наши сборки вручную, включая создание RAID/LVM/LUKS-encrypted объемов. Это не масштабируется, и я теперь работаю для автоматизации некоторых наших процессов для сокращения суммы "рук" на участие, требуемое создавать новую рабочую станцию.

Наша конфигурация жесткого диска следующие:

  • /dev/sda И/dev/sdb являются и Жесткими дисками на 1 ТБ, разделенными тождественно, и СОВЕРШИЛИ РЕЙД
    • Раздел на 1 ГБ с RAID 1, содержащим ext4 файловая система, смонтированная как / начальная загрузка
    • Остаток от RAID 1 диска, содержащего LVM PV/VG (vg_raid)
      • LV на 8 ГБ для области подкачки
      • Остаток от пространства - LV, содержащий ext4 файловая система, смонтированная как /
  • /dev/sdc SSD на 128 ГБ
    • Единственный раздел, содержащий LVM PV/VG (vg_ssd)
    • Единственный LV, использующий все свободное пространство, содержащее ext4 файловую систему, которая смонтирована в/ssd

Разделенный таким образом у нас есть большая, избыточная, корневая файловая система для общего хранения данных и меньший раздел, в который файлы, которые являются чувствительной скоростью ввода-вывода, могут быть помещены (например, базы данных MySQL).

Я пытаюсь копировать это в partman expert_recipe со связанной конфигурацией так, чтобы это могло быть создано установщиком Ubuntu. Мой основной вопрос - то, что, кажется, нет (работа?) механизм в partman рецепте "язык", чтобы указать, что определенный LV должен быть создан в определенной colume группе, и какие физические тома LVM присвоены каждой группе объема. У меня была более ранняя версия этой конфигурации, работающей, не пытаясь разделить/форматировать/монтировать любые объемы на /dev/sdc, но как только дополнительный диск "не-RAID" включен, я, может казаться, не выражаю то, что я хочу в partman рецепте.

Соответствующая часть моего preseed.cfg файла следующие:

d-i partman-auto/disk string /dev/sda /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-lvm/confirm_nooverwrite boolean true
d-i partman-auto-lvm/new_vg_name string vg_raid vg_ssd
d-i partman-auto-lvm/guided_size string max
d-i partman-auto/expert_recipe string                              \
      boot-root ::                                                 \
              512 10 1024 raid                                     \
                      $primary{ } $lvmignore{ } $bootable{ }       \
                      method{ raid }                               \
                      device{ /dev/sda /dev/sdb }                  \
                      vg_name{ vg_raid }                           \
              .                                                    \
              4096 20 -1 raid                                      \
                      $primary{ } $lvmignore{ }                    \
                      method{ raid }                               \
                      device{ /dev/sda /dev/sdb }                  \
              .                                                    \
              2048 20 -1 lvm                                       \
                      $primary{ }                                  \
                      $defaultignore{ }                            \
                      method{ lvm }                                \
                      device{ /dev/sdc }                           \
                      vg_name{ vg_ssd }                            \
              .                                                    \
              8192 100 -1 ext4                                     \
                      $defaultignore $lvmok{ }                     \
                      in_vg{ vg_raid }                             \
                      lv_name{ lv_root }                           \
                      method{ format } format{ }                   \
                      use_filesystem{ } filesystem{ ext4 }         \
                      mountpoint{ / }                              \
                      device{ /dev/sda /dev/sdb }                  \
              .                                                    \
              4096 100 100% linux-swap                             \
                      $defaultignore $lvmok{ }                     \
                      in_vg{ vg_raid }                             \
                      lv_name{ lv_swap }                           \
                      method{ swap } format{ }                     \
                      device{ /dev/sda /dev/sdb }                  \
              .                                                    \
              2048 100 -1 ext4                                     \
                      $defaultignore $lvmok{ }                     \
                      method{ format } format{ }                   \
                      use_filesystem{ } filesystem{ ext4 }         \
                      device{ /dev/sdc }                           \
                      in_vg{ vg_ssd }                              \
                      lv_name{ lv_ssd }                            \
                      mountpoint{ /ssd }                           \
              .                                                    \
d-i partman-auto-raid/recipe string                              \
    1 2 0 ext4 /boot  /dev/sda1#/dev/sdb1                    .   \
    1 2 0 lvm  -      /dev/sda2#/dev/sdb2                    .
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman-lvm/confirm boolean true
d-i partman-md/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i partman-md/confirm_nooverwrite boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman/mount_style select label

Вы отметите, что я попытался быть довольно конкретным, о котором должны быть помещены разделы/объемы, на которых дисках, но partman, кажется, не соблюдает по крайней мере часть той конфигурации. Я также сохранил минимальные размеры тома довольно небольшими, в то время как я тестирую эту конфигурацию на VM. Когда я выполняю установку с этой конфигурацией на VirtualBox VM с дисками меньшего размера, установка перестала работать с сообщением об ошибке:

Error while setting up RAID
An unexpected error occurred while setting up a preseeded RAID configuration.

Check /var/log/syslog or see virtual console 4 for the details.

Соответствующий раздел из системного журнала следующие:

Jan 13 02:41:54 md-devices: mdadm: No arrays found in config file or automatically
Jan 13 02:41:54 partman:   No matching physical volumes found
Jan 13 02:41:54 partman:   Reading all physical volumes.  This may take a while...
Jan 13 02:41:54 partman:   
Jan 13 02:41:54 partman: No volume groups found
Jan 13 02:41:54 partman: 
Jan 13 02:41:54 partman-lvm:   
Jan 13 02:41:54 partman-lvm: No volume groups found
Jan 13 02:41:54 partman-lvm: 
Jan 13 02:41:56 partman-auto: Available disk space (4294) too small for expert recipe (4608); skipping
Jan 13 02:41:57 kernel: [   91.295036] Adding 2095100k swap on /dev/sdc5.  Priority:-1 extents:1 across:2095100k FS
Jan 13 02:41:57 partman: mke2fs 1.42.9 (4-Feb-2014)
Jan 13 02:41:57 apt-install: Queueing package mdadm for later installation
Jan 13 02:41:57 partman-auto-raid: Error: No recipe specified in partman-auto-raid/recipe

Я подозреваю, что строка, 4-я от нижней части, является самой релевантной, поскольку Вы видите, что partman шел вперед и создал область подкачки на /dev/sdc, который не был тем, что я хотел.

Я попробовал много изменений того, как указаны разделы. Я Погуглил много для условий версий, касающихся partman рецепты, и предварительно отбираю в целом, и я не могу найти каноническую ссылку для различных параметров конфигурации в рецепте и почему они применимы. Я нашел много примеров RAID, и много примеров LVM, но ничто, что смешивает два в способе, которым я пытаюсь использовать их. Этот поток из debian-пользовательского списка рассылки предполагает, что то, что я хочу сделать, не возможно, и которые, кажется, отслеживают с моим впечатлением, что partman языку рецепта не потребовали, чтобы инструменты описали то, чего я пытаюсь достигнуть.

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

4
задан 13 January 2015 в 07:59

1 ответ

Используя файл перед семенем для создания raid+lvm хитро. В основном Вы не можете создать гибкий конфигурационный файл с помощью предварительного семени. Это не просто и поток как запущение в RedHat/CentOS.

Для меня я должен был создать пользовательские команды с помощью preseed_early синтаксис. Можно измениться, как Вам угодно расценивает конфигурацию. Главная цель состоит в том, чтобы создать RAID-массив, прежде чем partitioner запустится. Демон установки будет как Вы, что никакой / раздел начальной загрузки не определяется, проигнорируйте это. Протестированный на Debian 9

Таким образом, у нас есть четыре диска

/dev/sda1 и/dev/sdb1 является зеркалом RAID1->,/dev/md0/dev/sda2 и/dev/sdb2 являются дорожкой RAID0.->/dev/md1/dev/sdc1 и/dev/sdd1 являются зеркалом RAID1.->/dev/md2

на md0 у него есть / раздел начальной загрузки на md1, у нас есть файл подкачки на md2, / корень.

таким образом, файл перед семенем следующий:

d-i partman-auto/disk представляют строку/dev/md0/dev/md1/dev/md2 d-i partman-auto/method в виде строки lvm

d-i partman-auto/expert_recipe представляют в виде строки \1 1 - 1 lvm \$defaultignore {} \$primary {} \устройство {/dev/md0} \метод {lvm} \vg_name {vg00} \. \1 1 - 1 lvm \$defaultignore {} \$primary {} \устройство {/dev/md1} \метод {lvm} \vg_name {vg01} \. \1 1 - 1 lvm \$defaultignore {} \$primary {} \устройство {/dev/md2} \метод {lvm} \vg_name {vg02} \. \512 512 512 ext4 \$lvmok {} \in_vg {vg00} \lv_name {lv_boot} \метод {формат} формат {} \use_filesystem {} файловая система {ext4} \точка монтирования {/начальная загрузка} \. \512 1024 1 024 подкачки Linux \$lvmok {} \in_vg {vg02} \lv_name {lv_swap} \метод {подкачка} формат {} \. \1000 9000 9 000 ext4 \$lvmok {} \in_vg {vg01} \lv_name {lv_root} \метод {формат} формат {} \use_filesystem {} файловая система {ext4} \точка монтирования {/} \.

d-i grub-installer/bootdev представляют/dev/sda в виде строки/dev/sdb

d-i preseed/early_command представляют/bin/killall.sh в виде строки; \/bin/netcfg; \

echo "o# clear the in memory partition table" >> /tmp/fdisk1;\
echo "n# create new partition" >> /tmp/fdisk1;\
echo "p# type primary" >> /tmp/fdisk1;\
echo "1# no. of partition" >> /tmp/fdisk1;\
echo " # default" >> /tmp/fdisk1;\
echo "+512M# partition size" >> /tmp/fdisk1;\
echo "t# partition type" >> /tmp/fdisk1;\
echo "fd# Linux RAID" >> /tmp/fdisk1;\
echo "w# write changes" >> /tmp/fdisk1;\

echo "n# create new partition" >> /tmp/fdisk2;\
echo "p# type primary" >> /tmp/fdisk2;\
echo "2# no. of partition" >> /tmp/fdisk2;\
echo " # default" >> /tmp/fdisk2;\
echo " # partition size" >> /tmp/fdisk2;\
echo "t# partition type" >> /tmp/fdisk2;\
echo "2# no. of partition" >> /tmp/fdisk2;\
echo "fd# Linux RAID" >> /tmp/fdisk2;\
echo "w# write changes" >> /tmp/fdisk2;\

echo "o# clear the in memory partition table" >> /tmp/fdisk3;\
echo "n# create new partition" >> /tmp/fdisk3;\
echo "p# type primary" >> /tmp/fdisk3;\
echo "1# no. of partition" >> /tmp/fdisk3;\
echo " # default" >> /tmp/fdisk3;\
echo " # partition size" >> /tmp/fdisk3;\
echo "t# partition type" >> /tmp/fdisk3;\
echo "fd# Linux RAID" >> /tmp/fdisk3;\
echo "w# write changes" >> /tmp/fdisk3;\

кошка/tmp/fdisk1 | grep-o '^ [^#]' | fdisk/dev/sda; \кошка/tmp/fdisk1 | grep-o '^ [^#]' | fdisk/dev/sdb; \кошка/tmp/fdisk2 | grep-o '^ [^#]' | fdisk/dev/sda; \кошка/tmp/fdisk2 | grep-o '^ [^#]' | fdisk/dev/sdb; \/sbin/mdadm - создают/dev/md0 - metadata=1.2 - auto=mdp \-raid-devices=2 - level=1/dev/sda1/dev/sdb1; \

кошка/tmp/fdisk3 | grep-o '^ [^#]' | fdisk/dev/sdc; \кошка/tmp/fdisk3 | grep-o '^ [^#]' | fdisk/dev/sdd; \/sbin/mdadm - создают/dev/md1 - metadata=1.2 - auto=mdp \-raid-devices=2 - level=1/dev/sdc1/dev/sdd1; \

/sbin/mdadm - создают/dev/md2 - metadata=1.2 - auto=mdp \-raid-devices=2 - level=0/dev/sda2/dev/sdb2; \

0
ответ дан 1 December 2019 в 11:51

Другие вопросы по тегам:

Похожие вопросы: