![使用 partman 和种子文件在两个驱动器上将 EFI 安装到 Raid 1](https://linux22.com/image/1121469/%E4%BD%BF%E7%94%A8%20partman%20%E5%92%8C%E7%A7%8D%E5%AD%90%E6%96%87%E4%BB%B6%E5%9C%A8%E4%B8%A4%E4%B8%AA%E9%A9%B1%E5%8A%A8%E5%99%A8%E4%B8%8A%E5%B0%86%20EFI%20%E5%AE%89%E8%A3%85%E5%88%B0%20Raid%201.png)
所以我的问题是,在 Ubuntu 上进行种子安装时,是否可以将 EFI 分区安装到两个驱动器上?这样,如果一个驱动器出现故障,相关的 efi 分区/数据就会出现在第二个驱动器上,并且可以直接从该驱动器启动。或者只能将其安装到第一个驱动器。这是我的工作种子文件,仅将其安装到第一个驱动器,设置 RAID 1 和 LVM。但我想知道如何同时完成这两项工作
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-lvm/confirm boolean true
d-i partman-auto/disk string /dev/sda /dev/sdb
d-i partman-auto/method string raid
d-i partman-auto-lvm/new_vg_name string vg0
d-i partman-auto-lvm/guided_size string 90%
d-i partman-auto/expert_recipe string \
efi-lvm :: \
1 1 1 free \
$bios_boot{ } \
method{ biosgrub } \
. \
256 10 256 fat32 \
$primary{ } \
$lvmignore{ } \
method{ efi } \
format{ } \
.\
20000 30 1000000000 raid \
\$lvmignore{ } \
\$primary{ } \
method{ raid } \
.\
20000 50 400000 ext4 \
\$defaultignore{ } \
\$lvmok{ } \
lv_name{ root } \
method{ format } \
format{ } \
use_filesystem{ } \
filesystem{ ext4 } \
mountpoint{ / } \
label{ Root } \
.\
2048 40 2048 swap \
\$defaultignore{ } \
\$lvmok{ } \
lv_name{ swap } \
method{ swap } \
format{ } \
.
d-i partman-auto-raid/recipe string \
1 2 0 lvm - /dev/sda2#/dev/sdb2 \
.
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
d-i mdadm/boot_degraded boolean true
我还在 ny seed 文件中进行了下列操作以总结驱动器并删除任何 lvm 位。
d-i partman/early_command \
string debconf-set partman-auto/disk "\$(list-devices disk | head -n1)"
d-i partman/early_command string vgs -separator=: -noheadings | cut -f1 -d: | while read vg ; do vgchange -an \$vg ; done ; pvs -separator=: -noheadings | cut -f1 -d: | while read pv ; do pvremove -ff -y \$pv ; done
答案1
找到了适合我情况的获胜组合。这会清除所有 Raid/物理分区/LWM 等,因此种子安装从完全干净的状态开始。在多个具有多个分区方案的盒子上进行了测试和确认。
# Disk Partitioning
# Use LVM, and wipe out anything that already exists
d-i partman/early_command string vgs -separator=: -noheadings | cut -f1 -d: | while read vg ; do vgchange -an \$vg ; done ; pvs -separator=: -noheadings | cut -f1 -d: | while read pv ; do pvremove -ff -y \$pv ; done
d-i partman/early_command \
string /bin/dd if=/dev/zero of=/dev/sda bs=512 count=1
d-i partman/early_command \
string /bin/dd if=/dev/zero of=/dev/sdb bs=512 count=1
# Disk Partitioning
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/disk string /dev/sda /dev/sdb
d-i partman-auto/method string raid
d-i partman-auto-lvm/new_vg_name string vg0
d-i partman-auto-lvm/guided_size string 90%
d-i partman-auto/expert_recipe string \
efi-lvm :: \
256 10 256 fat32 \
\$primary{ } \
\$lvmignore{ } \
method{ efi } \
format{ } \
.\
20000 30 1000000000 raid \
\$lvmignore{ } \
\$primary{ } \
method{ raid } \
.\
20000 50 400000 ext4 \
\$defaultignore{ } \
\$lvmok{ } \
lv_name{ root } \
method{ format } \
format{ } \
use_filesystem{ } \
filesystem{ ext4 } \
mountpoint{ / } \
label{ Root } \
.\
2048 40 2048 swap \
\$defaultignore{ } \
\$lvmok{ } \
lv_name{ swap } \
method{ swap } \
format{ } \
.
d-i partman-auto-raid/recipe string \
1 2 0 lvm - /dev/sda2#/dev/sdb2 \
.
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 partman-md/confirm_nochanges boolean false
d-i partman-md/confirm_nooverwrite boolean true
d-i partman/confirm_nooverwrite boolean true
d-i mdadm/boot_degraded boolean true
就这样。它创建了 VG-root 并在两个磁盘上的 raid 1 分区上进行交换,同时在每个磁盘上都有一个适合 EFI 的分区。如有任何问题,请随时提问。我现在对此有了更好的了解,可以回答一些与 Trusty 14.04 LTS 上的 Ubuntu 种子磁盘配置有关的问题
谢谢