Ubuntu 12.04サーバーのインストールを事前に実行し、2台のドライブにRAID 1を作成し、LVMを使用してパーティションを作成するレシピを作成しようとしています。残念ながら、partmanは、LVMボリュームを作成するときに、LVMで使用できるレシピにパーティションがないと文句を言います(コンソールでは、使用できないレシピについて文句を言います)。
私が求めているレイアウトは、sdbとsdcのRAID 1(USBスティックからインストールするのでsdaが必要)で、LVMを使用してブート、ルート、スワップを作成します。
奇妙なことに、boot_lvのマウントポイントをホームに変更すると、レシピは正常に機能しますが(間違った場所にマウントすることを除けば)、/ bootでマウントすると失敗します
別の/ 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
以下のpartman-auto-lvmのコードスニペットを少しグーグルで見つけた後、lvmレシピがLVMで/ bootパーティションを検出すると、LVMで/ bootを使用することは完全に可能ですが、救済されるようです。私の調査によると、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
回避策は、マウントポイントを指定せず、セットアップ画面から手動で実行することです。これにより、無人インストールの目的がある程度損なわれます。
試行錯誤の末、以下のレシピと設定にたどり着きましたが、それを使用してサーバーを正常にプリシードしました。現在のところ、確認なしでディスクを上書きするため、実際にテストする前にオプションを微調整してください。
## 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