raid把数据分成条带,一个条带横跨所有数据磁盘,每个磁盘上存储条带的一部分,称为sagment,也称为条带深度。一个条带包含的扇区或块的个数,称为条带长度。

  raid向操作系统提供的是卷,是连续的扇区(或者叫LBA)空间地址,而卷向文件系统所展示的是分区,相对于卷,分区就是将大片连续地址再次切开。文件系统用扇区组成所谓“簇”,或者叫cluster,或者叫分配单元,fs存放数据只以簇为单位,而不会出现“读入或者写出半个簇”这种io命令。而卷之下的各层都可以以单个扇区为单位了,扇区是存储系统最小的io单位。明白了底层这些映射关系,就可以着手研究io行为了。

  刚说了raid提供一片连续扇区地址,假如文件系统选择了扇区1024-1027号这4个连续的扇区作为这个2k文件的存放空间,则文件系统写入这个文件的时候,卷接受到这个指令之后,会将这段扇区号码传送给raid驱动,raid驱动接受之后会将号码传送给raid芯片进行地址翻译(硬raid卡)或者直接在驱动层面进行地址翻译(软raid卡),地址翻译这里的意思是将这段连续的地址映射到实际的物理硬盘地址,因为raid提供给上层的是虚拟磁盘/lun,一个lun可以分步在多个物理硬盘上。地址翻译的过程一定要查询stripe也就是条带映射表,当初你怎么分的,此时就会影响翻译之后实际的硬盘扇区地址。再回来说你的raid5的128KB条带,128KB条带=磁盘数量乘以每个磁盘上组成这个条带的segment大小,也就是说一个条带把排列的多个磁盘横向切成了一条一条的,硬盘本身相当于竖条,而横条和竖条切开之后形成的小格子就是segment,也叫条带深度,stripedepth。比如8个盘的raid5系统,其中一块用于存放parity,128KB条带除以8等于16KB,也就是说segment=条带深度=16KB=每个磁盘上贡献一个条带所使用的空间。再回来说2k的文件写入,这个情况下,地址翻译会将2k的地址翻译为“磁盘m上的n到磁盘m上的n+3号扇区”,当然也可能是“磁盘x上的y到磁盘a上的b”,总之地址落在物理硬盘上的哪个区域,条带中央/条带边缘/单个物理硬盘/多个物理硬盘,文件系统是不知道的,由raid层面决定。这种不知道称为“盲”,现在大多文件系统都盲,但是也有不盲或者半盲的。我们在raid层面来设计条带,分步等,实际上都是盲操作,效果不会很大,包括raid5本身的并发io特点,也是盲并发。所谓并发,拿你刚才的例子,某个io需要写入2k的数据,如果地址翻译结果为这4个扇区落在一个segment里,则这个io只会占用一个数据盘,外加需要占用parity区域,如果此时还有一个io需要写入2k数据,而这次的4个扇区落在了另一块数据盘上,而它需要的parity数据恰好与前一个io及其所需要的parity区域不在同一个盘上,则这两个io可以并行操作,4块磁盘同时读写。由于这种并发是基于“恰好”的,所以raid5提供的是盲并发,要实现不盲的并发只能靠上层文件系统。

