UEFI 需要从 ESP 启动,ESP 大部分时间都格式化为 vFAT。如果我没记错的话,BTRFS 可以具有格式化为 ext3/ext4 的子卷,如逻辑卷管理器 (LVM)。但是,UEFI 不支持从 BTRFS 启动。大多数情况下,解决方案只是使用三个(或 2N + 1)磁盘,两个用于 RAID,一个用于启动。在这种情况下,我主要关心的是简单的 RAID1 镜像。但在这种情况下,我只能使用两个磁盘。如果主板使用 BIOS,那么我可以简单地镜像启动分区。
我听说这个问题(必须使用额外的磁盘进行启动)是人们转向(带有)ZFS(freeBSD)的动机之一,尽管我可能记错了。
就我而言,我所做的是镜像整个磁盘并进行分区。即,第二个磁盘有两个分区:一个 ESP,一个 btrfs 分区。但是,我假设这不是 BTRFS-RAID1 打算使用的方式。所以我的问题具体是:
- 这种配置是否会导致损坏或其他意外后果?
- 更好的解决办法是什么?
答案1
从我所收集到的您的陈述来看,您有两个磁盘,其磁盘布局如下(或类似):
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.
在几乎所有情况下,这都是您想要的,如果您的配置没有反映这一点,您可能希望让它反映这一点。
在这种情况下,Linux MD 卷是 sda1 和 sdb1 之间的 RAID 1。不要直接弄乱 sd[a,b]1,并且只挂载从它们创建的 MD 卷(通常/dev/md0
或/dev/md/0
除非您在创建期间觉得有必要为其指定一个特殊名称)。您绝对必须对 ESP 卷使用 RAID1,因为主板固件希望在启动时在任何单个磁盘上找到完整的数据。
交换分区会自然地分条,但一个分区的故障几乎在所有情况下都不会导致系统崩溃。除非有充分理由,否则不要使用 MD 进行交换,因为分页器非常智能。
BTRFS 池将自动扫描,因此最好在文件中添加条目时通过 UUID 指定该卷/etc/fstab
。
GRUB2 可以从任何 BTRFS RAID 级别启动。只需确保“阶段 1”加载器已安装到两个分区表 (sda、sdb)。这是在调用时完成的grub-install /dev/sda
(可能因发行版的不同而略有不同)。