Debian 12(书虫):安装软件 RAID 1 失败并出现 grub 错误

Lud*_*erH 4 software-raid grub2 debian-bookworm

一段时间以来,我一直在尝试设置一个以 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

添加

Nik*_*nov 7

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

\n

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

\n

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

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

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

\n

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

\n

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

\n
    \n
  • 对于 EFI 安装:511MiB 的 ESP(类型 1)(默认偏移量 1MiB),然后是 Linux RAID 类型的 /boot 的 512MiB,然后是 Linux RAID 类型的其余部分(如果我没记错的话,这是 fdisk 中的类型 29) )。
  • \n
  • 对于旧版安装:1 MiB(类型 4 \xe2\x80\x94 biosgrub)、510 MiB 启动 (RAID) 和其余 RAID。
  • \n
\n

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

\n

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

\n

对于 EFI,第一次系统启动后,您需要在第二个“ESP”分区上手动创建文件 FAT32 文件系统,将其安装在某个位置(我使用 /boot/efi2)并从 /boot/efi 复制所有内容,保留结构。然后,您使用 创建第二个固件启动条目efibootmgr以下是说明。

\n