Can the EFI system partition be RAIDed?

I'm setting up a HTPC with Ubuntu 64-bit, using UEFI and RAID with GPT disks.

Is it possible for the EFI system partition (partition type 0xEF00) to be part of a RAID1 array using mdadm? I'm hoping that metadata version 1.0 (at the end of the disk) will allow this.

Also, what should "device for boot loader installation" be set too, or does that only apply to MBR disks?


Solution 1:

As you say, mdadm metadata ver. 1.0 does the job.

I've managed to get working configuration that Gigabyte's GA-C1037UN-EU EFI was able to boot. This configuration is limited to RAID1 for ESP partition, but allows to use any RAID configuration for the rest of the partitions. Let show RAID1 on two drives as example. Every disk is partitioned in the next way:

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

First RAID created over sdX1 partitions on each drive and used for ESP partition. Rest of the drives capacity can be used in any manner, for example, in RAID1 too. Let the first RAID be /dev/md/efi and the second /dev/md/data. /dev/md/efi should not use any partitioning labels, such as MBR or GPT. /dev/md/data can be partitioned later or used as LVM pv. For example:

/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)

Metadata ver. 1.0 has one simple feature: it's superblock is stored at the end of the RAID partition, so BIOS can detect plain FAT32 partition with ESP and BOOT flags. So nothing prevents BIOS from searching EFI/BOOT/BOOTX64.EFI on this partition and booting from it.

Main limitation of this method is that GRUB should be configured to install bootable EFI file in path for removable media, because efibootmgr is trying to make BIOS boot directly from md device, not sdX. This can be done using grub-install with --removable flag.

UPD. There are compatibility issues. Tried same configuration on ASUS P8Z68-V PRO/GEN3 motherboard. System won't boot no matter what I do.

Solution 2:

After much experimentation I think this is the answer:

The EFI system partition (usually mounted at /boot/efi/) doesn't hold many files, unless e.g. GRUB is stored directly there instead of /boot/grub/. The contents usually don't change, so there is no need to RAID the partition. Having multiple copies of the partition across different disks would also require the UEFI boot entries to be set with efibootmgr; usually GRUB initialises this based on the mounted partition of /boot/efi/.

So it seems that it's both not needed, and not easy to do.

Solution 3:

I think the short answer is: No, EFI system partitions (ESPs) cannot be RAID-ed. However, you can still get RAID-like advantages if you clone the ESP between you RAID disks and add both partitions into the EFI boot chain. For details, see this 20.04 link or this 18.04 link, or this 16.04 link.

Solution 4:

No it's not possible yet, most motherboards the have UEFI can read of a limited number of partition types for the EFI (eg. FAT32) and RAID is not one of them.