• I/O性能与可靠性


    I/O调优

    磁盘I/O优化
    • 性能检测:
      • 压力测试应用程序,观察系统I/O wait指标是否正常,例如有n个CPU,利息情况下I/O wait参数不超过25%,如果超过,就是这个程序的瓶颈就是在IO操作上了可以用iostat命令查看
      • 另外一个指标:IOPS(input/output Per Second)即每秒的输入输出量,是衡量磁盘性能主要指标
      • 每个磁盘的IOPS通常在一个范围内,这和存储的磁盘数据块大小和磁盘范围方式有关系,主要由磁盘的转速决定的,转速越高,IOPS越高。
    • 性能提升:现阶段一般采用RAID技术,将不同磁盘组合来提高I/O性能
    RAID
    • 名词解释:RAID(独立磁盘冗余阵列)技术是将多块普通磁盘组成一个大的磁盘阵列,共同对外提供服务。
    • 目的:主要为改善磁盘存储容量,读写速度(IOPS)增强磁盘可用性和容错能力。
      • 解决数据存储容量问题
      • 数据读写速度问题
      • 数据可靠性问题
    RAID 0
    • RAID 0 模式写:假设服务器有N快磁盘,当前模式是数据从内存缓冲区写入磁盘时,根据磁盘数量将数据等分成N份,这些数据同时并发写入N块磁盘,使数据写入速度是一块磁盘的N倍。
    • RAID 0 模式读:读取的时候也一样,可以多块磁盘并发的读,因此RAID 0 有很快的数据读取能力。
    • RAID 0 缺点:数据没有做备份,N块磁盘存储一块内存缓冲区的数据,一块磁盘损坏,所有数据都无法使用

    请添加图片描述

    RAID 1
    • RAID 1 写:将一份数据同时写入两份磁盘,这样任何一块磁盘损坏都不会导致数据丢失,插入一块磁盘可以通过复制数据的方式修复,具有极高的可靠性
    RAID 1 0
    • 结合RAID 0 和RAID 1 ,将所有磁盘N平均分2份,数据同时写入2份磁盘,,相当于RAID1;然后在平均分成2份,在每一份磁盘(也就是其中的N/2快磁盘)里面,利用RAID 0 技术并发读写
    • 优点:既可以提供高性能的读写能力,也同时具备高可靠性
    • 缺点:磁盘利用率直接降低到50%,一半用来做数据备份了

    请添加图片描述

    RAID 3
    • RAID 3 的思路是提高磁盘利用率,将数据分成N-1份,并发写入N-1个磁盘中,并且在第N块磁盘记录校验数据,这样任何一块磁盘损坏(包括校验数据磁盘),都可以利用其它N - 1 块磁盘的数据进行修复
    • 缺点:物理你修改那一块磁盘的数据,第N快校验的数据都需要修改,那边第N快磁盘的读写评率是其他N-1块之和,那么这块磁盘更容易损坏,因此实际很少用这种情况请添加图片描述
    RAID 5
    • 与RAID 3 类似,但是校验数据不写入第N快磁盘,而是通过一定的方式将校验数据写入到所有磁盘中,这样校验数据的修改也被平均到所有磁盘,避免RAID 3 这种一块磁盘损坏的情况。

    请添加图片描述

    RAID 6
    • 当数据可靠性要求很高,再出现同时损坏2块磁盘的时候(概率很低)任然会出现无法通过校验信息修复的情况,只能通过运维数据恢复,这样我们可以使用RAID 6
    • RAID 6 与RAID 5类似,但是数据值写入了N - 2块磁盘,并且螺旋式地在两块磁盘中写入校验信息(分别用不同算法),这样校验信息也有备份了,有更高的可靠性
    • 请添加图片描述
    校验数据设计
    • 一下冗余磁盘阵列RAID,使用奇偶校验的方式实现冗余,如果一个阵列中一块磁盘出现故障,工作磁盘中的数据块与奇偶校验块一起来重建丢失的数据,如下案例,A1,A2, A3是数据块 Ap表示校验数据块(An与Ap可能在同一个磁盘)
      • 例 A1 = 0000 0111 ,A2 = 0000 0101 , A3 = 0000 0000,
      • A1 , A2, A3 做异或操作,得到Ap = 0000 0010
      • 此时 A2 出现问题,我们可以通过A1, A3 与Ap 的异或进行重建: A1 XOR A3 XOR Ap = 0000 0101
    RAID总结
    RAID类型访问速度数据可靠性磁盘利用率
    ARID0很快很低100%
    ARID1很慢很高50%
    ARID10中的很高50%
    ARID5较快很高(N-1)/N
    ARID6较快很高(N-2)/N
    • 解决问题:

    • 数据存储容量问题:RAID用多块磁盘组成存储阵列,例如RAID 5 可以扩大N-1倍

    • 数据读写速度:将数据并发写入 N份磁盘,写入速度明显提升,同时读取也是一样,但是并不能提升N倍,因为机械硬盘延迟主要是用来寻址的时间,数据真正读写时间只占一小部分。

    • 数据可靠性使用RAID 10,RAID 5, RAID 6,由于数据冗余存储,或者存储校验信息,某一块磁盘损坏,可以通过其他磁盘数据,或者校验数据,将丢失数据还原。

    • RAID可以看成是垂直伸缩,一台计算机集成更多磁盘,实现数据更大规模,更安全可靠存储以及更快的范问速度。

    • 将RAID思想原理应用到分布式服务器上,吧每一台服务器看成是磁盘中的一个,那么就形成了分布式存储,Hadoop分布式文件系统和HDFS的架构思想。

  • 相关阅读:
    高性能HTTP和反向代理Web服务器 - Nginx
    Unity动画Animation Day05
    Linux蓝牙驱动模拟HID设备(把Linux系统模拟成蓝牙鼠标和蓝牙键盘)
    如何区分一个项目是react还react native
    【Flutter 面试题】什么是异步编程 Flutter中如何处理异步操作?
    【网络编程】Linux网络编程基础与实战第二弹——Socket编程
    Java8新特性
    微服务全栈:深入核心组件与开发技巧
    【CV】第 18 章:使用 OpenCV 实用程序进行图像分析
    Android widget 小部件使用指南强化版
  • 原文地址:https://blog.csdn.net/liaojiamin0102/article/details/126117517