RAID中条带的概念的更多相关文章

  1. WebLogic 中的基本概念

    完全引用自: WebLogic 中的基本概念 WebLogic 中的基本概念 上周参加了单位组织的WebLogic培训,为了便于自己记忆,培训后,整理梳理了一些WebLogic的资料,会陆续的发出来, ...

  2. Web开发中的主要概念

    一.Web开发中的主要概念1.静态资源:一成不变的.html.js.css2.动态资源:JavaWeb.输出或产生静态资源.(用户用浏览器看到的页面永远都是静态资源) 3.JavaEE:十三种技术的集 ...

  3. 理解SQL Server中索引的概念

    T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他   简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能 ...

  4. PowerShell_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念

    PowerShell_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念 据我个人所知,windows下的cmd shell除了能够通过修改系统参数来对其中的环境变量 ...

  5. OC中协议的概念以及用法

    OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Java中的接口(抽象类),只不过OC中的名字更形象点,因为我们在学习 ...

  6. Unity编程标准导引-Unity中的基本概念-2.1界面概览

    Unity中的基本概念 本文我们介绍Unity中的基本概念,包括:场景.游戏对象.组件.预制件.资源等. 2.1.界面概览 打开Unity之后,我们大概可以看到以上画面,以上画面中即显示了我们最常用到 ...

  7. Unity编程标准导引-2.2Unity中的基本概念

    2.2Unity中的基本概念 上述介绍提到了几个概念:游戏对象.场景.资源.相机,这个小节我们来深入了解,同时进行一些实践性操作.不过首先,我们需要大概了解一下Unity的工程文件夹. 2.2.1工程 ...

  8. Mycat中的核心概念

      Mycat中的核心概念     Mycat中的核心概念 1.数据库中间件    Mycat 是一个开源的分布式数据库系统,但是由于真正的数据库需要存储引擎,而 Mycat 并没有 存储引擎,所以并 ...

  9. opnet仿真过程中SEED的概念问题 分类: opnet 2014-11-02 15:25 69人阅读 评论(0) 收藏

    仿真配置中SEED的概念:仿真随机种子,是产生随机数的种子值,反应随机数的状态.只要选定一个种子值,整个随机事件系统就固定了,复杂仿真的随机过程就成了一次实现.目的是测试仿真系统的稳健性,具体来说,针 ...

随机推荐

  1. luogu P3369 【模板】普通平衡树(splay)

    嘟嘟嘟 突然觉得splay挺有意思,唯一不足的是这几天是一天一道,debug到崩溃. 做了几道平衡树基础题后,对这题有莫名的自信,还算愉快的敲完了代码后,发现样例都过不去,然后就陷入了无限的debug ...

  2. 【转】 Android xml中 @和?区别,style和attr小结

    引用资源时,使用@还是?的区别,例如在设置style的时候既可以使用@也可以使用? style="?android:attr/progressBarStyleHorizontal" ...

  3. AE-----合成

    AE-----合成 大纲:

  4. linux下10款markdown软件

    原文:https://linux.cn/article-7623-1.html 在这篇文章中,我们会点评一些可以在 Linux 上安装使用的最好的 Markdown 编辑器. 你可以在 Linux 平 ...

  5. nodejs实现mysql数据库的简单例子

    在MySQLWorkbench中创建table存储用户的tokenId信息: use token; SET FOREIGN_KEY_CHECKS = ; DROP TABLE IF EXISTS `a ...

  6. centos6.5添加阿里docker加速器

    1. 配置阿里docker加速器 vi /etc/sysconfig/docker 在文件末尾追加下面两行 other_args="--registry-mirror=https://pl8 ...

  7. composer设置国内镜像

    使用composer时,输入命令执行后半天没有反应,并最后是失败的消息. 如下载项目中的框架文件时: composer install 一直没有反应 [注]添加参数-vvv可尽可能多的输出执行信息,帮 ...

  8. Spring事务(三)事务增强器

    摘要: 本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 目录 一.创建事务 1. 获取事务 2. 处理已经存在的事务 3. 准 ...

  9. .Net实现Word文档及导出

    参考网址: http://www.jb51.net/article/25062.htm(实用性) http://wenku.baidu.com/link?url=44O7Dua49DrZ-PF2QU7 ...

  10. 基于Babylon.js编写简单的骨骼动画生成器

    使用骨骼动画技术可以将网格的顶点分配给若干骨头,通过给骨头设定关键帧和父子关系,可以赋予网格高度动态并具有传递性的变形 效果.这里结合之前的相关研究在网页端使用JavaScript实现了一个简单的骨骼 ...