RAID基础

磁盘类型

类型

IDE

Integrated Drive Electronics

SATA

Srial ATA

SCSI

Small Computer System Interface

FC

Fiber Channe

接口

IDE接口,并行

串行

Scsi接口 并行

FC接口

传输率

133Mbs

150Mbs

320Mbs

1.06G

优缺点

老了,太慢

常用

性能好,占用CPU少,稳定但费用高;

SAS:新一代scsi 串行,小

热插拔性,高速带宽,远程连接,连接设备数量大

RAID

由于单个普通硬盘的速度的限制和高端设备价格的限制,使得raid(Redundant Arrays of independent/inexpansive Disks)诞生由来,

RAID Level:

Level

RAID0条带

RAID1镜像

RAID5校验

RAID10

读写性能

读写性能提升

写性能低下读性能提升

读写都提升

读写都提升

有无冗余

无冗余

有冗余

有冗余

有冗余

利用率

100%

50%

(n-1)/n

50%

需要的盘数

至少2块盘

至少2块盘

至少3块盘

至少4块盘

原理图

  • RAID4与RAID5:两者都是基于校验算法来实现数据的性能的提升和冗余,不同的是RAID4将校验的数据存在一个磁盘上,这样磁盘读写的瓶颈将在数据校验盘上。而RAID5是将校验数据放在不同的盘上,这样会优于RAID4
  • RAID10和RAID01:两者在性能上差不多,但是如果在RAID01的情况下,最下面的RIAD0中如果有一块盘损坏,那么整个上面的RAID1将不能够正常使用。所以这方面应使用RAID10,先镜像在条带存储

  • RAID50: 读写都提升;有冗余;空间利用率(n-2)/n;至少6块盘。一般在使用在磁盘有很多的情况下,主要来存储非常庞大的数据集,如数据仓库和非常庞大的OLTP系统
  • jbod(hdoop hdfs):基本不用。无性能提升;无冗余;空间利用率100%;;至少2块盘

软RAID配置

由于软RAID的使用需要额外的CPU来计算数据的分片,而且如果操作系统的崩溃,RAID恢复其他也是件麻烦的事,所以一般生产环境中很少使用,而是使用硬件级别的RAID

内核支持:md(multidisks)用来模拟RAID,即逻辑RAID

mdadm使用:

    创建:-C

    管理:--add,--remove, --fail

    装配:-A

    详细:-D

    其他选项:-l 级别, -n 设备个数, -a <yes/no> 自动创建设备文件 –c 指定chrunk大小 –x 指定spare disk空闲盘

实例:

    创建1G的raid10,需要4块512M磁盘

    mdadm -C /dev/md0 -a yes --level=10 -n 4 /dev/sd[b-e]

    创建1G的raid5,要求有个备盘;需要4块512M磁盘

mdadm -C /dev/md0 -a yes --level=5 -n 3 -x 1 /dev/sdb /dev/sdc /dev/sdd

查看状态:cat /proc/mdstat

查看详细的信息:mdadm -D /dev/md0

导出当前的配置信息:mdadm –detail –scan /dev/md0 >/etc/mdadm.conf

                    mdadm –A /dev/md0 #之后会根据配置文件直接生产md

停止RAID:mdadm -S /dev/md0

删除: rm -fr /etc/md0

硬件RAID的配置:

由于本人大三狗一枚,我只接触过学校的dell 6580,下面以dell的机型配置的信息,这里只做了参考

http://wenku.baidu.com/link?url=Pcb5bZgf0ftL2fVQaSgoRZpts6UtpkNpctET1xvuvtw-Xgsz2yGEAAODm_axr2diVmJEcBDAyGp21XKRsY2iDJkUoy86dqO8T7XKQMQSbNa

软RAID和硬RAID比较

硬件RAID在内部有独立cpu,内存,和电池。有了CPU可以自己独立计算数据校验及数据分片等操作,特别是在RAID5,6这样级别。另外有独立的内存,读的时候,RAID控制器会先预读一些数据到自己内存,从而在一定程度上加速读取;写的时候,会先将部分数据缓存到cache中,然后在定时flush到磁盘上。控制器上的电池,可以保证RAID在掉电的时候,即使在内存中"还没来得及"flush到磁盘的数据得翼保存48小时的时间。一定程度上保证数据的安全,提示了数据读写效率

软RAID需要占用操作系统的CPU,如果在CPU繁忙的时候,可能会出现I/O等待问题等

但在RAID1,RAID10级别上,软硬件RAID差别不大。

另外补充下RAID5的大概原理

摘自知乎

简单通过Raid5来进行比较。Raid 5基本原理是异或运算来实现。
XOR (0, 1) = 1
XOR (1, 0) = 1
XOR (0, 0) = 0
XOR (1, 1) = 0

硬盘1 硬盘2 硬盘3
| 101 | 010 | 011 |

XOR (101, 010, 011) = 100
过程如下:
XOR (101,010) = 111 , XOR (111, 011) = 100
校验盘P
| 101 | 010 | 011 | 100 |

| 101 | 挂了 | 011 | 100 |
还原010
XOR (101, 011, 100) = 010
当然实际过程比这个要复杂的多的多。

Raid5 写一份数据,需要下列操作,普通硬盘只要1次写操作。
控制器读取旧的数据块,
读取旧的校验块。
并和新计算出来的进行比对,如果有修改,则要改写旧块为新块(数据快和校验块)。
如果只是同等内容修改,没有用到新的块。就到此为止了。
简单的例子是,我新建一个文本文档,只有一个字符A,没有空格,空行,tab。我修改A为B,然后保存,文件大小是不变的。如果我把A改成两个字母"AB",再保存。相当于申请新的空间来保存另外一个字符B。(此例子只能用来理解,不能代表100%Raid控制器和文件系统是这样存储数据)
如果有追加的数据
则还要写入新的数据块和新的校验块。

原文地址:https://www.cnblogs.com/wxl-dede/p/5119899.html