七种RAID
RAID以4个扇区组成的块作为基本单位,不同磁盘的相同偏移处的块组成Stripe,也就是条带.对于RAID 0 磁盘组,如果有大块数据写入时,则数据在很大几率上可以以条带为单位写入,并行写入能大大提高写入速度.
简介
- RAID 0
没有冗余,通过并行写入提高性能. - RAID 1
- RAID 0 数据不安全,一块盘坏掉,整个阵列就坏了.因此RAID 1 拿另一磁盘做备份,即一次性写两份.
- 读性能和顺序写性能提高N倍,但随机写由于公用同一块备份盘,因此性能没有提升.
- RAID 2
- 采用Hamming Code ECC进行校验.汉明码只能纠正一位错误.所以只能允许一块硬盘出问题.如果两块或以上硬盘出现问题,RAID 2的数据将被破坏.
- 其实是将原本连续的一个扇区数据,以位为单位分割存放在不连续的多块物理盘上.也就是条带深度为1.
- RAID 2不能实现并行IO,因为每次IO都要联动所有的磁盘,只能做到一个IO内部的并行.
- 基于其特点,能将顺序读写提升N倍,随机读写不能提升.
- RAID 3
- 采用异或的性质来求校验值.对于RAID 3 连续读写性能几乎是单盘的N倍.随机读写并没有提升,几乎和单盘一样.
- RAID 3 执行一次IO必须牵动占用所有盘,其他IO就必须等待,因此根本不能并发IO.
- 一般来说,RAID 3的条带长度=文件系统的块大小,避免条带不对齐的现象.
- 与RAID 2相同,只对大的连续读写有提升,小的随机读写没有优化.
- RAID 4
- 由于实际的读写常常是小的随机读写,前四种做法会有明显的缺陷,因此出现了RAID 4. RAID 4通过增大条带深度,大大增大了IO读写的并发性.
- RAID 5
- 由于RAID 4写请求需要共享校验盘,因此写请求不能实现并发.因此RAID 5将校验数据分散在各个磁盘上.使并发概率最大化.
- 新校验码=老数据XOR新数据XOR老校验码.
- 如果之前校验码出错,只能用新数据重新计算校验码,否则新校验码仍为错误.
- RAID 5磁盘数越多,可并发的几率越大.
- RAID 6
- 通过增加一个校验盘提高安全性,可以同时坏两块盘.
- 注意
- 如果随机小块IO多,则适当加大条带深度;如果连续大块IO多,则适当减少条带深度.
操作系统中RAID实现
为了保证性能,同一磁盘组只能用同类型的磁盘,混合使用多类型磁盘组成虚拟磁盘非特殊要求不会有这样的设计.
这种RAID称为软件RAID,存在如下缺点:①占用内存空间;②占用CPU资源(如利用异或求检验值等);③软件RAID程序无法将安装有操作系统的那个磁盘分区做成RAID模式.RAID程序运行在操作系统之上,在启动操作系统之前无法实现RAID功能,因此操作系统损坏,RAID程序也无法运行,数据丢失.
RAID卡
其实是一种硬件实现RAID.
- 0通道RAID卡
自身没有SCSI通道,利用主板上已经集成或者已经插在PCI上的SCSI卡,来控制他们的通道. - 无驱动RAID卡
使用SATA接口连接计算机. - RAID On Chip(ROC)技术
利用SCSI卡上的CPU处理芯片,通过在SCSI卡的ROM中加入RAID代码而实现. - RAID卡上内存
用于存放CPU执行代码以及作为数据缓存.
#虚拟磁盘 - 操作系统如何看待逻辑盘
- 目前各种RAID卡都可以划分逻辑盘,逻辑盘大小任意设置.每个逻辑盘对于OS来说都是一块单独的物理盘.而分区OS在一块物理磁盘上做的再次划分.
卷管理
由于虚拟磁盘存在不灵活性,扩展上存在缺陷,因此出现了卷管理(Volume Manager,VM).很多操作系统上都有逻辑卷管理(LVM).
其主要功能是将OS识别到的物理磁盘(RAID卡虚拟化的逻辑盘)进行在组合.
- 相关概念
- PV : OS识别到的物理磁盘,叫物理卷(physical volume)
- VG : 多个PV被逻辑的放到一个卷组(volume group)中
- PP:即物理区块(physical partition).是在逻辑上再将一个VG分割成连续的小块.逻辑上连续的PP物理上不一定连续.
- LP : 逻辑区块.为实现某种功能,由多个PP组成的一个集合.
- LV :由多个LP组成的逻辑卷.
- 总结起来就是将多个PV组合成一个存储集合VG,并在逻辑上将VG划分成若干PP.然后再在逻辑上组成若干LV.其中LV的基本单元是LP.而LP的基本单元是PP.
- 高级卷管理和低级卷管理
- 分区管理可以看做一种最简单的卷管理方式,它比LVM等要低级,比如windows自带的磁盘管理器.这些卷信息都存放在LBA1扇区上,这个扇区叫做主引导记录MBR,MBR还保存了BIOS跳转时所需要的第一句指令代码.
- 高级卷管理在划分逻辑卷之后,一定要记录逻辑卷是怎么划分的.LVM使用VGDA(volume group descriptior area)存放卷信息.
文件系统
在一个没有文件系统的计算机上,如果一个程序要向磁盘上存储一些自己的数据,那么这个程序只能自己调用磁盘控制器驱动,或者调用VM提供的接口,对磁盘写数据.引入文件系统后,各个程序之间都通过文件系统接口访问磁盘,所有被写入的数据都称为一个文件,有名字,是一个实体.
文件系统的IO包括同步IO、异步IO、阻塞IO/非阻塞IO和Direct IO.
本文总阅读量 次
本文由 Yu Zhang 发表于 Yu Zhang's Blog ,采用署名-非商业性使用-禁止演绎 3.0进行许可。
非商业转载请注明作者及出处。商业转载请联系作者本人。