如何使用 3 或 4(或更多)磁盘软件 raid10 创建可启动的冗余 Debian 系统?

如何使用 3 或 4(或更多)磁盘软件 raid10 创建可启动的冗余 Debian 系统?

如何创建一个可启动的 Debian 系统,该系统具有软件 raid10,并且在我取出一个或多个(可启动)磁盘时仍可启动?我希望使用尽可能少的磁盘,最好是 3 或 4 个。并且 raid 中的每个磁盘都应该是可启动的。

我选择 raid10 是因为它是最快的冗余 raid 级别,并且仍然给我提供了很多空间。raid5 或 6 太慢了(并且可能有理论极限http://www.zdnet.com/blog/storage/why-raid-5-stops-working-in-2009/162),而 raid1 无法提供足够的空间,灵活性较差。raid0 完全没有冗余。

答案1

我将在这里描述一个奇怪的情况,即由 3 个磁盘构建的软件 raid10(众所周知,知识渊博的人不相信 3 个磁盘 raid10)。假设您有一台带有 4 个驱动器托架的 1U 服务器,并且您希望有一个托架可用,用于存储磁盘或作为热备用。所有磁盘的大小都相同,但只要您根据最小大小的磁盘创建分区,这并不是必需的。

插入 Debian CD 或 USB 棒并开始安装系统。当您到达开始分区磁盘的部分时,请执行以下操作...

组成 RAID 的每个磁盘都应有一个约 1 GB 的可引导分区,该分区不属于 RAID。按正常方式创建这些分区,它们的大小必须完全相同。将它们标记为可引导,其中一个磁盘上的挂载点应为 /boot,其他磁盘可以保持未挂载状态。

/dev/sda1 - /boot
/dev/sdb1 - not mounted
/dev/sdc1 - not mounted

如果您愿意(我愿意)为常用位置创建单独的分区,您可以这样做:

/dev/sd[abc]2 - swap  (Yes we have redundant swap, why not, it ought to be faster than swap outside the raid10)
/dev/sd[abc]3 - /
/dev/sd[abc]4 - /usr
/dev/sd[abc]5 - /tmp
/dev/sd[abc]6 - /var
/dev/sd[abc]7 - /opt
/dev/sd[abc]8 - /home

否则,只需在每个磁盘上创建一个交换分区和一个大分区。请注意,您无法对软 RAID (mdadm) 进行分区,这就是为什么您首先要创建分区。(编辑:自内核 2.6.28 以来,可以像任何其他块设备一样对 RAID 进行分区,但我更喜欢上述方法。)

为除第一个分区之外的每个分区创建 RAID。例如:

mdadm --create /dev/md0 --level=10 --raid-devices=3 /dev/sd[abc]2

等等。

在 Debian 安装中,您将使用适当的菜单选项而不是 mdadm 命令,这只是为了说明。如果系统中有第 4 个磁盘,请将其添加为热备用、raid 的第 4 个成员或存储,除非您选择后者,否则请确保它与其他磁盘共享相同的分区表和可启动属性。我将把这留给你。

顺便说一下,安装菜单在创建分区和 RAID 时可能会有点令人困惑,如果您迷路了或者菜单系统开始咒骂您,只需从头开始。:-)

只需像平常一样安装 Debian。一旦到达 grub 安装阶段,您需要做比平常多的事情。

我们假设 /dev/sda1 安装在 /boot 上。确保 MBR 已保存到 /dev/sda、/dev/sdb 和 /dev/sdc。因此我们告诉 grub 这 3 个磁盘都是启动磁盘。

一旦整个系统安装完毕,您就应该能够启动系统,并且您将在 3 磁盘 raid10 上拥有一个可启动的 Debian 系统。但是,如果磁盘发生故障,它还不是完全冗余的,这意味着它不会神奇地从另一个磁盘启动。为了实现这一点,您必须将 /dev/sda1 上的启动分区精确复制到其他磁盘。

为此使用 dd(bs=500M 将大大加快 dd 速度,将 500M 调整为系统内存的 2/3 左右):

dd bs=500M if=/dev/sda1 of=/dev/sdb1
dd bs=500M if=/dev/sda1 of=/dev/sdc1

现在确保您的 bios 配置为尝试从所有 3 个磁盘启动,顺序无关紧要。只要 bios 尝试从任何磁盘启动,那么如果其中一个磁盘发生故障,系统将自动从另一个磁盘启动,因为 UUID 完全相同。

有一个小问题,如果 /boot 发生变化(例如内核升级),不要忘记有时重复 dd 命令。如果您愿意,可以将其设为每周的 cron 作业。

这总是很有趣的,通过更改 bios 启动优先级来测试您的冗余系统。如果您觉得幸运的话,可以在运行时拔出一个磁盘来测试它。:-) 实际上,我认为您必须这样做才能绝对确保它是完全冗余的,否则为什么要经历这些麻烦。不过,无论如何,这都是一个有趣的练习。如果您正确地完成了所有操作(我正确地记下了),当 raid 降级时,您的系统仍将启动。就像您使用硬件 raid 一样。我在具有 2、3、4 或更多磁盘的各种 1U 和 2U 服务器上对其进行了测试。

这也适用于 raid1。

顺便说一句,您必须使用不属于 raid 的启动分区,否则您的系统将无法启动。必须有一种方法可以启动 raid,而且由于它是软 raid,因此必须先加载内核才能识别 raid。

答案2

回复晚了,但你就不能做我已经做了一段时间的事情吗?

我的大多数服务器都使用双驱动器 RAID1 安装。

它们的设置方式是将 md0 安装为 /boot 并且是一个大约 250MB 的 raid1,而将 md1 安装为 / 并且是驱动器容量的剩余部分(不包括每个驱动器上的交换区域)。

这样,对 /boot 的任何更改都会相应地镜像到两个驱动器,即使在启动时操作系统将使用 BIOS 所指示的那个驱动器。

只需记住为每个驱动器重新运行 grub-install /dev/sd* 以包含有效的 /boot。操作系统将自动保持 /boot 彼此同步。

相关内容