我正在使用 Ubuntu 64 位设置 HTPC,使用 UEFI 和带有 GPT 磁盘的 RAID。
是否可以使用 EFI 系统分区 (分区类型 0xEF00) 成为 RAID1 阵列的一部分mdadm
?我希望元数据版本 1.0 (在磁盘末尾) 允许这样做。
另外,“引导加载程序安装设备”也应该设置什么,或者它仅适用于 MBR 磁盘?
答案1
正如您所说,mdadm metadata ver. 1.0 可以完成这项工作。
我设法获得了 Gigabyte 的 GA-C1037UN-EU EFI 能够启动的工作配置。此配置仅限于 ESP 分区的 RAID1,但允许对其余分区使用任何 RAID 配置。让我们以两个驱动器上的 RAID1 为例。每个磁盘都按以下方式分区:
sda (gpt)
--sda1 (512MB)
mdadm array member with 1.0 metadata format
boot and esp flags set
--sda2 (rest of disk)
mdadm array member with 1.2 metadata format
第一个 RAID 在每个驱动器上的 sdX1 分区上创建并用于 ESP 分区。其余驱动器容量可以以任何方式使用,例如也可以用于 RAID1。让第一个 RAID 为,/dev/md/efi
第二个/dev/md/data
.
/dev/md/efi
不应使用任何分区标签,例如 MBR 或 GPT。/dev/md/data
可以稍后分区或用作 LVM pv。例如:
/dev/md/efi
--fat32 fs, mounting to /boot/efi/
/dev/md/data
--/dev/md/data1
linux swap partition
--/dev/md/data2
ext4 root partition
... (other needed partitions)
元数据版本 1.0 有一个简单的功能:它的超级块存储在 RAID 分区的末尾,因此 BIOS 可以检测到带有 ESP 和 BOOT 标志的普通 FAT32 分区。因此没有什么可以阻止 BIOS 在此分区上搜索 EFI/BOOT/BOOTX64.EFI 并从中启动。
此方法的主要限制是,GRUB 应配置为在可移动媒体的路径中安装可启动的 EFI 文件,因为efibootmgr
正在尝试使 BIOS 直接从md
设备启动,而不是sdX
。这可以使用grub-install
标志来完成--removable
。
UPD。存在兼容性问题。在华硕 P8Z68-V PRO/GEN3 主板上尝试了相同的配置。无论我做什么,系统都无法启动。
答案2
经过多次实验后,我认为答案如下:
EFI 系统分区(通常安装在/boot/efi/
)不包含很多文件,除非 GRUB 直接存储在那里而不是/boot/grub/
。内容通常不会改变,因此无需对分区进行 RAID。如果在不同磁盘上拥有该分区的多个副本,还需要使用 来设置 UEFI 启动项efibootmgr
;通常 GRUB 会根据 的已安装分区初始化它/boot/efi/
。
如此看来,这既没有必要,又不容易做到。
答案3
我认为简短的回答是:不,EFI 系统分区 (ESP) 不能进行 RAID。但是,如果您在 RAID 磁盘之间克隆 ESP 并将两个分区都添加到 EFI 启动链中,您仍然可以获得类似 RAID 的优势。有关详细信息,请参阅此 20.04 链接或者这个 18.04 链接, 或者这个 16.04 链接。
答案4
从技术上讲,是的,当将 RAID 超级块放在末尾时,ESP 可以被镜像(如果您创建 Linux RAID-1 版本 1.0 格式的超级块,情况就会如此)。
在这样的设置中,UEFI 固件无法区分被突袭的 ESP 与未被突袭的 ESP。
但是,Ubuntu 不支持此模式,并且没有任何 Ubuntu 工具适用于此类设置。(与 Fedora 不同。)
但是,即使 ESP 的内容不经常更改,拥有冗余和同步的 ESP 仍然很重要。写入 ESP 的软件包更新确实会发生,最晚在下一次 dist-upgrade 时。此外,如果一个驱动器发生故障,您需要一个冗余 ESP 才能仍然能够从根文件系统的另一部分启动,即当它是在 RAID-1 上创建的。然后它应该最好包含与 Ubuntu 系统其余部分兼容的当前软件。
幸运的是,Ubuntu 现在以其他方式支持冗余 ESP。这意味着,只要系统写入 ESP,就可以重新配置其 grub 包,以便始终更新第二个 ESP: