磁盘管理

磁盘管理包括磁盘调度算法、磁盘高速缓存、RAID技术。

首先学习磁盘的结构

如图所示:磁盘由多个盘片组成,每个盘片有两个盘面,每个盘片都有两个磁头,统一由磁头臂控制。盘片上的存储区域被分为磁道,每个磁道上又分多个扇区。如图,每个扇区的大小事512字节,所以扇区也是数据存储和传输的基本单位。

按磁头的工作方式,可以分为活动头磁盘和固定头磁盘。

1.活动头磁盘

活动头磁盘一个盘面上仅配有一个磁头,所有磁头都安装在一个传动臂上,在访问盘面上的磁道时,传动臂在步进电机的控制下,可在整个盘面上从外向内,或从内向外移动,这称为寻道。活动头磁盘只能进行串行读/写,导致I/O速度较馒,但是由于结构简单,仍广泛用于中、小型磁盘设备中。微机上配置的温盘和软盘,都采用活动磁头结构,这里我们主要针对这类磁盘的I/O进行讨论。

2.固定头磁盘

固定头磁盘在每条磁道上都有一个读/写磁头,所有的磁头都被装在一刚性磁臂中,通过这些磁头可访问所有的磁道,可以进行并行读/写操作,有效地提高了磁盘的I/O速度。这种结构的磁盘主要用于大容量磁盘上。

所有盘面上的同一磁道构成一个圆柱,通常称做柱面(Cylinder),柱面号和磁道号是一致的,数据的读/写按柱面进行,即磁头读/写数据时首先在同一柱面内从“0”磁头开始进行操作,依次向下在同一柱面的不同盘面即磁头上进行操作,只在同一柱面所有的磁头全部读/写完毕后磁头才转移到下一柱面,因为选取磁头只需通过电子切换即可,而选取柱面则必须通过机械切换。电子切换相当快,比在机械上磁头向邻近磁道移动快得多,所以,数据的读/写按柱面进行,而不按盘面进行。这样就比单独读写盘面提高了硬盘的读/写效率。

硬盘的容量由盘面数(磁头数)、柱面数和扇区数决定,其计算公式为:

硬盘容量=盘面数×柱面数×扇区数×512字节

硬盘容量=盘面数*磁道数*扇区数*512

---------------------------------------------------------------------------------------------------------------------------

影响磁盘性能的指标有转速、寻道时间、磁盘缓存、数据传输速率。其中影响数据查找的的主要因素是寻道时间,因此,磁盘调度算法主要是减少平均寻道时间,提高I\O传输的效率。

磁盘的调度算法:

磁盘是可被多个进程共享的设备。当有多个进程都请求访问磁盘时,应采用一种适当的调度算法,以减小各进程对磁盘的平均访问(主要是寻道)时间。目前常用的磁盘调度算法有:先来先服务、最短寻道时间优先、扫描算法和循环扫描算法等。

1.先来先服务FCFS(First Come First Served)算法

这是一种最简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。但此算法由于未对寻道进行优化,致使平均寻道时间可能较长。

2.最短寻道时间优先SSTF(Shortest Seek Time First)算法

该算法总是为那些与当前磁头所在的磁道距离最近请求服务,也就是执行寻道时间最短的那个I/O请求。这种调度算法有较好的平均寻道时间,SSTF较之 FCFS有较好的寻道性能,故曾被广泛采用。

3.扫描(SCAN)算法

SSTF算法虽然获得较好的寻道性能,但它可能导致某些进程长时间的得不到服务(称之为饥饿现象)。因为只要不断有新进程到达,且其所要访问的磁道与磁头当前所在磁道的距离较近,这种新进程的I/O请求必被优先满足。对 SSTF算法略加修改后所形成了SCAN算法。

该算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。即当磁头正在自里向外运动时,SCAN算法要选择的下一个访问对象是其欲访问的磁道在当前磁道之外,又是距离最近的。直至再无更外的磁道需要访问时,才将磁臂换向,自外向里运动。从而避免了饥饿现象的出现。由于这种算法中磁头移动的规律象电梯的运行,所以又称为电梯调度算法。

4.循环扫描 CSCAN(Circular SCAN)算法

这是SCAN算法的一种变种算法,是为了提供更均匀的等待时间而设计的。CSCAN算法规定磁头只能单向运动(自里向外),当磁头运动到最外面的被访问磁道时,磁头立即返回到最里面的欲访的磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描。

5.N-Step-SCAN算法

在SSTF、SCAN及CSCAN这几种算法中,都可能出现磁臂停留在某处不动的情况。例如,有一个或几个进程对某一磁道有着较高的访问频率,反复请求对某一磁道进行I/O,从而垄断了整个磁盘设备,把这一现象称为“磁臂粘着”。N步SCAN算法是将磁盘请求队列分成若干个长度为N的子队列,磁盘调度将按FCFS算法依次处理这些子队列,又按SCAN算法处理队列中的每一个请求,这样就可避免出现粘着现象。当 N值取得很大时,会使其性能接近于SCAN算法;当 N=1时, 该算法退化为 FCFS算法。

6. FSCAN算法

FSCAN算法实质上是N-Step-SCAN算法的简化。它只将磁盘请求访问队列分成两个子队列。一个是当前所有请求磁盘I/O的进程队列,由磁盘调度按SCAN算法进行处理。另一个队列则是在扫描期间,新出现的所有请求磁盘I/O的进程队列,这样所有的新请求都将被推迟到下一次扫描时处理。





磁盘高速缓存:在磁盘和cpu之间插入一个更快和更小的存储单元,作用是减小对磁盘的平均存取时间,称为磁盘高速缓存(disk cache)。主要是在内存中开辟一块区域为磁盘扇区缓冲区,这个缓冲区包含了磁盘一部分数据的副本,当I\O请求磁盘时,首先检查缓冲区中是否存在该扇区,如果有则直接对cache操作,否则被请求的扇区首先被写进cache中。

