Differences between revisions 5 and 6

Deletions are marked like this. Additions are marked like this.
Line 7: Line 7:
精简答案:它是一个可以如普通硬盘般被分割的 mdadm 磁盘数组 精简答案:它是一个可以如普通硬盘般被分割的 md 磁盘数组
Line 9: Line 9:
一直以来,使用 mdadm 磁盘数组的传统方法是:在组成磁盘数组的硬盘上个别创建分区;将这些分区类型设置为 0xfd(自动检测的 linux 磁盘数组);利用这些分区创建一个磁盘区;将它格式化为某种文件系统并使用它。假如你需要数个文件系统在磁盘数组上,你必须创建数个 RAID 磁盘区,意思就是你必须在数组中的每个硬盘上创建完全相同的分区,及创建多个 RAID 磁盘区。相比起来,一个真正的磁盘数组控制器容许你创建一个 RAID 磁盘区,而它可以如普通硬盘般被分割。 一直以来,使用 md 磁盘数组的传统方法是:在组成磁盘数组的硬盘上个别创建分区;将这些分区类型设置为 0xfd(自动检测的 linux 磁盘数组);利用这些分区创建一个磁盘区;将它格式化为某种文件系统并使用它。假如你需要数个文件系统在磁盘数组上,你必须创建数个 RAID 磁盘区,意思就是你必须在数组中的每个硬盘上创建完全相同的分区,及创建多个 RAID 磁盘区。相比起来,一个真正的磁盘数组控制器容许你创建一个 RAID 磁盘区,而它可以如普通硬盘般被分割。
Line 19: Line 19:
这份指引描述如何由零开始将 CentOS 5 及 6 安装在一个可分割的磁盘数组上。然而,你亦可以将现有非 RAID 的安装移植到一个可分割的磁盘数组 —— 你只需在现有硬磁上找到未被分割的空间,又或者调整最尾一个分区的尺寸来释放一些空间请依从这份指引的第三步来进行移植。 这份指引描述如何
i.
由零开始将 CentOS 5 及 6 安装在一个可分割的 RAID1 系统上。
ii.
将现有非 RAID 的 CentOS 5 及 6 安装移植到一个可分割的 RAID1 系统上。
Line 24: Line 26:
如果你要进行新的安装或移植现有的非 RAID 安装,你必须在磁盘末端预留一些未分割的空间。这空间会被 ``mdadm`` 用来存储数组的中继数据,亦即是 ''RAID 的超级数据块''。0.90 版的超级数据块,我们采用的版本,只需数 KB 的磁盘空间。因此,在磁盘的末端预留 1MB 未分割空间已经十分稳妥。

预留了超级数据块的空间后,我们便可以创建数组及以 `/dev/sda` 单一碟盘来引导它。接着你可以加入 `/dev/sdb` 这个镜像磁盘;或者在''降级模式''下设置及引导你的 RAID1 系统后才加入它。第二个选择意味着镜像磁盘在后台进行重建,而你继续正常运用系统;由于重建镜像磁盘是项非常冗长的程序,此做法较为可取。

