第六章 设备管理 Devices Management RAID技术 缓冲技术 设备分配
磁盘阵列RAID技术 ..... 把多块硬盘当做一块逻辑硬盘来管理和存取数据以提高磁盘系统的稳定性和速度,并可提供容错功能 1988年提出 RAID可分成多级( Level ) 数据在各盘中的分布 数据的冗余和校验处理 Disk1 RAID 控制器 逻辑硬盘 Disk2 .....
What is RAID? Redundant Array of Inexpensive(Independent) Disks 廉价(独立)磁盘冗余阵列。 RAID的初衷主要是为大型服务器提供高端的存储功能和冗余的数据安全。 SCSI 与 IDE-RAID RAID也有全软、半软半硬与全硬之分
Which are the various RAID levels and what is their exact meaning? 都使用多个物理磁盘分布存储数据. 按独立于应用程序的方式存储数据(即数据的存储方式对应用程序是透明的)
RAID 0 Striped Disk Array without Fault Tolerance没有容错设计的条带磁盘阵列 多个硬盘并联在一起。RAID 0在存储数据时由RAID控制器(硬件或软件)分割成大小相同的数据条,同时写入阵列中的磁盘。 flash demo with RAID0
RAID 1 = Mirroring Mirroring and Duplexing(相互镜像) 镜像——两个硬盘的内容完全一样,内容彼此备份。写入时,RAID控制器将数据同时写入两个硬盘。其中任何一个硬盘的数据出现问题,可以马上从另一个硬盘中进行恢复。 RAID Level 1 requires a minimum of 2 drives to implement flash demo with RAID1
RAID0+1 = Stripping + Mirror RAID Level 0+1 requires a minimum of 4 drives to implement Very expensive / High overhead flash demo with RAID 0+1
RAID10 = Mirroring + stripping This can be found only in hardware RAID RAID-10 combines RAID 0 and RAID 1 by striping data across multiple drives without parity and it mirrors the entire array to a second set of drives. This process delivers good performance and excellent data protection, but cuts the usable disk space in half. RAID-10 requires a minimum of four same-size drives, and is also the most expensive RAID solution and offers limited scalability. flash demo with RAID 10 ( 1+0)
RAID 2 Hamming Code ECC(汉明码错误检测与修正) Each bit of data word is written to a data disk drive (4 in this example: 0 to 3). Each data word has its Hamming Code ECC word recorded on the ECC disks. On Read, the ECC code verifies correct data or corrects single disk errors.
RAID 2 由于汉明码是位为基础进行校验的,那么在RAID2中,一个硬盘在一个时间只存取一位的信息。所以RAID 2中的硬盘数量取决于所设定的数据存储宽度。如果是4位的数据宽度,那么就需要4个数据硬盘和3个汉明码校验硬盘,如果是64位的位宽呢,数据阵列需要64块硬盘,校验阵列需要7块硬盘。
RAID 3 Parallel transfer with parity并行传输及校验 RAID 3是在RAID 2基础上发展而来的,主要的变化是用相对简单的异或逻辑运算(XOR,eXclusive OR)校验代替了相对复杂的汉明码校验,从而也大幅降低了成本。
校验盘只有一个,而数据与RAID 0一样是分成条带(Stripe)存入数据阵列中,这个条带的深度的单位为字节。在数据存入时,数据阵列中处于同一等级的条带的XOR校验编码被即时写在校验盘相应的位置,所以彼此不会干扰混乱。读取时,则在调出条带的同时检查校验盘中相应的XOR编码,进行即时的ECC。由于在读写时与RAID 0很相似,所以RAID 3具有很高的数据传输效率。
RAID 3
RAID 4 Independent Data disks with shared Parity disk 独立的数据硬盘与共享的校验硬盘 关键之处是把条带改成了“块”。RAID 4按数据块为单位存储的,数据块由操作系统所决定的,这就是簇(Cluster)
同级(是指在每个硬盘中同一柱面同一扇区位置的数据)数据块都通过XOR进行校验,结果保存在单独的校验盘。写入时,把各硬盘上同级数据的校验统一写入校验盘,等读取时再即时进行校验。因此即使是当前硬盘上的数据块损坏,也可以通过XOR校验值和其他硬盘上的同级数据进行恢复。由于RAID 4在写入时要等一个硬盘写完后才能写一下个,并且还要写入校验数据所以写入效率比较差,读取时也是一个硬盘一个硬盘的读,但校验迅速,所以相对速度更快。
RAID 4
RAID 5 Independent Data disks with distributed parity blocks 独立的数据磁盘与分布式校验块 高级RAID系统中最常见的等级,由于其出色的性能与数据冗余平衡设计而被广泛采用。与RAID 3、4一样,它也是一种即时校验RAID系统,但设计更为巧妙,而管理也相对复杂。
采用数据块存储方式,但没有独立的校验硬盘,它在每个独立的数据盘中都开辟了单独的区域用于存储同级数据的XOR校验数据,在写入时,同级校验数据将即时生成并写入,读取时同级校验数据也将被即时读出并检查源数据的正确性。其硬盘利用率较高,数据吞吐量比较容易得到发挥。 flash demo with RAID 5
RAID 5的特点
RAID 6 Independent Data disks with two independent distributed parity schemes 独立的数据硬盘与两个独立分布式校验方案 在RAID 5基础上,为了进一步加强数据保护而设计的一种RAID方式,实际上是一种扩展RAID 5等级。
与RAID 5的不同之处于除了每个硬盘上都有同级数据XOR校验区外,还有一个针对每个数据块的XOR校验区。当前盘数据块的校验数据不可能存在当前盘而是交错存储的
RAID 7 最优化的异步高I/O速率和高数据传输率 Optimized Asynchrony for High I/O Rates as well as High Data Transfer Rates 最优化的异步高I/O速率和高数据传输率 多个硬盘组成一个“柱子”,在读/写某一区域的数据时,可以迅速定位,不会因单个硬盘的限制同一时间只能访问该数据区的一部分
所有的I/O传输都是异步的,因为它有自己独立的控制器和带有Cache的接口,与系统时钟并不同步 所有的读与写的操作都将通过一个带有中心Cache的高速系统总线,我们称之为X-Bus 专用的校验硬盘可以用于任何通道 带有完整功能的即时操作系统内嵌于阵列控制微处理器,这是RAID 7的心脏,它负责各通道的通信以及Cache的管理,这也是它与其他等级最大不同之一 连通性:可增至12个主机接口 扩展性:线性容量可增至48个硬盘 开放式系统,运用标准的SCSI硬盘、标准的PC总线、主板以及SIMM内存 高速的,集成Cache的数据总线(就是上文提到的X-bus) 在Cache内部完成校验生成工作 多重的附加驱动可以随时热机待命,提高冗余率和灵活性 易管理性:SNMP(Simple Network Management Protocol,简单网络管理协议) 可以让管理员远程监视并实现系统控制
RAID53 = raid3 + stripping High I/O Rates and Data Transfer Performance 高带宽与数据传输性能 将备份等级由RAID 0变为了RAID 3,把原来的镜像阵列变成了分割式存储阵列。但不是对每个RAID 0硬盘都用一个RAID 3系统进行,而是用RAID 3对所有数据进行冗余存储,而且读写与ECC效率比RAID 0要高。
RAID 53的特点
RAID Level一览表 RAID 0 RAID 1 RAID 0+1 RAID 10 ( 1+0) RAID 2 RAID 3
缓冲技术 Buffering 目前为了解决CPU与I/O设备间速度不匹配的矛盾,提高的I/O速度和设备利用率,在所有的I/O设备与处理机(内存)之间,都使用了缓冲区来交换数据。所以OS必须组织和管理好这些缓冲区。
缓冲的引入 改善CPU与I/O设备间速度不匹配的矛盾 可以减少对 CPU的中断频率,放宽对中断响应时间的限制
单缓冲( Single Buffer ) 每当一个用户进程发出一个I/O请求时,OS便在主存中为之分配一个缓冲区。例如,CPU要从磁盘上读一块数据进行计算,先从磁盘把一块数据读入到缓冲区中,然后由OS将缓冲区的数据传送到用户区,最后由CPU对这一块数据进行计算。可见第一步和最后一步是可以并行执行的,这样就提高了CPU和外设的利用率。但是对缓冲区中数据的输入和提取是串行工作的。 (如下图所示) 处理时间=MAX(C,T)+M。通常,M远小于T或C 缓冲区 用户区 输入T 传送M I/O设备 操作系统 用户进程 计算C
双缓冲( Double Buffer ) 双缓冲工作方式基本方法是在设备输入时,先将数据输入到缓冲区A,装满后便转向缓冲区B。此时OS可以从缓冲区A中提取数据传送到用户区,最后由CPU对数据进行计算。(如下图所示) 系统处理一块数据的处理时间可粗略地认为:MAX(C,T)。若C<T,可使块设备连续输入;若C>T,可使CPU不必等待设备输入。 缓冲区A 用户区 缓冲区B 输入T 传送M I/O设备 操作系统 用户进程 计算C
环形缓冲( Circular Buffer ) 双缓冲可以实现对缓冲区中数据的输入和提取,与CPU的计算,三者并行工作。所以双缓冲进一步加快了I/O的速度,提高了设备的利用率。 当对缓冲区中数据的输入和提取的速度基本相匹配时,采用双缓冲可使两者并行工作,获得较好的效果。但是如果两者的速度相差甚远时,双缓冲的效果就不够理想了。如果增加缓冲区的个数,情况就会有所改善。可将多个缓冲区组织成循环队列的。 …… 缓冲区1 用户区 缓冲区2 缓冲区N 输入T 传送M I/O设备 操作系统 用户进程
缓冲池 当系统配置较多的设备时,使用专用缓冲区就要消耗大量的内存空间,且其利用率不高。为了提高缓冲区的利用率,目前广泛使用公用缓冲池,池中的缓冲区可供多个进程共享。 对于同时用于输入/输出的公用缓冲池,至少含有三种类型的缓冲区:空缓冲区、装满输入数据的缓冲区和装满输出数据的缓冲区。为了管理上的方便,可将相同类型的缓冲区链成一个队列,于是就形成三个队列:空缓冲区队列、输入缓冲区队列和输出缓冲区队列。 空缓冲区队列:由空缓冲区所链成的队列。 输入缓冲区队列:由装满输入数据的缓冲区所链成的队列。 输出缓冲区队列:由装满输出数据的缓冲区所链成的队列。
缓冲区工作在收容输入、提取输入、收容输出和提取输出四种工作方式下(如下图所示) hin sout sin hout 用 户 程 序 收容输入 提取输入 提取输出 收容输出 缓冲池
设备的分配 在多道程序环境下,设备必须由系统分配。每当进程向系统提出I/O请求时,设备分配程序按照一定的策略,把其所需的设备及其有关资源(如缓冲区、控制器和通道)分配给该进程。在分配设备时还必须考虑系统的安全性,避免发生死锁现象。
据设备使用特性的分类 独享方式 共享方式 虚拟方式 独享方式是指将一个设备分配给某进程后,便一直由它独占,直至该进程完成或释放该设备为止,系统才能将该设备分配给其它进程使用。这种分配方式是对独占设备采用的分配策略。它不仅往往造成设备利用率低,而且还会引起系统死锁。 共享方式 共享方式是指将共享设备(磁盘)同时分配给多个进程使用。但是这些进程对设备的访问需进行合理的调度。 虚拟方式 虚拟方式是指通过高速的共享设备,把一台慢速的以独占方式工作的物理设备改造成若干台虚拟的同类逻辑设备,这就需要引入SPOOLing技术。虚拟设备属于逻辑设备。
独享设备的分配 设备分配方式 设备分配算法 静态分配 动态分配 FCFS 优先级方式 所需设备在运行前分配,运行结束释放 不会死锁但设备利用率太低 动态分配 运行中需要时申请(由设备分配算法分配),用完后即可归还 设备利用率高但可能出现死锁 设备分配算法 FCFS 优先级方式
SPOOLing技术 早期批处理系统中使用的虚拟技术是以脱机方式工作的。为了缓和CPU和I/O设备之间的速度不比配的问题。利用专门的外围控制机将低速I/O设备上的数据传送到高速磁盘上,或者相反。当多道程序设计的分时系统出现后,SPOOLING技术就孕育而生,它将一台独占设备改造成可以共享的虚拟设备。
Simultaneous Peripheral Operation On Line 当多道程序程序技术出现后,就可以利用一道程序,来模拟脱机输入时的外围控制机的功能,即把低速I/O设备上的数据传送到高速的磁盘上;再用另一道程序来模拟脱机输出时外围控制机的功能,即把数据从磁盘传送到低速I/O设备上。这样,便在主机的直接控制下,实现脱机输入、输出功能。所以,我们把这种在联机情况下实现的同时与外围设备联机操作的技术称为SPOOLING,或称为假脱机技术。
SPOOLing系统的组成 SPOOLing系统是对脱机输入、输出工作的模拟,它必须有高速随机外存(硬盘)的支持。 SPOOLing系统主要有以下三部分: 输入进程Spi 输出进程SPo 输入缓冲区 输出缓冲区 输入井 输出井 磁 盘 内 存 输出设备 输入设备
共享打印机 打印机虽然是独享设备。但是通过SPOOLing技术,可以将它改造为一台可供多个用户共享的设备。共享打印机技术已被广泛地用于多用户系统和局域网络。当用户进程请求打印输出时,SPOOLing系统并不是真正把打印机分配给该用户进程,而由输出进程为他在输出井中申请一个存储空间,并将要打印的数据以文件的形式存放于此。各进程的输出文件形成一个输出队列,由输出SPOOLing系统控制这台打印机进程,依次将队列中的输出文件打印出来。 利用SPOOLing技术可以提高I/O的速度,将独占设备改造为共享设备,实现虚拟设备的功能。