/ 中存储网

使用磁盘镜像增加I_O性能(一)

2013-06-21 09:27:00 来源:中存储网

迄今,对磁盘镜像的讨论仅涉及写操作的镜像。事实上,写操作只占整个磁盘操作的10%~20%左右,大部分磁盘操作都是读操作。因此,增强磁盘读操作的速度是改善性能非常重要的环节。

许多年来,I/O性能一直是很重要的研究课题,随着我们所拥有的在线数据量的增长,它正变得越来越重要。在一个普通的计算机系统中,最慢的组件通常是磁盘驱动器,虽然内存的响应时间保守地估计在60~80纳秒,但磁盘的访问时间却在8~12微秒范围内。因而,磁盘驱动器的速度比内存要慢100多倍。

为了更明白地理解磁盘和内存速度的差别,考虑在日常工作期间,处理一件事花费的时间增加100倍时的情景。这时,如果你原来驾车上班的时间是15分钟,那么,你现在驾车上班将不得不花去1500分钟(25小时);假如你原来花费2分钟时间就能发送一份传真,那么,现在发送一份传真,你将不得不花200分钟得时间。因此毫不夸张地说,这使我们很难完成任何事情。考虑存放在磁盘上巨大的数据量,就能认识到磁盘性能改进的意义。

已经证明,磁盘镜像能在改善性能的同时,也能提供更高的可靠性。磁盘的臂总是带动着磁头不停地在盘片表面运动,以进行读/写操作,只要磁头停止在它们将要读/写的磁道上,数据传输是很快的,但定位磁头于正确的磁道上则需要花很长时间,这个时间延迟是导致磁盘速度慢的主要原因。假如能够减少由磁盘臂在磁盘表面移动而引入的延迟,则能节省大量的时间。

对于镜像的写,两个驱动器的磁盘臂都被定位在各地的磁道上,然后,才能将数据写入磁盘。相比之下,读操作则不必置两个磁盘臂于两个驱动器的同样磁道上,只要两个驱动器之一的磁盘臂置于正确的磁道,就能正确地读出数据,因此,磁盘读冗余是完全没有必要的。当队列中有多个读操作时,可以分散工作负荷,以至于一个磁盘处理这一组请求,另一个磁盘处理另一组请求,使用这种方法,磁盘的响应速度将会加倍。

1.通过增加磁盘轴数量增加性能

并行处理是一个提高系统性能的标准计算技术之一,它的思想很简单:如果一个处理器能在10秒中完成的工作,那么,10个处理器能在1秒内就能完成。镜像磁盘的异步读就是并行处理概念运用于磁盘驱动器的一个例子。

异步读的本质是增加磁盘驱动器的数量,因此,增加了用于恢复数据的磁盘臂数量。尽管其目的明显是增加磁盘臂的数量,但有时仍然被称作“增加轴数量”。事实上,每驱动器一个磁盘臂,增加磁盘驱动器的个数,就能更快地读出数据,如磁盘镜像。

磁盘驱动器的技术含量很高,但我们总是习以为常。磁盘驱动器工业竞争十分激烈,推动着磁盘驱动器技术持续向前发展,不断增加的表面密度、更大的容量和更快的转速,这些都导致磁盘性能的提高。毫无疑问,未来几年内,磁盘驱动器工业将继续推进技术的进展,给磁盘驱动器市场带来新的惊讶。

然而,高容量的磁盘驱动器也存在一个缺点,即单磁盘臂需要读出的数据量更大,换而言之,虽然存储的数据量已经大大地增长,但磁盘臂的数量依然保持未变,因而,虽然磁盘驱动器的平均访问时间变得越来越少,但相比容量来说,它们的进展仍显得太慢。值得注意的是磁盘容量的增长与盘片大小的增加并无关系。

对于单用户系统,这并不是一个很严重问题,但对于拥有高级并发访问的多用户服务器,磁盘臂必须执行更经常的寻道操作。每个服务器带有36GB的镜像硬盘,管理20个并发磁盘读访问。

服务器A带有两个18GB的磁盘驱动器镜像对,总共为36GB的在线存储,服务器B使用9对4GB的镜像磁盘,具有与服务器A同样的存储容量。服务器A有4个磁盘臂支持20个请求服务,而服务器B有18个磁盘臂,虽然不能保证把数据分散到18个磁盘臂上,让所有的磁盘臂都处于工作状态,但几乎可以肯定服务器B使用的磁盘臂多于4个,且所服务的请求数目与服务器A相同。随着时间的推移,服务器B将由于使用磁盘臂的数量逐渐增多,而表现出比服务器A有更明显的性能优势。