• 磁盘冗余阵列之RAID5的配置


    1988年由加利福尼亚大学伯克利分校发表的文章首次提到并定义了RAID,当今CPU性能每年可提升30%-50%但硬盘仅提升7%,渐渐的已经成为计算机整体性能的瓶颈,并且为了避免硬盘的突然损坏导致数据丢失还加入了冗余备份机制。

    RAID的早先设计理念为”redundant array of Inexpensive disks“即不贵的硬盘组,而现在的定义是”Redundant Array ofIndependent Disks“即独立的硬盘组,作用是防止硬盘物理损坏以及增加存储设备的吞吐量。RAID常见的组合有01510

    RAID0:需要至少两块(含)硬盘,可以有效的提高硬盘的性能和吞吐量,但没有数据的冗余和错误修复能力。

     

    将多块硬盘通过硬件或软件的方式串联在一起,成为一个大的卷集,将数据依次写入到各个硬盘中,这样性能会极大提升,但若任意一块硬盘故障则整个系统的数据都会受到破坏。

    RAID1:需要至少两块(含)硬盘,可以有效的提高数据资料的安全性和可修复性,但成本却提高了。

     

    实现原来是在数据写入硬盘时也会在另外一块闲置的硬盘上生成镜像文件,在不影响性能的情况下最大限度保证数据资料的可靠性,只要在一对镜像盘中还有一块硬盘可以使用,那么数据也不会丢失,具有很好的硬盘冗余能力,虽然对数据来讲绝对的安全,但成本却明显增加,磁盘利用率仅为50%。

    RAID5:需要至少三块(含)硬盘,兼顾存储性能、数据安全和储存成本。

     

    如上图所示”parity”块中保存的是其他硬盘数据的奇偶校验信息(并非其他硬盘的数据),以数据的奇偶校验信息来保证数据的安全,RAID5不以单独的硬盘来存放数据的奇偶校验信息,而是保存在各个磁盘上。

    这样当任何一个硬盘损坏都可以根据其他硬盘上的奇偶校验信息来尝试重建损坏的数据,性能也很高,兼顾了存储性能、数据安全和存储成本,可以看作是RAID0与RAID1的折中方案。

    RAID10:需要至少四块(含)硬盘,兼具速度和安全性,但成本很高。

     

    继承了RAID0的快速与RAID1的安全,RAID1在这里提供了冗余备份的阵列,而RAID0则负责数据的读写阵列。

    因这种结构的成本高,一般用于存放要求速度与差错控制的数据。

    下面是RAID5的配置流程(5块磁盘、3块做raid,2块做备份)

    第一步:在虚拟机中再添加5块硬盘:

     关闭虚拟机时点击编辑虚拟机设置,然后添加磁盘

     

     

     

     

    一路默认即可,完成后就可以看到添加了一个20G的新硬盘。同样的办法我们添加5个硬盘

     

    打开虚拟机后 可以用fdisk -l查看添加的硬盘信息!

     

     第2步:使用mdadm命令创建RAID5,名称为”/dev/md0″。

    -C代表创建操作,-v显示创建过程,-a yes检查RAID名称,-n是用到的硬盘个数,-l是定义RAID的级别而后面写上要加入阵列的硬盘名称。-x是备份磁盘

    第3步:格式化并挂载使用

    将RAID磁盘阵列格式化为ext4格式:

    创建挂载目录:注意挂载目录前必须有/ 否则不能挂载

    进行文件系统的挂载:

    查看磁盘挂载信息:

    最后,将此磁盘阵列挂载信息设置为重启后也依然生效:(可以用这条命令,也可以直接vi编辑fstab也可以)

    [root@linuxprobe ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab

    第4步:查看/dev/md0设备信息

    mdadm -D /dev/md0

    第5步:模拟有1块硬盘损坏的情况
    使用mdadm的-f参数将/dev/sdb移出阵列:

    第6步:损坏后依然正常使用

    因为RAID5级别能够允许一组RAID硬盘中存在一个故障盘而不影响使用,所以依然可以正常的创建或删除文件~

    可以把新的硬盘添加进去,也可以让硬盘sdb恢复使用:重启后执行“ mdadm /dev/md0 -a /dev/sdb”。

    再来看下阵列的详细信息(此时硬盘sde直接顶替上去了):表示备份起到了作用

       

    可能很多同学参考了这个回答,希望大家不要吝啬自己的鼠标,给俺推荐一下呀!

  • 相关阅读:
    PHP双向队列
    [转]数据库查询的3个优化方法
    MySQL性能测试工具 mysqlslap
    PHP各种魔术方法测试
    VBA中级班课时3小结
    VBA中级班课时1小结
    执行cmd并返回程序结果
    Update Dataset data back to Database
    终于会用c#中的delegate(委托)和event(事件)了
    c#: Enqueued event for Queue<T>
  • 原文地址:https://www.cnblogs.com/hzk001/p/11709030.html
Copyright © 2020-2023  润新知