用于启动降级和恢复升级的简单 mdadm RAID 1 设置?

用于启动降级和恢复升级的简单 mdadm RAID 1 设置?

我已经广泛搜索了这个答案,但找不到它...可能有人知道如何设置 Linux 软件 mdadm RAID 1 阵列,以便在 RAID 分区或磁盘发生问题时计算机仍然可以启动和修复?我的印象是数组有时可以如果您拔出其中一张磁盘,则工作正常,但如果您不镜像该磁盘,则工作正常幼虫如果正确安装或引导分区(如果有)或 UUID/名称,阵列可能无法引导。

我试图解决的问题是我想要 1) RAID 1 功能和 2) 快照功能,以便可以恢复系统更新/升级。有人可以建议一个分区/格式/grub/脚本/等吗?实现这一目标的设置?这是个人而非生产系统。下面再举例。

我尝试过的: 我有尝试过BTFS突袭1(但我不确定 permanent-ro 错误是否已修复,而且我很遗憾地坚持用无法启动的降级 btrfs raid 1 来编写此内容(未按上面设置));我不想使用兹夫斯(由于许可证问题,安装和分区工具集成似乎缺乏);我不想使用LVM 快照(因为竞争条件肯定存在);恢复 aptitude 更新(或者)似乎可能会引起问题。BTFS快照可以创造奇迹,但是在磁盘故障后计算机无法启动BTFSRAID 是我当前的问题(我正在尝试找出一种创建可启动 USB 的方法,我实际上可以从中运行 btrfs 工具(因为无法重新格式化活动磁盘,并且我无法访问 chroot/debootstrap/等等,所以也许我应该只用 debian-installer 插入两个 USB 密钥),但扔掉该系统似乎更简单)。

建议的解决方案:我希望探索的解决方案是使用米达德姆(我猜是通过 ext4 实现的),每当我使用 时aptitude,我都会通过痛苦地dd将根分区上的所有内容复制到相同大小的回滚分区(可能在备用磁盘上)来“手动快照” dd if=/dev/md# of=/dev/sd# bs=??M; sync(成功时,不需要做任何事;失败时,希望系统可以启动并恢复dd if=/dev/sd# of/dev/md#

(我试图在这里使用 GPT 分区名称,但我不太熟悉;如果错误,请纠正我。我猜是这样dd if=/dev/disk/by-???/??? of=/dev/disk/by-partlabel/rollback-root,但我不确定如何标记md数组以及是否需要通过ext4 系统接受标签。)

插图:

sda UUID=10                   [?? xxxxxxxxxxxxx          ]
sdb UUID=20                   [?? xxxxxxxxxxxxx          ]
                                    ^ root and/or boot partitions, in md0(,md1? etc)

sdc LABEL=rollback-root UUID=30 [?? _empty_space_          ]

规格

  • 场景1:驱动器故障- 如果任一驱动器损坏或被移除,则引导加载程序仍然安全(不会丢失,不会损坏),并允许引导到降级模式(或者可能是准系统恢复分区);这可能需要用户干预。例如,如果/dev/sda不再存在,主板将跳过它,因为它找不到幼虫在 MBR 中或它位于 UEFI 区域中的任何位置,按正常顺序检查其下一个磁盘,例如/dev/sdb,找到“备份”grub,然后使用该磁盘。
    • 理想情况下,启动到降级模式不需要用户干预(例如,如果位于远程)
  • 场景2:升级失败- 如果发生升级,系统变得无法使用(可能是启动时内核崩溃),可以从快照分区启动,然后dd将快照分区恢复到原始可启动根/启动分区,包括覆盖 grub 安装。
    • 在远程世界中,我不知道任何会“尝试启动,失败后恢复”的东西(我相信Android可能会通过设置一些后备标志来以某种方式做到这一点,例如在某些平台上设置不同的分辨率“你是吗?”确定要更改此分辨率吗?N 秒”)
    • 如果发生升级,并且系统引导加载程序损坏,我可以插入恢复 USB/磁盘并...以某种方式修复它? (也许有人知道一种从“安全”引导加载程序链接引导加载程序的好方法,同时允许资质自由支配更新它认为是主要的内容幼虫)(或者也许我也以某种方式将 grub 备份到回滚磁盘上,然后通过主板从回滚磁盘启动,然后恢复 grub 某种方式...如何?)。我知道不能仅仅使用ddMBR 或 ESP...在这些情况下管理这些内容如何发挥作用?

想法

在这样一种假设的设置中,如何在两个 RAID 分区之间同步 grub 配置,同时又能适应编号问题?如果 aptitude 升级更改了 grub 配置,会发生什么情况?该选项是nofail必需的还是默认启用的?会BTFS带有专用“救援”分区或 USB 闪存盘的 RAID 会更容易吗? (如果是分区,我该如何设置 GRUB 来启用它?)

上述内容可能存在一些重大问题,但我希望它说明了最终目标。

谢谢你!

潜在有用的参考

答案1

我对你在这个问题上的低期望感到有些困惑。

  1. 移除磁盘后仍可工作的 RAID1

这就是 RAID1 的作用。此类设置中经常缺少的是将grub引导加载程序手动复制到每个磁盘上的操作。

grub-install /dev/sda
grub-install /dev/sdb
  1. 失败升级回滚的快照

我在 RAID 之上广泛使用 LVM。 (通常 LVM 位于 LUKS 之上,位于 RAID 之上。)最近我一直在尝试 ZFS,但在大量使用它之前,我需要查看加密层的工作情况。

我确实注意到,在我的“现实世界”配置中,我倾向于直接在 RAID1 上而不是在 LVM 分区上运行 root,而是作为一个相对较小的分区(10 GB 而不是 100 GB)。如果磁盘允许,一种选择可能是运行三路 RAID1 镜像,并在重大升级之前分离三个镜像之一,仅在成功时将其重新加入。

我在 RAID1 上运行 boot,在 LVM 上运行 root,没有出现任何问题。我很想知道是什么让你担心”必须存在的竞争条件“虽然我只是一个数据点,但我从来没有遇到过无法修复的启动错误,而且没有一个与 LVM 相关。(grub偶尔会因为哪个分区包含什么而感到不安,特别是当添加 IPMI 虚拟磁盘和已删除。)

  1. 一般的

    • 使用IPMI管理远程系统;不要依赖操作系统(或grub)。
    • 采取适当的外部备份。不(只是)快照。 RAID1 不是备份。

相关内容