在这两个情况下,我们同样要创建及启用 RAID1 数组,然后以手动方式准备系统,好能设置它从 RAID 开机。
Line 26: Line 33:
 1. 利用标准的安装程序将 CentOS 安装在第一个硬磁 `/dev/sda` 上。在安装时请选择手动式分割,并剩下最少一个单元的未分割空间在硬盘的末端。你迟些便能够赎回大部份的空间。你须要预留这个空间给 mdadm,因它会将中继数据存储在 RAID 磁盘区的最后一个数据块内。
 1. 利用 CentOS 的安装碟开机并进入修复模式。安装程序会询问是否需要挂载现存的 CentOS 安装,而你必须拒绝。
 1. 在 mdadm 的降级模式下,以 `/dev/sda` 创建软件磁盘数组:{{{
 1. 预留空间给超级数据块。
  i. __新的安装__。
利用标准的安装程序将 CentOS 安装在第一个硬磁 `/dev/sda` 上。在安装时请选择''手动式分割'',并预留最少 1 MB 未分割空间在硬盘的末端。
  ii. __移植现有的非
RAID 系统__。有需要的话,请缩小最后一个分区来取得硬盘末端的 1 MB 空间。要缩小一个分区,你必需先缩小里的文件系统,然后才能把分区缩小。请利用 `resize2fs` 及 `parted` 来进行此步骤
 1. 利用 CentOS 的安装碟开机并进入''修复模式''。安装程序会询问是否需要挂载现存的 CentOS 安装,而你必须拒绝。
 1. 在只有 `/dev/sda` 的降级模式下,以 `mdadm` 创建软件磁盘数组:{{{
Line 31: Line 40:
 1. 镜像磁盘 `/dev/sdb` 加入磁盘数组,并检查 `/proc/mdstat` 看看是否已经开始创建磁盘数组:{{{  1. __选择性__[[Anchor(optStep)]]。把镜像磁盘 `/dev/sdb` 加入磁盘数组,并检查 `/proc/mdstat` 看看是否已经开始创建磁盘数组:{{{
Line 35: Line 44:
 __注__:纵使是必须的,此步骤可以延期实行;要是你现在略过它,你可在系统下次开机后执行。
Line 40: Line 50:
mount -o bind /tmp /mnt/sysimage/tmp
Line 44: Line 55:
 __'''由现在开始,所有步骤都在 chroot 环境下进行。'''__  上述例子假设整个系统位于一个文件系统内,因为只有 '/' 被挂载。当系统被划分为多个文件系统时,你最少必须挂载 / 、/boot 及 /usr,正如以下例子(分区名称大概会不同):
 {{{
...
mount /dev/md_d0p9 /mnt/sysimage
mount /dev/md_d0p1 /mnt/sysimage/boot
mount /dev/md_d0p3 /mnt/sysimage/usr
...
}}}
Line 47: Line 65:
__注__:''下列步骤会在 chroot 环境下进行。''
Line 90: Line 109:
你现在要做的事情视乎你有没有略过第一部份内的[#optStep 被置标为「选择性」的那一步]:
Line 91: Line 111:
 1. 现在你唯一要做的就是定时检查 `/proc/mdstat`,看看磁盘数组是否在重建中。当重建完成后,你便可以安全地重新开机。
 1. 你亦可以选择性地调整你的磁盘数组上的最后一个分区,来赎回仍未分割的空间。
 a. 如果你没有略过[#optStep 选择性步骤],亦即是说你已经把镜像磁盘加进数组中,你只须定时检查 `/proc/mdstat`,看看磁盘数组是否在重建中。当重建完成后,你便可以安全地重新开机。
 a. 否则,假设你略过了[#optStep 选择性步骤],请立即重新开机并实行[#optStep 被略过的步骤]来加入镜像磁盘(请以 root 执行指令);镜像磁盘将会在后台进行重建,而你可继续正常运用系统(通过定时检查 `/proc/mdstat`,你便能得悉磁盘数组何时完成重建)。
Line 94: Line 114:
~-Translation of revision 8-~ ~-Translation of revision 13-~

如何在一个可分割的软件 RAID1 上安装 CentOS 5 及 6

究竟可分割的软件 RAID1 是什么?

精简答案:它是一个可以如普通硬盘般被分割的 md 磁盘数组

一直以来,使用 md 磁盘数组的传统方法是:在组成磁盘数组的硬盘上个别创建分区;将这些分区类型设置为 0xfd(自动检测的 linux 磁盘数组);利用这些分区创建一个磁盘区;将它格式化为某种文件系统并使用它。假如你需要数个文件系统在磁盘数组上,你必须创建数个 RAID 磁盘区,意思就是你必须在数组中的每个硬盘上创建完全相同的分区,及创建多个 RAID 磁盘区。相比起来,一个真正的磁盘数组控制器容许你创建一个 RAID 磁盘区,而它可以如普通硬盘般被分割。

因此由 mdadm 2.6 起,它容许你创建可分割的 RAID 碟碟区。这些 RAID 磁盘区的设备名称是 /dev/md_dX,而其上的分区名称是 /dev/md_dXpY。当 mdadm 组合可分割式磁盘数组的磁盘区时,它会自动为其上的分区在 dev 目录内置立记录。

为何你会想将系统案装在一个可分割的软件 RAID1 上?

如果你将系统安装在一个可分割的软件磁盘阵例上,你可以将整个硬盘作为磁盘数组内的成员设备。由于 RAID1 是一个镜像,就算某一个硬盘失效了,你仍可以用其它硬盘来开机,而无须做任何特别步骤如保存开机程序。当你需要维修一个有故障的 RAID 磁盘区,而磁盘数组的成员是整个硬磁,你只需放入新的硬盘及执行 mdadm --add 便可以了;你无须进行分割或做其它事情。

安装程序

这份指引描述如何: i. 由零开始将 CentOS 5 及 6 安装在一个可分割的 RAID1 系统上。 ii. 将现有非 RAID 的 CentOS 5 及 6 安装移植到一个可分割的 RAID1 系统上。

在这份教学文档内,我们会假设你的系统拥有两个硬盘:/dev/sda/dev/sdb

第 1 部份:创建数组、挂载及 chroot

如果你要进行新的安装或移植现有的非 RAID 安装,你必须在磁盘末端预留一些未分割的空间。这空间会被 mdadm 用来存储数组的中继数据,亦即是 RAID 的超级数据块。0.90 版的超级数据块,我们采用的版本,只需数 KB 的磁盘空间。因此,在磁盘的末端预留 1MB 未分割空间已经十分稳妥。

预留了超级数据块的空间后,我们便可以创建数组及以 /dev/sda 单一碟盘来引导它。接着你可以加入 /dev/sdb 这个镜像磁盘;或者在降级模式下设置及引导你的 RAID1 系统后才加入它。第二个选择意味着镜像磁盘在后台进行重建,而你继续正常运用系统;由于重建镜像磁盘是项非常冗长的程序,此做法较为可取。

在这两个情况下,我们同样要创建及启用 RAID1 数组,然后以手动方式准备系统,好能设置它从 RAID 开机。

CentOS 5 及 6 通用的步骤

  1. 预留空间给超级数据块。
    1. 新的安装。利用标准的安装程序将 CentOS 安装在第一个硬磁 /dev/sda 上。在安装时请选择手动式分割,并预留最少 1 MB 未分割空间在硬盘的末端。 ii. 移植现有的非 RAID 系统。有需要的话,请缩小最后一个分区来取得硬盘末端的 1 MB 空间。要缩小一个分区,你必需先缩小内里的文件系统,然后才能把分区缩小。请利用 resize2fsparted 来进行此步骤。

  2. 利用 CentOS 的安装碟开机并进入修复模式。安装程序会询问是否需要挂载现存的 CentOS 安装,而你必须拒绝。

  3. 在只有 /dev/sda 的降级模式下,以 mdadm 创建软件磁盘数组:

    mdadm --create --metadata=0.90 --level=1 --raid-devices=2 /dev/md_d0 /dev/sda missing
    
  4. 选择性。把镜像磁盘 /dev/sdb 加入磁盘数组,并检查 /proc/mdstat 看看是否已经开始创建磁盘数组:

    mdadm --add /dev/md_d0 /dev/sdb
    cat /proc/mdstat
    

    :纵使是必须的,此步骤可以延期实行;要是你现在略过它,你可在系统下次开机后执行。

  5. 现在你必须手动地挂载系统并 chroot 到里面来更改开机设置:

    mkdir /mnt/sysimage
    mount /dev/md_d0p1 /mnt/sysimage
    mount -o bind /dev /mnt/sysimage/dev
    mount -o bind /selinux /mnt/sysimage/selinux
    mount -o bind /tmp /mnt/sysimage/tmp
    mount -t proc none /mnt/sysimage/proc
    mount -t sysfs none /mnt/sysimage/sys
    chroot /mnt/sysimage
    
    上述例子假设整个系统位于一个文件系统内,因为只有 '/' 被挂载。当系统被划分为多个文件系统时,你最少必须挂载 / 、/boot 及 /usr,正如以下例子(分区名称大概会不同):
    ...
    mount /dev/md_d0p9 /mnt/sysimage
    mount /dev/md_d0p1 /mnt/sysimage/boot
    mount /dev/md_d0p3 /mnt/sysimage/usr
    ...
    

第 2 部份:设置系统由 RAID 开机

下列步骤会在 chroot 环境下进行。

CentOS 5 的步骤

  1. 创建 /etc/mdadm.conf

    mdadm --detail --scan > /etc/mdadm.conf 
  2. 编辑 /etc/fstab。你必须将所有 LABEL= 的挂载转为明确的设备名称,例如:/dev/md_d0p1/dev/md_d0p2……

  3. 编辑 /etc/grub.conf,将 root=LABEL=…… 改为 root=/dev/md_d0p1(或者你的设置内的相应分区)。

  4. 现在你必须修正 mkinitrd 脚本。请从 这页下载修正档并执行以下指令:

    cd /sbin
    cp mkinitrd mkinitrd.dist
    patch -p0 < /tmp/mkinitrd-md_d0.patch
    

详情请参阅这个相关的错误报告

  1. 停止 yum 更新 mkinitrd 组件。在 /etc/yum.conf 内加入
    exclude=mkinitrd*
    
  2. 创建新的 initrd 映像:
    cd /boot
    mv initrd-2.6.18-128.el5.img initrd-2.6.18-128.el5.img.bak
    mkinitrd /boot/initrd-2.6.18-128.el5.img 2.6.18-128.el5
    

假若你将来需要更新 mkinitrd 组件,但检测可分割磁盘数组的错误仍未被矫正,你必须将以上的修正再次应用在 mkinitrd,然后重新创建 initrd。

CentOS 6 的步骤

  1. 创建 /etc/mdadm.conf:

    mdadm --detail --scan > /etc/mdadm.conf
    
  2. 编辑 /etc/fstab:你必须把所有采用 UUID= 的挂载改为设备名称,例如 /dev/md_d0p1/dev/md_d0p2、……

  3. 编辑 /etc/grub.conf,以 root=/dev/md_d0p1(或对应你设置内的分区)代替 root=UUID=……。你也要把内核的 rd_NO_MD 选项删除(存在的话),否则开机时便不会找到任何 md 设备(RAID)。

  4. 创建新的 initramfs 映像:
    cd /boot
    mv initramfs-2.6.32-220.el6.x86_64.img initramfs-2.6.32-220.el6.x86_64.img.bak
    dracut /boot/initramfs-2.6.32-220.el6.x86_64.img 2.6.32-220.el6.x86_64
    

第三部份:重新开机

你现在要做的事情视乎你有没有略过第一部份内的被置标为「选择性」的那一步

  1. 如果你没有略过选择性步骤,亦即是说你已经把镜像磁盘加进数组中,你只须定时检查 /proc/mdstat,看看磁盘数组是否在重建中。当重建完成后,你便可以安全地重新开机。

  2. 否则,假设你略过了选择性步骤,请立即重新开机并实行被略过的步骤来加入镜像磁盘(请以 root 执行指令);镜像磁盘将会在后台进行重建,而你可继续正常运用系统(通过定时检查 /proc/mdstat,你便能得悉磁盘数组何时完成重建)。

Translation of revision 13

zh/HowTos/Install On Partitionable RAID1 (last edited 2012-08-04 16:40:24 by TimothyLee)