我如何创建一个可引导、具有软件 raid10 并且在取出一张或多张(可引导)磁盘时仍能引导的 Debian 系统?我想使用尽可能少的磁盘,最好是 3 或 4 个。并且作为 raid 一部分的每个磁盘都应该是可引导的。
我选择raid10是因为它是最快的冗余raid级别,并且仍然给了我很大的空间。raid5 或 6 太慢(并且可能有理论上的限制http://www.zdnet.com/blog/storage/why-raid-5-stops-working-in-2009/162)并且 raid1 没有给我足够的空间并且不太灵活。raid0 根本不是多余的。
我将在这里描述一个奇怪的,即由 3 个磁盘构建的软件 raid10(众所周知,知识渊博的人对 3 个磁盘的 raid10 持怀疑态度)。假设您有一台带有 4 个驱动器托架的 1U 服务器,并且您希望有一个空闲托架,用于存储磁盘或作为热备件。磁盘的大小都相同,但只要您根据最小大小的磁盘创建分区,就没有必要。
您插入 Debian CD 或 U 盘并开始安装系统。当您到达开始对磁盘进行分区的部分时,请执行以下操作...
作为raid 一部分的每个磁盘都应该有一个大约1 GB 的可引导分区,该分区不是raid 的一部分。正常创建这些分区,它们的大小必须完全相同。将它们标记为可引导,其中一个磁盘上的挂载点应为 /boot,您可以将其他磁盘保留为未挂载。
/dev/sda1 - /boot
/dev/sdb1 - not mounted
/dev/sdc1 - not mounted
Run Code Online (Sandbox Code Playgroud)
如果您更喜欢(我愿意)为通常的位置创建单独的分区,您可以这样做:
/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
Run Code Online (Sandbox Code Playgroud)
否则只需在每个磁盘上创建一个交换分区和一个大分区。请注意,您不能对 softraid (mdadm) 进行分区,这就是您首先创建分区的原因。(编辑:从内核 2.6.28 开始,可以像任何其他块设备一样对 raid 进行分区,尽管我更喜欢上述方法。)
在除第一个分区之外的每个分区中创建突袭。例如:
mdadm --create /dev/md0 --level=10 --raid-devices=3 /dev/sd[abc]2
Run Code Online (Sandbox Code Playgroud)
等等。
在 Debian 安装中,您将使用适当的菜单选项而不是 mdadm 命令,这只是为了说明。如果系统中有第 4 个磁盘,请将其添加为热备件、RAID 的第 4 个成员或作为存储,除非您执行后者,请确保它与其他磁盘共享相同的分区表和可引导属性。我会把它留给你。
顺便说一句,安装菜单在创建分区和突袭方面可能有点混乱,如果您迷路或菜单系统开始诅咒您,只需从头开始。:-)
只需像往常一样安装 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
Run Code Online (Sandbox Code Playgroud)
现在确保您的 bios 配置为尝试从所有 3 个磁盘启动,顺序无关紧要。只要 bios 将尝试从任何磁盘启动,那么如果其中一个磁盘出现故障,系统将自动从另一个磁盘启动,因为 UUID 完全相同。
有一个小问题,如果 /boot 已更改,请不要忘记有时重复 dd 命令,比如内核升级。如果您愿意,可以将其设为每周的 cron 工作。
这总是很有趣,通过更改 bios 引导优先级来测试您的冗余系统。如果您觉得幸运,可以在它运行时拔出一张磁盘来测试它。:-) 实际上,我认为您必须这样做才能绝对确保它完全多余,否则为什么还要遇到麻烦。尽管如此,无论如何这都是一个有趣的练习。如果您正确地完成了所有操作(并且我正确地写下了它),那么当raid 降级时,您的系统仍将启动。就像您将使用硬件突袭一样。我在具有 2、3、4 和更多磁盘的各种 1U 和 2U 服务器上对其进行了测试。
这也适用于raid1。
顺便说一句,您必须使用不属于raid 的引导分区,否则您的系统将无法引导。必须有启动raid 的方法,并且由于它是softraid,因此必须首先加载内核以便识别raid。
| 归档时间: |
|
| 查看次数: |
2970 次 |
| 最近记录: |