RAID中条带的概念
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中条带的概念的更多相关文章
- WebLogic 中的基本概念
完全引用自: WebLogic 中的基本概念 WebLogic 中的基本概念 上周参加了单位组织的WebLogic培训,为了便于自己记忆,培训后,整理梳理了一些WebLogic的资料,会陆续的发出来, ...
- Web开发中的主要概念
一.Web开发中的主要概念1.静态资源:一成不变的.html.js.css2.动态资源:JavaWeb.输出或产生静态资源.(用户用浏览器看到的页面永远都是静态资源) 3.JavaEE:十三种技术的集 ...
- 理解SQL Server中索引的概念
T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他 简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能 ...
- PowerShell_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念
PowerShell_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念 据我个人所知,windows下的cmd shell除了能够通过修改系统参数来对其中的环境变量 ...
- OC中协议的概念以及用法
OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Java中的接口(抽象类),只不过OC中的名字更形象点,因为我们在学习 ...
- Unity编程标准导引-Unity中的基本概念-2.1界面概览
Unity中的基本概念 本文我们介绍Unity中的基本概念,包括:场景.游戏对象.组件.预制件.资源等. 2.1.界面概览 打开Unity之后,我们大概可以看到以上画面,以上画面中即显示了我们最常用到 ...
- Unity编程标准导引-2.2Unity中的基本概念
2.2Unity中的基本概念 上述介绍提到了几个概念:游戏对象.场景.资源.相机,这个小节我们来深入了解,同时进行一些实践性操作.不过首先,我们需要大概了解一下Unity的工程文件夹. 2.2.1工程 ...
- Mycat中的核心概念
Mycat中的核心概念 Mycat中的核心概念 1.数据库中间件 Mycat 是一个开源的分布式数据库系统,但是由于真正的数据库需要存储引擎,而 Mycat 并没有 存储引擎,所以并 ...
- opnet仿真过程中SEED的概念问题 分类: opnet 2014-11-02 15:25 69人阅读 评论(0) 收藏
仿真配置中SEED的概念:仿真随机种子,是产生随机数的种子值,反应随机数的状态.只要选定一个种子值,整个随机事件系统就固定了,复杂仿真的随机过程就成了一次实现.目的是测试仿真系统的稳健性,具体来说,针 ...
随机推荐
- 20165318 2017-2018-2 《Java程序设计》第五周学习总结
20165318 2017-2018-2 <Java程序设计>第五周学习总结 学习总结 在使用IDEA时,由于我之前编写的代码都是使用GBK编码,使用IDEA打开时,由于IDEA默认为UT ...
- centos7 tengine 安装
Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检 ...
- 递归计算一个目录的大小【os.wallk()】
os.walk(): os.walk()可以得到一个三元tupple(dirpath, dirnames, filenames),其中第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的 ...
- JVM(二)GC算法和垃圾收集器
前言 垃圾收集器(Garbage Collection)通常被成为GC,诞生于1960年MIT的Lisp语言.上一篇介绍了Java运行时区域的各个部分,其中程序计数器.虚拟机栈.本地方法栈3个区域随线 ...
- openvpn 上外网
Openvpn-2.2.2 实施记录 最终现象: Linux路由: [root@iZrj961wb7816wke73ql7qZ openvpm]# route -n Kernel IP routing ...
- 【jq】插件—弹出层layer.js
layer.js包含了所有的层级情形,并且附加的有:tab层,相册层.webIM层. 适用于移动版本的layer.js 为layer for mobile 配套的layui 非常适合用于后台系统的 ...
- C++练习 | 计算两日期之间天数差
#include<iostream> #include<string> #include<cstring> using namespace std; class D ...
- 说说MySQL索引
前言 关于索引,这是一个非常重要的知识点,同样,在面试的时候也会被经常的问到: 本文描述了索引的结构,介绍了InnoDB的索引方案等知识点,感兴趣的可以看一下: 引入 本文参考文章:MySQL的索引 ...
- 小白python语言基础
程序概念层级 表达式 语句包含表达式 包和模块 程序 变量与储存 变量:对象的别名 命名规则:字母.数字.下划线 只能以字母或下划线开头 能包含空格/中文 避免python关键字或函数名 简短 ...
- Scala-元组操作
package com.bigdata object TupleMapO { def main(args: Array[String]): Unit = { // 元组:Tuple,就是由()包起来, ...