| 论坛注册| 加入收藏 | 设为首页| RSS
Google
您当前的位置:首页 > Linux频道 > Linux入门与提高 > 安装与配置

redhatlinux as4 下利用mdadm做raid5

时间:2007-08-17 10:37:45  来源:Linux联盟收集整理  作者:
Linux下使用mdadm创建和管理软raid 注:本次操作以RHEL4为例,但应该可以应用到其它大部分的distro上(guess)。 Y9qLinux联盟
mdadm的几个常用参数
  • -C 创建Raid,后面跟参数,代表raid设备的名称。比如:/dev/md0,/dev/md1。
  • -n 用于创建磁盘阵列的磁盘个数。
  • -l Raid的级别。
  • -x 指定用于hotspare(热备盘)的磁盘个数。如果阵列中有一块硬盘坏了,它会立刻顶上,并rebuild;
  • -D 显示软raid的详细信息;
  • -s 扫描配置文件(/etc/mdadm.conf)或'/proc/mdstat'来查看遗漏的信息f;
    创建软raid的大体流程
    • 使用fdisk工具为新磁盘创建分区;
    • 使用mkfs.XXXX工具将刚才划分好的分区格式化成某种格式的文件系统。比如:ext3,reiserfs等;
    • 使用mdadm来创建软raid;
    • 创建/etc/mdadm.conf文件(注意文件的格式,包括是否有逗号等等。该文件是为了系统在重启后能够自动启用软raid。可以查看/etc/rc.sysinit脚本,搜索'mdadm'字符串就明白了);
      示例:创建软raid5(+hotspare)以下是我的一次实际操作的完整过程: Y9qLinux联盟
      • 这是用'fdisk -l'命令查看到的我当前的磁盘和分区情况(只有/dev/sda在使用,其它四个都是新磁盘,没有分区,没有格式化):
        # fdisk -lY9qLinux联盟
        Y9qLinux联盟
        Disk /dev/sda: 6442 MB, 6442450944 bytesY9qLinux联盟
        255 heads, 63 sectors/track, 783 cylindersY9qLinux联盟
        Units = cylinders of 16065 * 512 = 8225280 bytesY9qLinux联盟
        Y9qLinux联盟
           Device Boot      Start         End      Blocks   Id  SystemY9qLinux联盟
        /dev/sda1   *           1         720     5783368+  83  LinuxY9qLinux联盟
        /dev/sda2             721         783      506047+  82  Linux swapY9qLinux联盟
        Y9qLinux联盟
        Disk /dev/sdb: 214 MB, 214748160 bytesY9qLinux联盟
        64 heads, 32 sectors/track, 204 cylindersY9qLinux联盟
        Units = cylinders of 2048 * 512 = 1048576 bytesY9qLinux联盟
        Y9qLinux联盟
        Disk /dev/sdb doesn't contain a valid partition tableY9qLinux联盟
        Y9qLinux联盟
        Disk /dev/sdc: 214 MB, 214748160 bytesY9qLinux联盟
        64 heads, 32 sectors/track, 204 cylindersY9qLinux联盟
        Units = cylinders of 2048 * 512 = 1048576 bytesY9qLinux联盟
        Y9qLinux联盟
        Disk /dev/sdc doesn't contain a valid partition tableY9qLinux联盟
        Y9qLinux联盟
        Disk /dev/sdd: 214 MB, 214748160 bytesY9qLinux联盟
        64 heads, 32 sectors/track, 204 cylindersY9qLinux联盟
        Units = cylinders of 2048 * 512 = 1048576 bytesY9qLinux联盟
        Y9qLinux联盟
        Disk /dev/sdd doesn't contain a valid partition tableY9qLinux联盟
        Y9qLinux联盟
        Disk /dev/sde: 214 MB, 214748160 bytesY9qLinux联盟
        64 heads, 32 sectors/track, 204 cylindersY9qLinux联盟
        Units = cylinders of 2048 * 512 = 1048576 bytesY9qLinux联盟
        Y9qLinux联盟
        Disk /dev/sde doesn't contain a valid partition tableY9qLinux联盟
        • 使用fdisk创建分区(本例中将整块磁盘划分为一个主分区。其余几块磁盘也做相同的操作。):
          # fdisk /dev/sdbY9qLinux联盟
          Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelY9qLinux联盟
          Building a new DOS disklabel. Changes will remain in memory only,Y9qLinux联盟
          until you decide to write them. After that, of course, the previousY9qLinux联盟
          content won't be recoverable.Y9qLinux联盟
          Y9qLinux联盟
          Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)Y9qLinux联盟
          Y9qLinux联盟
          Command (m for help): nY9qLinux联盟
          Command actionY9qLinux联盟
             e   extendedY9qLinux联盟
             p   primary partition (1-4)Y9qLinux联盟
          pY9qLinux联盟
          Partition number (1-4): 1Y9qLinux联盟
          First cylinder (1-204, default 1):Y9qLinux联盟
          Using default value 1Y9qLinux联盟
          Last cylinder or +size or +sizeM or +sizeK (1-204, default 204):Y9qLinux联盟
          Using default value 204Y9qLinux联盟
          Y9qLinux联盟
          Command (m for help): wY9qLinux联盟
          The partition table has been altered!Y9qLinux联盟
          Y9qLinux联盟
          Calling ioctl() to re-read partition table.Y9qLinux联盟
          Syncing disks.Y9qLinux联盟
          • 为刚才新建的分区建立文件系统(其余几个分区依次做相同的操作):
            # mkfs.ext3 /dev/sdb1Y9qLinux联盟
            mke2fs 1.35 (28-Feb-2004)Y9qLinux联盟
            Filesystem label=Y9qLinux联盟
            OS type: LinuxY9qLinux联盟
            Block size=1024 (log=0)Y9qLinux联盟
            Fragment size=1024 (log=0)Y9qLinux联盟
            52416 inodes, 208880 blocksY9qLinux联盟
            10444 blocks (5.00%) reserved for the super userY9qLinux联盟
            First data block=1Y9qLinux联盟
            Maximum filesystem blocks=67371008Y9qLinux联盟
            26 block groupsY9qLinux联盟
            8192 blocks per group, 8192 fragments per groupY9qLinux联盟
            2016 inodes per groupY9qLinux联盟
            Superblock backups stored on blocks:Y9qLinux联盟
                    8193, 24577, 40961, 57345, 73729, 204801Y9qLinux联盟
            Y9qLinux联盟
            Writing inode tables: doneY9qLinux联盟
            Creating journal (4096 blocks): doneY9qLinux联盟
            Writing superblocks and filesystem accounting information: doneY9qLinux联盟
            Y9qLinux联盟
            This filesystem will be automatically checked every 37 mounts orY9qLinux联盟
            180 days, whichever comes first.  Use tune2fs -c or -i to override.Y9qLinux联盟
            所有磁盘都操作完后,再次用'fdisk -l'查看磁盘及分区状态: Y9qLinux联盟
            # fdisk -lY9qLinux联盟
            Y9qLinux联盟
            Disk /dev/sda: 6442 MB, 6442450944 bytesY9qLinux联盟
            255 heads, 63 sectors/track, 783 cylindersY9qLinux联盟
            Units = cylinders of 16065 * 512 = 8225280 bytesY9qLinux联盟
            Y9qLinux联盟
               Device Boot      Start         End      Blocks   Id  SystemY9qLinux联盟
            /dev/sda1   *           1         720     5783368+  83  LinuxY9qLinux联盟
            /dev/sda2             721         783      506047+  82  Linux swapY9qLinux联盟
            Y9qLinux联盟
            Disk /dev/sdb: 214 MB, 214748160 bytesY9qLinux联盟
            64 heads, 32 sectors/track, 204 cylindersY9qLinux联盟
            Units = cylinders of 2048 * 512 = 1048576 bytesY9qLinux联盟
            Y9qLinux联盟
               Device Boot      Start         End      Blocks   Id  SystemY9qLinux联盟
            /dev/sdb1               1         204      208880   83  LinuxY9qLinux联盟
            Y9qLinux联盟
            Disk /dev/sdc: 214 MB, 214748160 bytesY9qLinux联盟
            64 heads, 32 sectors/track, 204 cylindersY9qLinux联盟
            Units = cylinders of 2048 * 512 = 1048576 bytesY9qLinux联盟
            Y9qLinux联盟
               Device Boot      Start         End      Blocks   Id  SystemY9qLinux联盟
            /dev/sdc1               1         204      208880   83  LinuxY9qLinux联盟
            Y9qLinux联盟
            Disk /dev/sdd: 214 MB, 214748160 bytesY9qLinux联盟
            64 heads, 32 sectors/track, 204 cylindersY9qLinux联盟
            Units = cylinders of 2048 * 512 = 1048576 bytesY9qLinux联盟
            Y9qLinux联盟
               Device Boot      Start         End      Blocks   Id  SystemY9qLinux联盟
            /dev/sdd1               1         204      208880   83  LinuxY9qLinux联盟
            Y9qLinux联盟
            Disk /dev/sde: 214 MB, 214748160 bytesY9qLinux联盟
            64 heads, 32 sectors/track, 204 cylindersY9qLinux联盟
            Units = cylinders of 2048 * 512 = 1048576 bytesY9qLinux联盟
            Y9qLinux联盟
               Device Boot      Start         End      Blocks   Id  SystemY9qLinux联盟
            /dev/sde1               1         204      208880   83  LinuxY9qLinux联盟
            • 使用mdadm创建一个软raid,raid级别:5;并有一个hotspare盘:
              # mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd[b-e]1Y9qLinux联盟
              mdadm: array /dev/md0 started.Y9qLinux联盟
              输出信息显示软raid(/dev/md0)已经启用了。使用mdadm的-D参数(--detail)可以查看软raid状态: Y9qLinux联盟
              # mdadm -D /dev/md0Y9qLinux联盟
              /dev/md0:Y9qLinux联盟
                      Version : 00.90.01Y9qLinux联盟
                Creation Time : Wed Aug 23 15:10:19 2006Y9qLinux联盟
                   Raid Level : raid5Y9qLinux联盟
                   Array Size : 417536 (407.75 MiB 427.56 MB)Y9qLinux联盟
                  Device Size : 208768 (203.88 MiB 213.78 MB)Y9qLinux联盟
                 Raid Devices : 3Y9qLinux联盟
                Total Devices : 4Y9qLinux联盟
              Preferred Minor : 0Y9qLinux联盟
                  Persistence : Superblock is persistentY9qLinux联盟
              Y9qLinux联盟
                  Update Time : Wed Aug 23 15:10:21 2006Y9qLinux联盟
                        State : cleanY9qLinux联盟
              Active Devices : 3Y9qLinux联盟
              Working Devices : 4Y9qLinux联盟
              Failed Devices : 0Y9qLinux联盟
                Spare Devices : 1Y9qLinux联盟
              Y9qLinux联盟
                       Layout : left-symmetricY9qLinux联盟
                   Chunk Size : 64KY9qLinux联盟
              Y9qLinux联盟
                  Number   Major   Minor   RaidDevice StateY9qLinux联盟
                     0       8       17        0      active sync   /dev/sdb1Y9qLinux联盟
                     1       8       33        1      active sync   /dev/sdc1Y9qLinux联盟
                     2       8       49        2      active sync   /dev/sdd1Y9qLinux联盟
                     3       8       65       -1      spare   /dev/sde1Y9qLinux联盟
                         UUID : f8283de5:39c73d89:b9fbc266:fdceb416Y9qLinux联盟
                       Events : 0.2Y9qLinux联盟
              • 生成配置文件(/etc/mdadm.conf):
                # mdadm -D -s >/etc/mdadm.confY9qLinux联盟
                查看一下: Y9qLinux联盟
                # cat /etc/mdadm.confY9qLinux联盟
                ARRAY /dev/md0 level=raid5 num-devices=3 UUID=f8283de5:39c73d89:b9fbc266:fdceb416Y9qLinux联盟
                   devices=/dev/sdb1,/dev/sdc1,/dev/sdd1,/dev/sde1Y9qLinux联盟
                修改(把上面devices=后面的磁盘,都放到DEVICE后面,并且不要逗号。而/dev/md0之后的内容,都要用逗号来分隔): Y9qLinux联盟
                DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1Y9qLinux联盟
                ARRAY /dev/md0 level=raid5,num-devices=3,UUID=f8283de5:39c73d89:b9fbc266:fdceb416Y9qLinux联盟
                重启一下,检测配置好的软raid是否能够在系统重启后自动启用。 Y9qLinux联盟
                重启后,查看'/proc/mdstat'文件就可以看到软raid的状态: Y9qLinux联盟
                # cat /proc/mdstatY9qLinux联盟
                Personalities : [raid5]Y9qLinux联盟
                md0 : active raid5 sdb1[0] sde1[3] sdd1[2] sdc1[1]Y9qLinux联盟
                      417536 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]Y9qLinux联盟
                Y9qLinux联盟
                unused devices: <none>Y9qLinux联盟
                That's all. Y9qLinux联盟
                出现故障后的恢复这里指的出现故障,是指raid中的一块磁盘出现了故障,无法使用。这时候需要使用额外的磁盘来代替它。这里以强制将某块磁盘标记为已损坏,来模拟实际出现故障(注:新的磁盘的容量最好和已损坏的磁盘一致): Y9qLinux联盟
                将/dev/sdb1标记为已损坏: Y9qLinux联盟
                # mdadm /dev/md0 -f /dev/sdb1Y9qLinux联盟
                mdadm: set /dev/sdb1 faulty in /dev/md0Y9qLinux联盟
                这时候使用mdadm的-D参数来查看状态,可以看到/dev/sdb1已经被认为是faulty,而hotspare(热备)盘'/dev/sde1'已经顶替了它的位置(这就是hotspare的作用): Y9qLinux联盟
                # mdadm -D /dev/md0Y9qLinux联盟
                /dev/md0:Y9qLinux联盟
                        Version : 00.90.01Y9qLinux联盟
                  Creation Time : Wed Aug 23 15:10:19 2006Y9qLinux联盟
                     Raid Level : raid5Y9qLinux联盟
                     Array Size : 417536 (407.75 MiB 427.56 MB)Y9qLinux联盟
                    Device Size : 208768 (203.88 MiB 213.78 MB)Y9qLinux联盟
                   Raid Devices : 3Y9qLinux联盟
                  Total Devices : 4Y9qLinux联盟
                Preferred Minor : 0Y9qLinux联盟
                    Persistence : Superblock is persistentY9qLinux联盟
                Y9qLinux联盟
                    Update Time : Wed Aug 23 15:42:24 2006Y9qLinux联盟
                          State : cleanY9qLinux联盟
                Active Devices : 3Y9qLinux联盟
                Working Devices : 3Y9qLinux联盟
                Failed Devices : 1Y9qLinux联盟
                  Spare Devices : 0Y9qLinux联盟
                Y9qLinux联盟
                         Layout : left-symmetricY9qLinux联盟
                     Chunk Size : 64KY9qLinux联盟
                Y9qLinux联盟
                    Number   Major   Minor   RaidDevice StateY9qLinux联盟
                       0       8       65        0      active sync   /dev/sde1Y9qLinux联盟
                       1       8       33        1      active sync   /dev/sdc1Y9qLinux联盟
                       2       8       49        2      active sync   /dev/sdd1Y9qLinux联盟
                       3       8       17       -1      faulty   /dev/sdb1Y9qLinux联盟
                           UUID : f8283de5:39c73d89:b9fbc266:fdceb416Y9qLinux联盟
                         Events : 0.4Y9qLinux联盟
                既然'/dev/sdb1'出现了故障,当然就要将它移除: Y9qLinux联盟
                # mdadm /dev/md0 -r /dev/sdb1Y9qLinux联盟
                mdadm: hot removed /dev/sdb1Y9qLinux联盟
                现在可以关机了。关机之后拔下这块已损坏的磁盘了,换上你的新磁盘。换好之后,分区,mkfs.XXXX。然后将它加入到软raid中: Y9qLinux联盟
                # mdadm /dev/md0 -a /dev/sdb1Y9qLinux联盟
                mdadm: hot added /dev/sdb1Y9qLinux联盟
                这时候再使用mdadm的'-D'参数,可以看到sdb1已经作为hotspare盘了: Y9qLinux联盟
                # mdadm -D /dev/md0Y9qLinux联盟
                /dev/md0:Y9qLinux联盟
                        Version : 00.90.01Y9qLinux联盟
                  Creation Time : Wed Aug 23 15:10:19 2006Y9qLinux联盟
                     Raid Level : raid5Y9qLinux联盟
                     Array Size : 417536 (407.75 MiB 427.56 MB)Y9qLinux联盟
                    Device Size : 208768 (203.88 MiB 213.78 MB)Y9qLinux联盟
                   Raid Devices : 3Y9qLinux联盟
                  Total Devices : 4Y9qLinux联盟
                Preferred Minor : 0Y9qLinux联盟
                    Persistence : Superblock is persistentY9qLinux联盟
                Y9qLinux联盟
                    Update Time : Wed Aug 23 16:19:36 2006Y9qLinux联盟
                          State : cleanY9qLinux联盟
                Active Devices : 3Y9qLinux联盟
                Working Devices : 4Y9qLinux联盟
                Failed Devices : 0Y9qLinux联盟
                  Spare Devices : 1Y9qLinux联盟
                Y9qLinux联盟
                         Layout : left-symmetricY9qLinux联盟
                     Chunk Size : 64KY9qLinux联盟
                Y9qLinux联盟
                    Number   Major   Minor   RaidDevice StateY9qLinux联盟
                       0       8       65        0      active sync   /dev/sde1Y9qLinux联盟
                       1       8       33        1      active sync   /dev/sdc1Y9qLinux联盟
                       2       8       49        2      active sync   /dev/sdd1Y9qLinux联盟
                       3       8       17       -1      spare   /dev/sdb1Y9qLinux联盟
                           UUID : f8283de5:39c73d89:b9fbc266:fdceb416Y9qLinux联盟
                         Events : 0.6Y9qLinux联盟
                misc
                • 假如创建了RAID,但是没有生成 /etc/mdadm.conf 文件,那么系统重启后是不会启用RAID的,这时候需要这样做:
                  # mdadm -A /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
栏目更新
栏目热门