Ubuntu
使用 LVM 和 RAID 預置 Ubuntu partman 配方
我正在嘗試預置 Ubuntu 12.04 伺服器安裝並創建一個配方,該配方將在 2 個驅動器上創建 RAID 1,然後使用 LVM 對其進行分區。不幸的是,partman 在創建 LVM 卷時抱怨說配方中沒有可與 LVM 一起使用的分區(在控制台中它抱怨配方不可用)。
我追求的佈局是 sdb 和 sdc 上的 RAID 1(從 U 盤安裝,因此需要 sda),然後使用 LVM 創建引導、root 和交換。
奇怪的是,如果我將 boot_lv 的掛載點更改為 home,則配方可以正常工作(除了掛載在錯誤的位置),但是在 /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
經過一番Google搜尋後,我在 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
一種解決方法是不指定掛載點並從設置螢幕手動執行,這在某種程度上違背了無人值守安裝的目的。