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

  • 相关阅读:
    jquery datatable后台分页、移动端隐藏列、自定义列显示格式
    今日热门文章
    深入理解STL源码 系列文章
    LED显示屏通讯协议 2
    LED显示屏通讯协议 1
    定制的小键盘输入数字显示的LED计分显示屏
    Sql语句中的LIKE关键字中通配符以及Escape关键字
    Virtual Box扩展虚拟硬盘的问题
    选择腾讯云部署应用的要慎重了,私有网络阉割,可靠性变得难以确定!
    rabbitmq 重置
  • 原文地址:https://www.cnblogs.com/wxl-dede/p/5119899.html
Copyright © 2020-2023  润新知