如何在 CentOS 5 上设置一个软件硬盘阵列

这篇文章探讨一个方法,可于安装时在没有真实硬盘阵列控制器的系统上创建一个软件(mdraid)RAID1。此方法没有 CentOS 计划的支持,也不是一个适合普通用户的做法(请参阅下文的「计设考虑因素」备注)。此篇文章的作用是记录一个实验性质的做法,它的脆弱成果在内核更新后便不能更新。我们并不推荐它。多年的经验告诉我们,你很可能忘记更新开机程序,因此损失数据的机会比硬盘失效的可能性更高。

「不获支持」的意思就是:当你在 #centos IRC 频道上查询有关此篇文章时,频道上的常客将会告诉你它不获支持,及不要这样做

/!\ 设计考虑因素:在 /boot 分区采用 RAID 是否明智?位于挂载点:/boot/ 的内容普遍是于置于在一个原生(非 RAID)的分区内。它的尺寸相对较细,传统是 250 MB 之下。因此在安装或更新,你可以简易地利用这样一个小脚本把内容复制到由 RAID 提供冗余的位置:

# [ ! -d /root/boot_backup ] && mkdir -p /root/boot_backup 
# rsync -a -v /boot/. /root/boot_backup/. 

这样你便能通过 RAID 保护该分区的副本。当然 RAID 并非备份的方案。采用此方法可避免下文介绍的杂牌及脆弱做法。

<!> 这篇文章所描述的行动可以毁坏现有的文件系统。请先在一个测试设备上进行实验,并创建最新及可靠的备份,然后才正式执行。请勿盲目地剪贴指令,尤其是以 root 身份来执行,除非你清楚了解它们的效用。

这个做法意味着控制器会将原始块设备直接暴露给操作系统。它亦假设所涉及的设备是头两个 SATA 或 SCSI 硬盘,/dev/sda 及 /dev/sdb。若果是头两个平衡 ATA 硬盘,请将 /dev/sda 及 /dev/sdb 改为 /dev/hda 及 /dev/hdb(或者 /dev/sdc,如果是第二个主硬盘)。假如是其它设备,请适切地调整硬盘称谓。请按你的处境小心修改指令,切勿盲目地遵从下面的步骤。

要正确开机,/boot 必须位于非硬盘阵列或 RAID1 分区。RAID0、RAID5 及其它 RAID 类型不适用于 /boot,而 RAID0(没有冗余的条纹)则不推荐给重要的分区使用。只要满足了 /boot 的限制,主目录及其它分区便可以采用 RAID5 或其它类型;然而,这个样例不会涵盖那些选择。

dd 这个指令及下面所描述的步骤将会毁灭硬盘上的所有数据。如果硬盘上藏有需用的数据,请将它们备份。

第一部份

  1. 停用主机板或 RAID 控制器 BIOS 上的任何仿真的硬盘阵列,令它成为一个正常的控制器 —— 多数是 ATA 或 SATA,也有可能是 SCSI。假如之前采用的是仿真硬盘阵列,你或许须要盖过分区列表。切勿装入 RAID 驱动程序。以下指令可以于图像安装分割硬盘前在第二个虚拟控制台(Ctrl-Alt-F2)内执行;或者在安装媒体的修复模式中执行;又或者通过 LiveCD 来执行。设备内的分区表将会被清除,而硬盘上的所有数据将会被遗失!
    • dd if=/dev/zero of=/dev/sda bs=512 count=64 
      dd if=/dev/zero of=/dev/sdb bs=512 count=64
  2. 开始以图像界面安装 CentOS。你可能需要用 "boot: linux nodmraid" 或在首个安装选单按 [Tab] 来加入 nodmraid 这个开机指令。
  3. 自定分区并删除所有分区,包括 LVM,来作个新开始
  4. 在 sda 及 sdb 上为 /boot 创建一个 ~100MB 的软件硬盘阵列分区
  5. 在 sda 及 sdb 上为 swap 创建一个软件硬盘阵列分区。这个分区的尺寸视乎内存数量及个人首选。这个范件采用 1GB。这将会是个硬盘阵列式的 swap***
  6. 在 sda 及 sdb 上为 / 创建一个软件硬盘阵列分区并用尽所有空间
  7. 点击 RAID 键来创建一个硬盘阵列设备
  8. 选择那两个 100MB 的分区,设置挂载点为 /boot,文件系统类型为 ext3,硬盘阵列类型为 RAID1(缺省设备名称是 md0),点击 OK
  9. 点击 RAID 键来创建一个硬盘阵列设备
  10. 选择那两个 1GB 的分区,配置文件案系统类型为 swap,硬盘阵列类型为 RAID1(缺省设备名称是 md1),点击 OK
  11. 点击 RAID 键来创建一个硬盘阵列设备
  12. 选择那两个大的分区,设置挂载点为 /,配置文件案系统类型为 ext3,硬盘阵列类型为 RAID1(缺省设备名称是 md2),点击 OK
  13. 你的分区已经创建好。你的划面应该看似以下样子:
    • RAID 设备

      /dev/md0 ext3 [选择了] 100
      /dev/md1 swap [选择了] 1024
      /dev/md2 ext3 [选择了] [很多 GB]

      硬磁

      /dev/sda
         /dev/sda1 /dev/md0 software RAID [未被选择] 100
         /dev/sda2 /dev/md1 software RAID [未被选择] 1024
         /dev/sda3 /dev/md2 software RAID [未被选择] [很多 GB]
      /dev/sdb
         /dev/sdb1 /dev/md0 software RAID [未被选择] 100
         /dev/sdb2 /dev/md1 software RAID [未被选择] 1024
         /dev/sdb3 /dev/md2 software RAID [未被选择] [很多 GB]
  14. 点击 Next 进到 GRUB 引导程序划面
  15. 缺省 GRUB 会安装到 /dev/sda,点击 Next
  16. 继续安装 CentOS,选择所需的组件
  17. 当 CentOS 已完成安装并重新引导,请进到第二部份。切勿更新 CentOS;切勿做其它事情!

第二部份

这部份会确保 RAID1 /boot 的两个成员都可以用来开机。请在硬盘失效/更替后重复这个部份。

方法一 —— 开机时用 GRUB

在 GRUB 选单输入 "c" 选项进到 GRUB 的提示行,接着:

按 ESC 键返回 GRUB 选单,然后正常开机。进行方法二里面的 1 及 5-8 步。

方法二 —— 在运作中的系统用 GRUB

  1. 确定你是 root

  2. 输入 "/sbin/grub" 这个指令,按 Enter
  3. 在 GRUB 的指令壳输入以下指令:
    • grub> device (hd0) /dev/sdb
      grub> device (hd1) /dev/sda
      grub> root (hd0,0)
      grub> setup (hd0)
      grub> root (hd1,0)
      grub> setup (hd1)
      grub> quit
  4. 祝你好运。输入 "reboot",按 Enter。
  5. 当开机完成后,进行系统更新。
  6. 如果内核或 glibc 更新了,请重新开机。
  7. 如果有新的内核,输入 "uname -a" 后按 Enter 来检查你的确在运用最新的内核。
  8. 完成了!



这页的英文版由 PhilSchaffner 创建及维护。欢迎其它拥有编辑权限的 Wiki 贡献者作出更正或添加。其它有意见的读者可以在我的 Wiki 页内找到联络数据。

Translation of revision 37

zh/HowTos/SoftwareRAIDonCentOS5 (last edited 2013-02-04 04:38:49 by TimothyLee)