在FreeBSD上使用软RAID-1

Dru Lavigne
【在FreeBSD上使用软RAID-1】有没有想过为低端服务器做软 RAID?你或许想过在不购置硬 RAID 控制卡的前提下 , 通过磁盘镜像为你的工作站带来冗余保护 。你是否有过痛苦的配置经历 , 使你对 Unix 系统上的软 RAID 却步?
FreeBSD 5.3 及更高的版本加入了 gmirror(8);它让你轻易地配置使用软 RAID 1 。尽管 gmirror 已有不少教程 , 但我发现它们不是要求用 bsdlabel 来手动计算分区的大小就是要用到一张用以修正现有系统的软盘 。
我以为在安装操作系统的过程中配置 RAID 更为合理 。我也希望配置步骤能做到易于理解并且不造成诸如计算出错的人为错误 。通过拼凑现有的说明文字 , 自己进行多方配置实验后 , 我找到了在数个不同系统上都适用的配置步骤 。我也从 gmirror 的编写者 Pawel Jakub Dawidek 那里得到了很有价值的回馈;他透露了 gmirror 一些尚未公开的特性 。
GEOM 背景知识
在介绍配置步骤之前 , 先了解一下 GEOM 是很有用的 。GEOM 是 FreeBSD 5.0 引入的模块磁盘构架 。该模块构架允许通过编写程序来操控磁盘 。FreeBSD 5.3 引入的软 RAID 程序就是最好的例子 。
gstripe(8) 可做 RAID 0
gmirror(8) 可做 RAID 1
graid3(8) 可做 RAID 3
以上的首字符 g 表示这些程序都利用到了 GEOM 。
注:若你不知道 RAID 为何物 , 则可参阅 Webopedia 有关定义不同 RAID 的链接 http://www.webopedia.com/TERM/R/RAID.HTML 。
man 4 geom 述说了 geom 所用到的磁盘术语;在设置 gmirror 的过程中 , 我们将会看到一些 。它们包括:
provider -- 该 GEOM 实体在 /dev 下出现 。本文将介绍如何创建 /dev/mirror/gm0 这个 provider , 它代表磁盘镜像或双工 。
consumer -- 该实体接收 I/O 请求 。在镜像/双工的例子中 , 这指的就是两块硬盘 。我用两根数据线分别连接两块 IDE 硬盘 , 得到 /dev/ad0 和 /dev/ad2 。
metadata (元数据) -- 在不同的 RAID 中 , 它包括阵列成员及其尺寸、位置 , 逻辑磁盘及分区的描述和磁盘阵列的当前状态 。
镜像/双工 -- RAID 1 保持两块硬盘的数据一致 。换句话说 , 它将一块硬盘的数据镜射到另一块硬盘 。若两块硬盘同接在一根 IDE 数据线上 , 则称为镜像;若两块硬盘接在不同的数据线上 , 则称为双工 。因为单一数据线易造成单点故障 , 所以采用双工的占大多数 。
在安装操作系统的过程中配置镜像/双工
若你打算用 RAID 1 , 为避免节外生枝 , 购置两块一模一样的硬盘(相同的型号和尺寸) 。若型号或尺寸不一致 , 事情将会变得很复杂;就算经过艰辛的配置成事了 , 到头来 , 你只能以浪费较大硬盘多出来的空间收场 。将一个作为第一主盘 , 另一个作为第二主盘 , 接好两块一样的硬盘 。在安装操作系统之前 , 再次检查 CMOS 是否已认出两块硬盘 。
按自己喜欢的安装方式开始安装 FreeBSD 任一版本(5.3 或以上) 。到了 select Drives (选定硬盘)菜单时 , 将会显示 ad0 和 ad2 。选 ad0 , 因为你将把操作系统安装于该主盘上 。
进入 fdisk 界面后 , 删除所有现存的分区 , 然后选 Use entire disk (使用整个磁盘) 。当提示启动菜单时 , 选 Standard MBR (标准 MBR) 。
来到 disklabel 界面时 , 根据自己的需要将 ad0 分区 。若不知道该怎么做 , 选 a 让系统自动分区 。然后选择预设的安装套件和安装媒体源 , 让操作系统如常安装 。
安装完毕后 , 浏览到 postinstall configurations (后安装配置)设置你的时区 , 创建用户帐号 , 设定 root 的密码等 。
不过 , 当回到 sysinstall 主菜单时 , 不要急于重启系统 。按下 Alt-F4 , 进入命令提示行 。我们首先键入 csh 命令 , 这样就得到一个带历史记录的 shell (默认的 shell 是 Bourne) 。

推荐阅读