zoukankan      html  css  js  c++  java
  • 大话存储 3

    RAID技术 Redundant Array of Independent Disks

    由独立的磁盘组成的具有冗余特性的阵列。

    有两个特性:

    1. 阵列:需要很多磁盘来组成
    2. 冗余:允许某块磁盘损坏之后,数据仍然可用

    目前,单块磁盘容量只有几T,对于现代应用程序来说远远不够。为了提供容量更大的磁盘,发明了RAID技术。

     

    1 七种RAID简介

    RAID 0

    • 4个磁盘组成一个阵列
    • 4个扇区组成的块作为基本单元
    • 不同磁盘的相同偏移处的块组合成Stripe
    • 数据写入:数据被分成多块写入4个磁盘,而不是顺序写入一个磁盘,这就大大提高了速度 
    • 缺点:其中一块磁盘废掉,数据全部丢失。

    RAID 1

    • 一个数据盘,一个影子盘
    • 每次写,写成功两块盘才算成功
    • 没有提供读副本的功能,只有数据出现损坏,才会读第二副本
    • 缺点:短板效应,速度取决于最慢的盘,容量取决于最小的盘。

    RAID 2

    • 两块数据盘,一块校验盘
    • 校验算法使用汉明码,可以校验,并具有纠错一位的能力。
    • 每个IO下发的数据被以位为单位平均打散在所有数据盘上。
    • 缺点:校验盘数量太多,开销太大,成本昂贵。

    RAID 3

    • 使用逻辑运算“异或XOR”来进行计算校验位
    • 将数据盘的每一位之间做XOR运算,然后将结果写入校验盘的对应位置。
    • 每次IO的大小:4KB,并要求所有数据盘主轴同步,不然就会等待最慢的那个数据盘完成。
    • 优点:校验效率较高,成本减少
    • 缺点:不支持IO并发,无法纠正错误。对随机小块读写时,一个很小的IO会占用所有盘。

    RAID 4

    • 为了解决RAID 3中小块随机读写问题,增大了“条带深度”
    • 如果一个IO过来,这个IO块小于条带深度,那么这次IO就被完全禁锢在一块磁盘上,只会用到一块磁盘。
    • 缺点:校验盘是瓶颈。

    RAID 5

    • 目的是支持并发IO。
    • 校验盘分割打散在数据盘上。
    • 连续性能不如RAID 3。
    • 随机读性能高。
    • 写性能较差。写过程:新数据过来->读取待更新扇区的原数据->读取校验数据->计算新数据校验数据->将新数据和新校验数据写到磁盘。

    RAID 6

    • 目的是为了解决超过一块盘损坏就丢数据的问题。
    • 增加了校验码,通过组成方程组求解多个未知数。
    • 缺点:因为要多读出一个校验数据,写性能更差了。

     

    2 关于几个与IO相关的重要概念

    IO可以分为读写IO、大小块IO、连续/随机IO、顺序/并发IO、稳定/突发IO、持续/间断IO和实虚IO。

    下面我们来分别了解一下这几种IO。

    1 读/写IO

    一次IO,就是发指令从磁盘读写某段序号连续的扇区内从。

    指令一般是通知磁盘从某个扇区开始,并给出从这个初始扇区往后读取的连续扇区个数,同时给出动作是读还是写。

    一个IO索要提取的扇区段一定是连续的。

    2 大/小块IO

    指控制器的指令中给出的连续读取扇区数目的多少。如果数目很大,比如128、64等,就是大块IO。如果很小,比如1、4、8等,就算小块IO。

    3 连续/随机IO

    连续和随机是指本次IO给出的初始扇区地址和上一次IO的结束扇区地址是不是完全连续或者像个不多的。

    如果是,则本次IO应该算是一个连续IO。

    如果相差太大,则算一次随机IO。

    4 顺序/并发IO

    磁盘控制器如果可以同时对一个RAID系统中的多块磁盘同时发送IO指令,并且这些最底层的IO数据包含了文件系统下发的一个IO的数据,则此时为顺序IO。

    5 持续/间断IO

    持续不断地发送或者接受IO请求数据流,这种情况为持续IO。

    6 稳定/突发IO

    某存储设备或者某程序在一段时间内接受或者发送的IOPS以及throughput保持响度稳定和恒定,则称为稳定IO。

    如果单位时间的IOPS或者throughput突然猛增,则为突发IO。

    7 实/虚IO

    读写实际文件或者磁盘扇区数据的,称为实IO

    对文件元数据操作的、或针对磁盘发送的非实体数据IO请求的控制性IO,称为虚IO。

     

    参考资料

    《大话存储2-存储系统架构与底层原理极限剖析》 

     

     

     

     

  • 相关阅读:
    wx.showToast 延时跳转~~~
    wx.request 获取不到post传递的值
    G,sql中select 如果太长,可以在后面放G,竖行显示~~~~
    用for语句从数组中剔除数据,注意,count,要放到for语句之外才行
    读代码还是读文档,来自知乎
    聊聊我对写好程序的认识
    open() 函数以 r+ 模式打开文件
    open()
    Python 流程控制:while
    Python 序列
  • 原文地址:https://www.cnblogs.com/suzhou/p/5793093.html
Copyright © 2011-2022 走看看