BTRFS-RAID并从EFI系统分区引导

UEFI需要从大多数时间格式化为vFAT的ESP启动。 如果我记得正确的话,BTRFS可以像逻辑卷pipe理器(LVM)那样将子卷格式化为ext3 / ext4。 但是,UEFI不支持从BTRFS启动。 大多数情况下,解决scheme只需使用三个(或2N + 1)磁盘,其中两个用于RAID,另一个用于启动。 在这种情况下,我主要关心的是简单的RAID1镜像。 在这种情况下,虽然我只能使用两个磁盘。 如果主板使用BIOS,那么我可以简单地镜像启动分区。

我听说这个问题(不得不使用一个额外的磁盘启动)是为什么人们已经转向使用ZFS的(freeBSD)的一个动机,尽pipe我可能会错误地回想起来。

在我的情况下,我所做的是用分区镜像整个磁盘。 Id est,第二个磁盘有两个分区:一个ESP,一个btrfs分区。 但是,我认为这不是BTRFS-RAID1打算如何使用。 所以我的问题具体是:

  • 这种configuration会导致腐败或其他意想不到的后果吗?
  • 什么是更好的解决scheme?

根据我在您的陈述中收集的信息,您有两个具有以下(或类似)磁盘布局的磁盘:

sda: GPT sda1: Linux MD RAID member sda2: Swap sda3: BTRFS pool member (RAID 1 allocation policy) sdb: GPT sda1: Linux MD RAID member sda2: Swap sda3: BTRFS pool member (RAID 1 allocation policy) md0: ESP (~100mb? VFAT) mounted at /boot/efi (RAID 1 allocation policy) BTRFS pool: root subvol (mounted at /) home subvol (mounted at /home) et cetera ad nauseam. 

在几乎所有情况下,这正是你想要的,如果你的configuration没有反映出来,你可能会想让它反映出来。

在这种情况下,Linux MD卷是sda1和sdb1之间的RAID 1。 不要直接和sd [a,b] 1混淆,只能挂载由它们创build的MD卷(通常是/dev/md0或者/dev/md/0除非你觉得需要给它一个特殊的名字在创作过程中)。 您绝对必须使用RAID 1作为ESP卷,因为主板固件希望在启动时在任何单个磁盘上查找完整的数据。

交换分区自然会分条,但是在几乎所有情况下都不会崩溃。 除非有充分的理由,否则不要使用MD进行交换,因为传呼机非常聪明。

BTRFS池将自动扫描,因此在/etc/fstab文件中添加条目时,最好使用UUID指定该卷。

GRUB2可以从任何BTRFS RAID级别启动。 只要确保“stage 1”加载程序安装到两个分区表(sda,sdb)。 这是在调用grub-install /dev/sda (根据发行版可能略有不同)。