AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1143899
Accepted
LudgerH
LudgerH
Asked: 2023-09-17 21:59:20 +0800 CST2023-09-17 21:59:20 +0800 CST 2023-09-17 21:59:20 +0800 CST

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

  • 772

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

添加

software-raid
  • 2 2 个回答
  • 540 Views

2 个回答

  • Voted
  1. Best Answer
    Nikita Kipriyanov
    2023-09-17T23:31:19+08:002023-09-17T23:31:19+08:00

    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),然后是 Linux RAID 类型的 /boot 的 512MiB,然后是 Linux RAID 类型的其余部分(如果我没记错的话,这是 fdisk 中的类型 29) )。
    • 对于旧版安装:1 MiB(类型 4 — biosgrub)、510 MiB 引导 (RAID) 和其余 RAID。

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

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

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

    • 6
  2. LudgerH
    2023-09-27T19:46:54+08:002023-09-27T19:46:54+08:00

    完成...谢谢尼基塔指出正确的方向!这是一个快速烹饪食谱,说明它如何为我工作(我省略了几个“你真的想重新分区磁盘吗” - 确认):

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

相关问题

  • 具有不同磁盘的 Linux RAID 5

  • USB 驱动器 RAID 阵列

  • windows 2003 软件 raid - 在没有 FT 软盘的情况下启动辅助磁盘

  • RAID - 软件与硬件

  • 用于 Windows 和 Linux 的 ICH9R 上的 RAID 配置和 3xHDD

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve