如何在 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}}}
- 开始以图像界面安装 CentOS。你可能需要用 "boot: linux nodmraid" 或在首个安装选单按 [Tab] 来加入 nodmraid 这个开机指令。
- 自定分区并删除所有分区,包括 LVM,来作个新开始
- 在 sda 及 sdb 上为 /boot 创建一个 ~100MB 的软件硬盘阵列分区
- 在 sda 及 sdb 上为 swap 创建一个软件硬盘阵列分区。这个分区的尺寸视乎内存数量及个人首选。这个范件采用 1GB。这将会是个硬盘阵列式的 swap***
- 在 sda 及 sdb 上为 / 创建一个软件硬盘阵列分区并用尽所有空间
- 点击 RAID 键来创建一个硬盘阵列设备
- 选择那两个 100MB 的分区,设置挂载点为 /boot,文件系统类型为 ext3,硬盘阵列类型为 RAID1(缺省设备名称是 md0),点击 OK
- 点击 RAID 键来创建一个硬盘阵列设备
- 选择那两个 1GB 的分区,配置文件案系统类型为 swap,硬盘阵列类型为 RAID1(缺省设备名称是 md1),点击 OK
- 点击 RAID 键来创建一个硬盘阵列设备
- 选择那两个大的分区,设置挂载点为 /,配置文件案系统类型为 ext3,硬盘阵列类型为 RAID1(缺省设备名称是 md2),点击 OK
- 你的分区已经创建好。你的划面应该看似以下样子:
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]
- 点击 Next 进到 GRUB 引导程序划面
- 缺省 GRUB 会安装到 /dev/sda,点击 Next
- 继续安装 CentOS,选择所需的组件
- 当 CentOS 已完成安装并重新引导,请进到第二部份。切勿更新 CentOS;切勿做其它事情!
2. 第二部份
这部份会确保 RAID1 /boot 的两个成员都可以用来开机。请在硬盘失效/更替后重复这个部份。
2.1. 方法一 —— 开机时用 GRUB
在 GRUB 选单输入 "c" 选项进到 GRUB 的提示行,接着:
grub> root (hd1,0) grub> setup (hd1) grub> root (hd0,0) grub> setup (hd0)
按 ESC 键返回 GRUB 选单,然后正常开机。进行方法二里面的 1 及 5-8 步。
2.2. 方法二 —— 在运作中的系统用 GRUB
确定你是 root。
- 输入 "/sbin/grub" 这个指令,按 Enter
- 在 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
- 祝你好运。输入 "reboot",按 Enter。
- 当开机完成后,进行系统更新。
- 如果内核或 glibc 更新了,请重新开机。
- 如果有新的内核,输入 "uname -a" 后按 Enter 来检查你的确在运用最新的内核。
- 完成了!
这份指引是根据 CentOS 论坛议题引述 TimVerhoeven 在 irc.freenode.net 上的 #centos 频道所提供的数据,吸纳了论坛用户及 centos-docs 上的反馈作出多番修饰而写成的。
- 以上程序假设一个图像化的安装。在文字模式下创建 RAID-1 设备是可行的,但颇为冗长及苛刻。你首先要在硬盘上创建每个 RAID 成员分区,并且指定采用单一个硬盘。如果你不为分区个指定单一的硬盘(例如 sda 或 sdb),Disk Druid 似乎会在创建 RAID 设备时修改你的分配。在创建 RAID 设备的过程中,请确定你在每个硬盘上单单选择所需的 RAID 分区。
同一个方法应该可以应用在位于 RAID1 上的 /,而不须 /boot。这个 Fedora 指南的连结就采用了这个方法,它应该颇合用。这篇 Fedora 文章亦为了如何用 mdadm 进行修复提供了很好的指引。
本 Wiki 内其它有关 RAID 的文章包括 如何利用修复光盘将一个 CentOS 5 系统转换成 RAID1 及 如何在一个可分割的软件 RAID1 上安装 CentOS 5。
- 一般有关软件硬盘阵列的文章:
一篇不错的 Linux Journal 文章关于 修复 RAID 及 LVM2 扇区。
* 有些控制器声称是硬件硬盘阵列,但仿似 winmodem 般须要用驱动程序来运作。这些控制器就是所谓的「仿真 RAID」或「冒牌货」,它们在 CentOS 上停用 RAID 功能会更佳。这篇外置文章颇详细地探讨这些议题。
** 欲得到有关硬盘列件的解释,请阅读 Wikipedia 文章,或在 google 上寻找其它精彩描述。要得更多针对企业级 Linux 5 的信息,请参阅部署指南的「冗余硬盘阵列(RAID)」部份或 CentOS 5 常见问题集内的「我如何在 CentOS 5 上安装一个软件硬盘阵列?」。
- *** 另一个舍弃冗余来换取更佳性能和双倍调换空间,但沿用相同分区尺寸的做法,就是采用两个非硬盘阵列的分区。这样做的性能与 RAID0 相若,但就算一个硬盘坏了仍能捱得住,虽然只会剩下一半的调换空间。
- 选择二:把剩下的空间放在另一个 RAID1,然后在 /dev/md1 上创建一个 LVM 扇区,把 /、swap、甚至 /home 或其它文件系统以逻辑扇区的型式创建在 LVM 内。请跳过第 1 分段余下的指引。
这页的英文版由 PhilSchaffner 创建及维护。欢迎其它拥有编辑权限的 Wiki 贡献者作出更正或添加。其它有意见的读者可以在我的 Wiki 页内找到联络数据。
Translation of revision 37