缓冲区的替换策略:最近最少使用算法,cache中没有被使用最长的扇区将被替换。

磁盘高速缓存数据的安全性:读数据没有问题,因为数据在磁盘中还有备份,而写数据则可能出现问题,数据未能及时写进磁盘,而cpu认为数据已经写入磁盘。因此,操作系统必须在合适的时间将数据从缓存中写入磁盘:1,立即写回,2,系统空闲时写回,3,按一定的时间频率写回。

-----------------------------------------------------------------------------

廉价磁盘冗余阵列RAID是1988年由美国加利福尼亚大学伯克莱分校提出的,现在已开始广泛地应用于大、中型计算机系统和计算机网络中。它是利用一台磁盘阵列控制器,来统一管理和控制一组(几台到几十台)磁盘驱动器,组成一个高度可靠的、快速的大容量磁盘系统。RAID的一个重要功能是容错功能。当一个RAID系统中的一块硬盘出现故障后,并不影响系统的正常使用,其他的硬盘会继续工作。

构成一个RAID系统一般要考虑两个方面的安排:数据在各个磁盘中的分布,数据的冗余和校验处理。根据RAID系统构成的这两个方面的细节不同,一般可以把RAID是分成6级的,即RAID 0级~RAID 5级。

1.RAID 0级

0级仅提供了并行交叉存取。在该系统中,有多台磁盘驱动器,系统将每一盘块中的数据分为若干个子盘块数据,再把每一个子盘块的数据分别存储到各个不同磁盘中,在以后,当要将一个盘块的数据传送到内存时,采取并行传输方式,将各个盘块中的子盘块数据同时向内存中传输,从而使传输时间大大减少。它虽能有效地提高磁盘I/O速度,但并无冗余校验功能,致使磁盘系统的可靠性不好。只要阵列中有一个磁盘损坏,便会造成不可弥补的数据丢失,故较少使用。

2.RAID 1级

1级具有磁盘镜像功能,其技术重点全部放在如何能够在不影响性能的情况下最大限度的保证系统的可靠性和可修复性上。例如,当磁盘阵列中具有8个盘时,可利用其中4个作为数据盘,另外4个作为镜像盘,在每次访问磁盘时,可利用并行读、写特性,将数据分块同时写入主盘和镜像盘。故其比传统的镜像盘速度快,但其磁盘容量的利用率只有50%,它是以牺牲磁盘容量为代价的。

3.RAID 2级

2级使用海明码而不是简单的磁盘镜像作为数据的容错手段,系统中所有组成硬盘的校验码都放在单独的几个磁盘中。海明码是一种可以纠正1 bit错的高效率线性分组码。其基本思想是将待传信息码元分成许多长度为k的组,其后附加r个监督码元(也称校验比特),构成长为n=k+r比特的分组码。这样,要根据k和r的数值来配置系统磁盘。阵列中的所有磁盘驱动器都可以像RAID 0那样进行操作,所不同的是,在访问操作的同时,要计算数据块的校验码是否正确,如果存储的数据发生了错误,要根据校验码来纠正输出。

4. RAID 3级

3级是具有并行传输功能的磁盘阵列。RAID盘的数据块仍然按照条带的方式分布,在所有磁盘的最后附加一个校验盘。校验盘中存储所有数据盘中对应位置的数据位的奇/偶校验和。比起磁盘镜像,它减少了所需要的冗余磁盘数。例如,当阵列中只有7个盘时,可利用6个盘作数据盘,一个盘作校验盘。磁盘的利用率为6/7。RAID 3级的组织方式适合一次读大量的数据,因为它的条带颗粒度小,导致读写数据时每个磁盘都在运行,同时读操作不是非常“频繁”的高带宽应用程序,例如科学计算和图像处理。

5. RAID 4级

4级与3级非常相似,同样使用一个校验磁盘。所不同的是,每个磁盘的访问是独立的,也就是说校验磁盘上面存储的奇/偶校验码是按照每个数据块产生的。这样读取1个数据块时,只要读取相应的磁盘上的数据块和校验盘中相应的数据块就可以了。因此,在使用4级时,对于多个独立的小的I/O请求的处理能力要比3级强,但是大量的连续的数据读/写性能就不及3级了。

6. RAID 5级

这是一种具有独立传送功能的磁盘阵列。每个驱动器都各有自己独立的数据通路,独立地进行读/写。用作纠错的校验码不是存放在专门的校验盘上,而是以螺旋方式散布在所有数据盘上,如图4-14所示,图中P(0-3)表示前4个数据盘相同数据块的校验码。5级常用于I/O较频繁的事务处理中。5级的读出效率很高,写入效率一般。因为奇/偶校验码在不同的磁盘上,所以可靠性提高了。但是它对数据传输的并行性解决不好,而且控制器的设计也相当困难。 5级最适合于读数据的需求大于写数据的需求的大型数据库操作。

但是当其颗粒度粗的时候,并非所有磁盘都在运行,这样就可以改善并行性的问题。

Windows 2000 Server在其软件中实现了容错配置方法,用磁盘管理器组织配置镜像卷和RAID卷,且可以在出现故障时恢复卷。镜像卷采用RAID 1技术,存储数据的完整、孤立副本;RAID卷采用RAID 5技术,存储奇偶校验信息。

RAID的优点: RAID最大的特点是高可靠性,当某硬盘故障时,可进行实时数据恢复而不中断存取,它增加系统不停机时间和网络可用性,防止数据丢失。由于磁盘阵列可采取并行交叉存取方式,磁盘I/O的速度提高。利用RAID技术可提高磁盘系统的性能/价格比高。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值