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. PHPExcel 导入

    首先: //包含excel的类库require APPPATH . 'third_party/PHPExcel.php';require APPPATH . 'third_party/PHPExcel ...

  2. 1562. [NOI2009]变换序列【二分图】

    Description Input Output Sample Input 5 1 1 2 2 1 Sample Output 1 2 4 0 3 HINT 30%的数据中N≤50: 60%的数据中N ...

  3. POJ Football Game 【NIMK博弈 && Bash 博弈】

    Football Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 451   Accepted: 178 Descr ...

  4. 【敏捷实用工具】JIRA介绍以及使用方法

    敏捷开发并不是由敏捷工具来推动的.但是没有敏捷工具的支持,就很难进行各种软件工程的相关事件,工具的作用是约束和流程,正确使用敏捷工具可以事半功倍,实践敏捷.近几年来敏捷开发催生大量敏捷工具的产生,在敏 ...

  5. iOS 倒计时的一种实现

    1.view [self performSelectorInBackground:@selector(thread) withObject:nil]; - (void)thread { ;i>= ...

  6. koa2学习笔记02 - 给koa2添加系统日志 —— node日志管理模块log4js

    前言 没有日志系统的后台应用是没有灵魂的, 平时工作中每次我们遇到接口报错的时候, 都会叫后台的童鞋看下怎么回事, 这时后台的童鞋都会不慌不忙的打开一个骚骚的黑窗口. 一串噼里啪啦的命令输进去, 哐哐 ...

  7. Linux下onvi支持h265环境的的搭建:gsoap的安装及生产.c .h文件

     1. 下载gsoap  :http://www.genivia.com/products.html#notice,既Open Source gSOAP版本,并解压进入目录安装,configure后面 ...

  8. FPGA之CORDIC算法实现_理论篇(上)

    关于cordic的算法原理核心思想就是规定好旋转角度,然后通过不停迭代逐步逼近的思想来实现数学求解,网上关于这部分的资料非常多,主要可以参考: 1)https://blog.csdn.net/qq_3 ...

  9. 20155339 《信息安全系统设计》第十周课下作业-IPC

    20155339 <信息安全系统设计>第十周课下作业-IPC 共享内存 共享内存是在多个进程之间共享内存区域的一种进程间的通信方式,由IPC为进程创建的一个特殊地址范围,它将出现在该进程的 ...

  10. JavaWeb总结(一)

    在学习Web应用程序客户端界面设计时,我们已经知道组成一个基本的Web应用程序需要Web服务器.Web客户端浏览器.HTTP协议以及静态HTML文件. Web服务器:接收客户端请求,然后向客户端返回一 ...