Debian 12(bookworm):安装软件 RAID 1 失败,出现 grub 错误

Debian 12(bookworm):安装软件 RAID 1 失败,出现 grub 错误

一段时间以来,我一直在尝试设置一个以 RAID 1 作为启动源的新服务器系统。该 RAID 由两个 4TB 硬盘组成。因此,我从准备好 Debian 12 安装映像的 USB 启动。一开始一切运行正常。我配置网络并创建前两个用户。 在分区部分,我选择手动方式

在下面的表格中,我看到我的两个 4TB 驱动器和 USB 启动设备,硬盘 SCSI9 是应急备用,我不会在这里使用它。 我选择配置软件 RAID

我选择创建 MD 设备

我选择 RAID 1

2 个 RAID 设备

0 备用设备

我选择了 2 个可用磁盘

再次回到分区。 这次我选择引导模式

所有文件都在一个分区中

我选择我的新 RAID 设备

一两分钟后,新的分区 RAID 就会出现。 看起来很有希望......

我确认更改后,系统开始获取并安装操作系统的其余部分和所有实用程序。到目前为止,这个过程设计得很好,而且相当简单。唯一的问题是:它没有完成。:-( 当安装 GRUB 时(2 小时后),它死机了...... 我发现没有办法超越这一点。我的错误是什么?我该如何改正?

我尝试了很多不同的方法,但结果都是一样的。这是最有希望的一个:跳过部分安装过程并使用 mdadm 手动生成阵列: https://www.server-world.info/en/note?os=Debian_12&p=raid1

添加

答案1

4T 需要使用 GPT,并且您无法同时拥有全磁盘可分区 RAID使 BIOS 可以识别磁盘以便从其启动(对于 EFI 来说严格来说是不可能的,对于传统来说则不是那么严格,但这需要你不想知道的黑魔法)。

(遗憾的是 Debian 安装程序甚至接受了这个方案。它不应该,它是严格无效的并且不可能起作用。)

这是因为 GPT 分区表实际上存储在设备的开头和结尾。当使用全磁盘 RAID 并且没有正确的 MD 元数据解释时,两个 GPT 副本永远不会同时发生:

  • 对于 v1.0 MD 超级块,第二个 GPT(在末尾)将会丢失(已提前移动,移动到 BIOS 不期望的位置);
  • 对于 v1.1 和 v1.2 MD 超级块,第一个 GPT(在开始处)将被移动,因此固件将找不到它。

无论哪种方式,它都不会识别磁盘是否具有有效的分区表并拒绝从它们启动。

除此之外,如果您想使用 UEFI 启动,您需要知道 EFI 固件不知道 ESP 可以是软件 RAID(规范中没有任何内容)。所以它一定不是。ESP 必须始终是一个简单的 GPT 分区。

因此,为了解决这个问题,您不必先构建 RAID 然后进行分区,而是先对磁盘进行分区,然后将一些分区收集到 RAID 中。虽然这有争议,但我建议采用以下方案:

  • 对于 EFI 安装:511MiB 的 ESP(类型 1)(默认偏移量 1MiB),然后是 512MiB 用于类型 Linux RAID 的 /boot,然后是其余类型的 Linux RAID(如果我没记错的话,这是 fdisk 中的类型 29)。
  • 对于传统安装:1 MiB(类型 4 - biosgrub)、510 MiB 启动(RAID)以及其余 RAID。

然后,创建两个 RAID(/boot 和其余),并选择其中一个 ESP 作为“ESP”。安装后,您将从第二个磁盘启动。然后在大 RAID 上创建 LVM,以保存文件系统;在那里您可以创建交换卷、根 FS 卷(30 GiB 对 Debian 来说已经足够,并且很容易随时扩大;请注意,您将把所有数据放在其他已安装的专用卷中 — 将应用程序数据存储在根卷中是没有好处的)。其余的可以在系统生命周期内根据需要创建。

然后,您可以照常安装系统。它必须在 ESP 分区上创建 FAT32;Debian 11 安装程序在这方面有问题,所以我不得不手动创建它;我不知道 12 的情况,因为我没有执行过这样的安装,只升级过。当涉及到引导加载程序安装时,您只需按照 EFI 的建议进行操作,而对于旧版,您可能只需重复此步骤并安装两次,第二次选择第二个磁盘,这样它就可以立即冗余启动。

对于 EFI,在第一次系统启动后,您需要在第二个“ESP”分区上手动创建文件 FAT32 文件系统,将其挂载到某个位置(我使用 /boot/efi2)并从 /boot/efi 复制所有内容,保留结构。然后使用 创建第二个固件启动项efibootmgr这里是指示。

答案2

完成了...谢谢 Nikita 指出了正确的方向!下面是一份快速烹饪食谱,它对我有用(我省略了几个“你真的要重新分区你的磁盘吗” - 确认):

  • 转到主板 BIOS 配置并禁用所有 UEFI 内容。
  • 使用 Debian 12 安装映像从 USB 启动。
  • 开始“图形安装”。
  • 按照正常方式执行第一步(网络安装等)。
  • 当安装程序来到“分区磁盘”时,选择“手动”。
  • 从两个目标驱动器中删除所有旧分区。
  • 在第一个目标驱动器上创建一个新分区。当询问大小时,输入“1MB”。将分区放在可用空间的“开头”。将“用作”设置更改为“保留的 BIOS 启动区域”。
  • 在第一个目标驱动器上创建一个新分区。当询问大小时,输入“最大”。将“用作”设置更改为“RAID 的物理卷”。
  • 对第二个目标驱动器重复最后两个步骤。
  • 返回分区菜单,选择“配置软件 RAID”。选择“创建 MD 设备”。选择“RAID1”。活动设备为“2”。备用设备为“0”。然后选择您之前准备的两个 RAID 分区。单击“完成”退出 RAID 设置
  • 返回分区菜单,选择“引导式分区”。选择“引导式 - 使用整个磁盘并设置 LVM”。选择您之前准备好的 RAID 设备。选择“所有文件在一个分区中”。询问 LVM 的大小,回答“最大”。
  • 您的分区列表现在看起来应该类似这样。选择“完成分区并将更改写入磁盘”。
  • 如果一切顺利,您的系统现在将启动标准 Debian 安装过程(可能需要一段时间)。您可以像在正常安装过程中一样回答问题。
  • 当需要将 GRUB 写入磁盘时,请再醒一次:在第一个目标磁盘上写入一次,然后返回并对第二个目标磁盘执行相同操作。
  • 其余程序都是标准的......
  • watch cat /proc/mdstat您可以通过命令行启动来检查 RAID 的状态(包括同步过程的进度) 。

相关内容