第二页
读取整个磁盘驱动器所需时间从125秒增加到2400秒,是原来的19.2倍。
寻道加延迟时间从20.0毫秒减少道了7.69毫秒,原来所需时间是现在的2.7倍。
存储密度增加了600倍。
带宽增加了31.25倍。
磁盘虽然从2004年到现在变快了一些,但是幅度不大。综合以上所述事实,结论是读取整个磁盘的数据所需的时间大大增加了。举个例子,比如现在有一个8KB大小的数据库需要输入/输出。在1991年,按平均的寻道和延迟时间来计算,需要大约0.004秒来读取该数据。今天,只需要0.0008秒就可以了,是原来的五分之一。这意味着当进行小量输出/输出请求时,寻道和延迟时间很可能左右整体的性能水平。这无需奇怪,因为磁盘驱动器本来就是一个机械装置。这里有两点:
在UNIX系统下启动RAID、磁区管理软件和文件系统时,将数据分散到多个设备是提高性能的唯一方法,这是因为相对于寻道+延迟时间的进步,磁盘变慢了。
在早些时候,RAID高速缓存还很小,因此不能使用积极的预读和后写式工作模式。
因此,过去的情况就是:磁盘传输速率相对于寻道和延迟时间来说要快一些,文件系统将数据分成很小块,磁区管理和RAID分配都不大(小于128K),积极的预读模式不现实,而数据库和应用程序也都相当小。因此,解决问题的唯一办法就是将它们分成越小越好;在当时这是完全合理和唯一可行的方法。这种情况一直持续到大概2001年或2002年。此后我们看到:
可以按顺序分配数据的文件系统,大的顺序分配超过32MB;
中端产品的RAID高速缓存的大小超过2GB,而企业产品则超过64GB;
而且在切换到另一个设备之前,磁区管理可以按GB规模进行分配;
我们看到磁盘驱动器也在发生变化,传输速率的提升幅度远远超过寻道和延迟时间的减小幅度。
解决热点问题
任何一个精于存储的人士都知道这里没有万灵药,但是存储架构的热点理论却被视为存储的十大戒律之一。我并不是说这个理论是错的,但是我觉得这种方法有问题。比如说我有一个文件系统和磁区管理,分配64MB或以上的顺序分配数据。甚至还有一个RAID-5 8+1,也就是说,每个磁盘一个512KB的条带,那么将有16个顺序分配。想想这个。现在的希捷硬盘驱动器,每个驱动器都拥有16MB的高速缓存。假设所有都是随机的,那么进行磁盘预读不会帮助提升性能。而且,每次寻道和延迟过程中平均可以传输的数据量为读558KB,写608KB。这也就是数据传输在每次输入/输出请求时所损失的性能。
在考虑顺序分配之前,还有一个问题必须关注,即输入/输出请求是否是顺序的,这个问题甚至我也不能做出百分之百的回答。热点理论认为输入/输出请求是随机的。我相信它并不百分百适用于所有情况,但是我也不能给出适用和不适用的比例分别是多少。我知道在HPC(高性能计算)领域,大部分应用的输入/输出请求是顺序的。我知道备份过程中的输入/输出请求经常是顺序的。我也知道一些数据库访问是随机的,但是我也知道我所实际看到和跟踪过的数据库有时会按顺序读取索引一段时间,然后是突然变化,接着继续按顺序读取。我在许多不同类型的数据库上看到这种情况出现过很多次,但不是所有数据库都是这样。如果是RAID-1的输入/输出请求是按顺序的,那么分配就可以是按顺序的,如果此时请求也是顺序的,那么预读模式就可以大大提高性能,最大的好处是,你用不着那么多硬件了,因为磁盘的效率提高了。
现在热点专家们声称他们的方法是提高存储架构性能的唯一方法,但如果你采取进一步行动,分析你的数据访问模式,并通过文件系统和磁区管理来合理地分配你的数据,那么你就可以获得更好的性能,而不用那么多硬件,并具有更好的进退空间。如果发展到基于对象的存储的阶段--我希望如此--那么通过对象技术就可以让系统智能地分辨数据访问模式并调整预读和后写工作模式。无论未来如何,我都认为人们需要重新思考这个问题,并摸索其他可以利用现有技术来解决问题的方案。
网友评论