1.简述
磁盘阵列(Redundant Arrays of Independent Disk)简称RAID,将数据以分段(striping)的方式分散存储在不同的磁盘中,通过多个磁盘的同时读写减少存取时间,并且利用不同技术实现数据冗余,具有安全性高、速度快、数据容量大等突出特点。 磁盘阵列根据其使用的技术不同而划分了等级,目前公认的标准是RAID 0~RAID 5。其中的level并不代表技术的高低,至于选择哪一种RAID需视用户的需求而定。
2.RAID等级
- RAID0:是将多个磁盘并列起来,成为一个大硬盘。在存取数据时,将数据按磁盘的个数来进行分段,同时将这些数据写进。条带模式,需要至少两块磁盘。在所有的级别中,RAID0的速度是最快的。没有数据冗余,阵列中任何一个磁盘坏掉,意味着所有数据丢失。对高磁盘容量及高速磁盘存取有集群需求,RAID0无疑是提高磁盘I/O性能的最好方法。
- RAID1: 镜像模式,实现数据备份,写性能降低,读性能略微提升,需要至少两块磁盘,磁盘可用空间=磁盘书*最小磁盘大小/2。
- RAID5:需要至少三块磁盘组成磁盘阵列,在每个循坏写入过程中,轮流在其中一块磁盘存储其他几个磁盘数据的同位校验码(parity),同位检验码为同位其他数据相与或所得,当其中任何一个磁盘损坏时,可通过其他磁盘的校验码来重建磁盘的数据。RAID5需要N块磁盘(N>=3),能够存储数据的大小为(N-1)*min(S1,S2,S3,S4…)。
- RAID6:条带化双分布式奇偶校验。RAID6技术是在RAID 5基础上,进一步加强数据保护而设计的一种RAID方式。与RAID5的不同之处于除了每个硬盘上都有同级数据XOR校验区外,还有一个针对每个数据块的XOR校验区。当然,当前盘数据块的校验数据不可能存在当前盘而是交错存储的,等于每个数据块有了两个校验保护屏障,一个分层校验,一个是总体校验。因此RAID 6的数据冗余性能相当好,写入的效率较RAID 5还差。读性能比 RAID 5 更好,因为它从多个磁盘读取。同一RAID6中最多运行同时损坏2块磁盘,更换磁盘后,数据将被重新计算写入;RAID6需要N个磁盘(N>=4);容量为(N-2)*min(s1,s2,s3,…)。
- RAID10:RAID10和RAID01在读写速度上没太大差别,但是RAID10的数据安全性比较高。RAID10是将所有硬盘先组成N组RAID 1,然后再组成RAID0。RAID10需要N个磁盘(N>=4)。
3.mdadm命令
参数 | 作用 |
---|---|
-S | 停止阵列 |
-E | 检测设备名称 |
-n | 指定设备数量 |
-l | 指定RAID级别 |
-C | 创建设备 |
-v | 显示过程 |
-f | 模拟设备损坏 |
-r | 移除设备 |
-a | 添加设备 |
-Q | 查看摘要信息 |
-D | 查看详细信息 |
4.基本操作
4.1 RAID0操作
将/dev/sdb1和/dev/sdb2建立等级RAID0的md0
mdadm -C -v /dev/mdo -l 0 -n 2 /dev/sda1 /dev/sdb2
查看RAID基本信息
cat /proc/mdstat 查看系统上的RAID
mdadm -D /dev/md0 查看是否创建成功
挂载到/mnt/md0
sudo mkfs.xfs /dev/md0(sudo mkfs -t ext4 /dev/md0)
mount /dev/md0 mnt/md0/
删除命令
停止阵列mdadm -S /dev/md0
umount mnt/md0/
mdadm --zero-superblock /dev/sda1
mdadm --zero-superblock /dev/sdb1
4.2 RAID5操作
mdadm -Cv /dev/md5 -l 5 -n 3 /dev/sdb1 /dev/sdb2 /dev/sdb3 --s pare-devices=1 /dev/sdb5 (sdb5 作为热备盘)
查看RAID5基本信息
cat /proc/mdstat 查看系统上的RAID
mdadm -D /dev/md5 查看是否创建成功
挂载到/mnt/md5
sudo mkfs.xfs /dev/md5(sudo mkfs -t ext4 /dev/md5)
mount /dev/md5 mnt/md5/
删除命令
停止阵列mdadm -S /dev/md5
umount mnt/md0/
mdadm --zero-superblock /dev/sda1
mdadm --zero-superblock /dev/sdb1
模拟硬盘故障
故障硬盘为/dev/sdb3
mdadm -f /dev/md5 /dev/sdb3
mdadm -D /dev/md5
热移除故障盘
mdadm -r /dev/md5 /dev/sdb3
mdadm -D /dev/md5
4.3 RAID6操作
检查下磁盘是否创建过 RAID 分区。
mdadm -E /dev/sd[1-5]
mdadm --examine /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb5
创建并1s观察一次
mdadm -Cv /dev/md6 -l 6 -n 4 /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb5
watch -n1 cat /proc/mdstat
查看是否创建成功
4.4 RAID10操作
mdadm -Cv /dev/md10 -l 10 -n 4 /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb5 --run
#指定--run参数,将跳过确认信息,直接启动阵列
查看RAID10基本信息
挂载、删除等操作和其他RAID一致。
5.测试性能
测试RAID0模式下,sata3.0盘的读写速度:
- 纯写
root@localhost:/mnt/md0# dd if=/dev/zero of=/mnt/md0/test bs=8k count=1000000
记录了1000000+0 的读入
记录了1000000+0 的写出
8192000000 bytes (8.2 GB, 7.6 GiB) copied, 9.94526 s, 824 MB/s - 纯读
root@localhost:/mnt/md0# time dd if=/mnt/md0/test of=/dev/null bs=8k
记录了1000000+0 的读入
记录了1000000+0 的写出
8192000000 bytes (8.2 GB, 7.6 GiB) copied, 7.61115 s, 1.1 GB/s
real 0m7.620s
user 0m0.196s
sys 0m5.068s - 读写
root@localhost:/mnt/md0# time dd if=/mnt/md0/test of=/mnt/md0/testrw.dbf bs=8k
记录了2000000+0 的读入
记录了2000000+0 的写出
8192000000 bytes (8.2 GB, 7.6 GiB) copied, 23.5216 s, 348 MB/s
real 0m23.641s
user 0m0.432s
sys 0m14.812s
同样的方法,测试RAID1模式
操作 | RAID0 | RAID1 |
---|---|---|
纯写 | 824 MB/s | 404 MB/s |
纯读 | 1.1 GB/s | 465 MB/s |
读写 | 348 MB/s | 185 MB/s |
6.加入讨论
7.参考
1.独立硬盘冗余阵列-RAID
2.RAID管理
3.在 Linux 下使用 RAID
4.raid的mdadm命令,热备盘设置,6个问题
5.在CentOS-7.0下高级硬盘管理RAID 1+0方案
6.mdadm命令详解