磁盘类型
类型 |
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控制器和文件系统是这样存储数据)
如果有追加的数据
则还要写入新的数据块和新的校验块。