Ubuntu

使用 LVM 和 RAID 預置 Ubuntu partman 配方

  • February 18, 2015

我正在嘗試預置 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

一種解決方法是不指定掛載點並從設置螢幕手動執行,這在某種程度上違背了無人值守安裝的目的。

引用自:https://serverfault.com/questions/550072