天天看点

linux中RAID详解

一、RAID介绍

    RAID即廉价冗余磁盘阵列(Redundant Array of Inexpensive Disks),从Linux 2.4内核开始,Linux就提供软件RAID,不必购买昂贵的硬件RAID控制器和附件(一般中、高挡服务器都提供这样的设备和热插拔硬盘),就可以通过并行处理多个独立的I/O 请求提高读写性能,而且能通过增加冗余信息来提高数据存储的可靠性。

二、几种RAID类型

    RAID 0

    非冗余,读写性能好,数据可靠性低于单个磁盘。

linux中RAID详解
linux中RAID详解

    RAID 1

    镜像,读性能好,写性能与单个磁盘相当,数据可靠性高,成本高。

linux中RAID详解

    RAID 2  

    并行访问,通过海明码实现冗余,读写性能好,磁盘同步旋转,带检错纠错功能,可靠性高,读写性能好,但一次只能执行一个I/O 请求。

linux中RAID详解

    RAID 3  

    并性访问,通过奇偶校验实现冗余,读写性能好,磁盘同步旋转,带检错功能,可靠性高,读写性能好,但一次只能执行一个I/O 请求。

linux中RAID详解

    RAID 4  

    独立访问,以块为单位计算奇偶校验块并存放与校验盘,数据可靠性高,读性能好,写性能差(因为每次写都要更新校验盘数据),校验盘成为性能瓶颈。

linux中RAID详解

    RAID 5

    在RAID 4 基础上,把奇偶校验块循环分布在所有磁盘上,从而减轻单个校验盘的性能瓶颈问题,读写性能和可靠性类似于RAID 4。

linux中RAID详解

三、硬件RAID 和软件RAID

    硬件RAID

    (1)利用硬件RAID 控制器来实现, 由集成或专用的阵列卡来控制硬盘驱动器。

    (2)存取性能和数据保护能力高, 但成本也高。

    (3)Linux 将硬件磁盘阵列看作一块实际的硬盘, 其设备名为/dev/sd[a-p]。

    软件RAID

    (1)利用操作系统提供的软件RAID 功能来实现。

    (2)适用于要求不高的场合, 成本低。

    (3)Linux 将软件磁盘阵列看作多重磁盘设备(MD), 其设备名为/dev/md0、/dev/md1 等。

四、linux中RAID配置

    在Linux系统中,主要提供RAID 0、RAID 1、RAID 5三种级别的RAID。mdadm是 linux下标准的的软raid管理工具,是一个模式化工具(在不同的模式下);程序工作在内存用户程序区,为用户提供RAID接口来操作内核的模块,实现各种功能。

    1、RAID 1 配置

    (1)创建两个相同大小的RAID 分区,设置分区id 为fd。

    (2)建立RAID 设备

        mdadm --create /dev/md0 --level 1 --raid-devices=2 /dev/sdb1 /dev/sdc1

    (3)设置mdadm 配置文件/etc/mdadm.conf

        DEVICE /dev/sdb1 /dev/sdc1

        ARRAY /dev/md0 devices=/dev/sdb1,/dev/sdc1

    (4)建立文件系统

        mkfs -t ext3 /dev/md0

    (5)挂载RAID 1 设备

         mkdir /mnt/raid1

        mount /dev/md0 /mnt/raid1

    (6)管理RAID 1阵列

        # 模拟某成员磁盘发生故障

            mdadm /dev/md0 --fail /dev/sdc1

        # 从RAID 1 阵列中移除故障成员

            mdadm /dev/md0 --remove /dev/sdc1

        # 准备一块要替换的磁盘,并将新磁盘加入到阵列中

            mdadm /dev/md0 --add /dev/sdd1

        # 查看阵列实时信息

            cat /proc/mdstat

            mdadm --detail /dev/md0

    2、RAID 5配置

    (1)准备4 个阵列成员(创建RAID 分区)

    (2)创建RAID 设备:系统默认只有md0 设备,其他需自行创建。

        ls –l /dev/md0          # 查看md 设备的类型和主次设备号

        mknod /dev/md1 b 9 1     # 创建设备文件

    (3)建立RAID 5 设备

        mdadm --create /dev/md1 --level=5 --raid-devices=3 --spare-devices=1 /dev/sdd[5-8] mdadm --detail /dev/md1

    (4)设置mdadm 配置文件/etc/mdadm.conf

        DEVICE /dev/sdd5 /dev/sdd6 /dev/sdd7 /dev/sdd8

        ARRAY /dev/md1 devices=/dev/sdd5,/dev/sdd6,/dev/sdd7,/dev/sdd8

    (5)建立文件系统

        mkfs.ext3 /dev/md1

    (6)挂载RAID 5 设备

        mkdir /mnt/raid5

        mount /dev/md1 /mnt/raid5

    (7)管理RAID 5 阵列

        # 利用备用盘重建RAID 5

            mdadm /dev/md1 --fail /dev/sdd6

            mdadm --detail /dev/md1

        # 可看到备用盘自动参与重建阵列, 而故障盘成为备用磁盘, 而且# 注意: 要等待RAID 重建完毕, 再替换故障磁盘

        # 将故障磁盘移除并加入新磁

            mdadm /dev/md1 --remove /dev/sdd6

            mdadm /dev/md1 --add /dev/sde1

            mdadm --detail /dev/md1

    (8)启用/停用/监控RAID 设备

        # 停止RAID 设备(停止前要先卸载)

            mdadm --stop /dev/md0

        # 启动RAID 设备

            mdadm --assemble --scan /dev/md0

        # 监控RAID 设备

            mdadm --monitor [email protected] --delay=180 /dev/md0

        # 将监控任务转入后台执行

            nohup mdadm --monitor [email protected] --delay=180 /dev/md0

    (9)如果要删除RAID 多重磁盘设备(可选)        

        每个md 设备只能被建立一次,如果创建命令(mdadm–create) 出错,将造成该md 设备无法使用,这时需要按以下步骤先删除该错误的md 设备,然后才能重新创建它。

        #1. 停用RAID 设备

            mdadm --stop /dev/md0

        #2. 清空每个组成分区的超级块

            mdadm --zero-superblock /dev/sdb1

            mdadm --zero-superblock /dev/sdc1

转载于:https://blog.51cto.com/wang3781/1795382

继续阅读