下一页 上一页 目录

4. 从非 raid 升级到 RAID1/4/5

将非 raid 系统升级到 raid 相当容易,它由以下描述的几个离散步骤组成。此描述适用于具有启动分区、根分区和交换分区的系统。

OLD disk in the existing system:

    /dev/hda1     boot, may be dos+lodlin or lilo
    /dev/hda2     root
    /dev/hda3     swap
我们将添加一个额外的磁盘,并将整个系统转换为 RAID1。您可以轻松添加多个磁盘,并使用相同的步骤创建一个 RAID5 阵列。

4.1 步骤 1 - 准备一个新的内核

下载一个干净的内核,raidtools-0.90(或最新版本),以及内核补丁,以将内核升级到 0.90 raid。

编译并安装 raidtools,并阅读文档。

编译并安装内核以支持您将要使用的所有 raid 类型(0/1/4/5 ?)。 确保在内核配置中指定 raid 设备的自动启动。 测试内核是否正确启动,并检查 /proc/mdstat 以查看新内核是否支持您将要使用的 raid 类型。

4.2 步骤 2 - 为您的新 raid 设置 raidtab。

新磁盘将作为主设备添加到额外的 IDE 控制器,因此成为 /dev/hdc

    /dev/hdc1     16megs -- more than enough for several kernel images
    /dev/hdc2     most of the disk
    /dev/hdc3     some more swap space, if needed. otherwise add to hdc2

将 /dev/hdc1 和 /dev/hdc2 的分区类型更改为 "fd" 以用于 raid-autostart。

使用 failed-disk 参数,为所需的 RAID1 配置创建 raidtab。 故障磁盘必须是表中的最后一个条目。

# example raidtab
# md0 is the root array
raiddev                 /dev/md0
raid-level              1
nr-raid-disks           2
chunk-size              32
# Spare disks for hot reconstruction
nr-spare-disks          0
persistent-superblock   1
device                  /dev/hdc2
raid-disk               0
# this is our old disk, mark as failed for now
device                  /dev/hda2
failed-disk             1

# md1 is the /boot array
raiddev                 /dev/md1
raid-level              1
nr-raid-disks           2
chunk-size              32
# Spare disks for hot reconstruction
nr-spare-disks          0
persistent-superblock   1
device                  /dev/hdc1
raid-disk               0
# boot is marked failed as well
device                  /dev/hda1
failed-disk               1

4.3 创建、格式化和配置 RAID

使用以下命令创建 md 设备

    mkraid /dev/md0
    mkraid /dev/md1

raid 设备应该被创建并启动。 检查 /proc/mdstat 应该显示内核中的 raid 个性和正在运行的 raid 设备。

使用以下命令格式化启动和根设备

    mke2fs /dev/md0
    mke2fs /dev/md1
将新的根设备挂载到方便的位置,并创建 /boot 目录并挂载启动分区。
    mount /dev/md0 /mnt
    mkdir /mnt/boot
    mount /dev/md1 /mnt/boot

4.4 将当前操作系统复制到新的 raid 设备

这非常简单直接。

    cd /
    # set up a batch file to do this
    cp -a /bin /mnt
    cp -a /dev /mnt
    cp -a /etc /mnt
    cp -a (all directories except /mnt, /proc, and nsf mounts) /mnt
如果您已将其他磁盘挂载或链接到您的根文件系统,则此操作可能会比较棘手。 上面的示例假设一个非常简单的系统,您可能需要稍微修改此过程。

4.5 测试您的新 RAID

制作启动软盘并使用 rdev 设置内核。

    dd if=kernal.image of=/dev/fd0 bs=2k
    rdev /dev/fd0 /dev/md0
    rdev -r /dev/fd0 0
    rdev -R /dev/fd0 1

修改 RAID 设备上的 fstab 以反映新的挂载点,如下所示

  /dev/md0        /       ext2    defaults        1 1
  /dev/md1        /boot   ext2    defaults        1 1

卸载 raid 设备并启动新的文件系统,以查看一切是否正常工作。

    umount /mnt/boot
    umount /mnt
    raidstop /dev/md0
    raidstop /dev/md1
    shutdown -r now

您的 RAID 系统现在应该以降级模式运行,并使用启动软盘。 仔细检查您是否已将所有内容传输到新的 raid 系统。 如果您在这里搞砸了,又没有备份,那就 *完蛋了*!

如果某些地方没有工作,请重新启动您的旧系统并返回并修复问题,直到您成功完成此步骤。

4.6 将旧磁盘集成到 raid 阵列中

上一步的成功意味着 raid 阵列现在可以运行,但没有冗余。 我们现在必须重新分区旧驱动器以适应新的 raid 阵列。 请记住,如果几何结构不相同,则旧驱动器上的分区大小必须与 raid 分区相同或更大,否则它们无法添加到 raid 集中。

根据需要重新分区旧驱动器。 示例

    /dev/hda1     same or larger than /dev/hdc1
    /dev/hda2     same or larger than /dev/hdc2
    /dev/hda3     anything left over for swap or whatever...

将 raidtab 中的 failed-disk 参数更改为 raid-disk,并将新的(旧的)磁盘分区热添加到 raid 阵列。

    raidhotadd /dev/md1 /dev/hda1
    raidhotadd /dev/md0 /dev/hda2
检查 /proc/mdstat 应该显示一个或多个 raid 设备正在为新分区重建数据。 一两分钟后...或者更久,raid 阵列应该完全同步(对于大分区,这可能需要一段时间)。

使用本文档第一部分描述的步骤,在新 raid 对上设置可启动的 raid。 在设置和测试最后一步时,请保留启动软盘。


下一页 上一页 目录