数据恢复咨询热线:400-666-3702  

欢迎访问南京兆柏数据恢复公司,专业数据恢复15年

兆柏数据恢复公司

 行业新闻

 当前位置: 主页 > 行业新闻

这技术要是实现了硬盘速度能翻好几倍

浏览量: 次 发布日期:2023-10-04 22:40:49

这技术要是实现了硬盘速度能翻好几倍

这篇文章写于13年前(2003年),当时我还在北航上大三,对于日新月异的电脑硬件十分痴迷,花了很多时间研究学习硬件知识,也有了一些思考。于是就写下了这篇文章《猜想--突破磁盘瓶颈,实现RAID硬盘》,投稿给了中关村在线。

然而十三年过去了,机械硬盘已经快要被固态硬盘取代了,我的猜想依然没能实现,真的很是遗憾。这个技术能够让机械硬盘的性能提升2-10倍之多,持续传输速度轻松突破SATA接口上限,虽然随机性能还是比不上固态硬盘,但至少存储数据的时间会大幅缩短,试想随便一个移动硬盘速度就能达到550MB/s会有多快?

现在我把这篇老文章一字不改的转过来,感兴趣的朋友可以一读,我们可以相互探讨。

计算机科技的发展速度可谓是一日千里、日新月异:左右CPU发展的摩尔定律不但没有衰减甚至出现将被超越的迹象;在NVIDIA豪言壮语“每六个月发布一款新的GPU”的支配下我们甚至已经跟不上显卡的发展脚步了;内存也毫不示弱,紧随着CPU和GPU的脚步,完全可以满足系统的需要;而作为计算机系统核心配件之一的硬盘的情形却不容乐观,硬盘的内部数据传输率始终未能得到提高。而计算机技术的发展需要各个独立硬件系统发展的协调和均衡,无论哪个环节慢下来,整个系统的性能都会受到影响。因此,作为现阶段无可代替的计算机外部存储系统的硬盘,已经形成了IT界公认的一个严重制约电脑整机性能的瓶颈!

一.问题的提出

近年来,硬盘无论在容量、存取速度还是可靠性方面都取得了长足的进步,典型的诸如:ATA133、Serial ATA、SCSI等外部接口规范,以及单碟容量的不断提升,转速也达到7200转(服务器版甚至达到15000转)。但如果同其它配件相比,现在的硬盘实在是没有什么值得夸耀的:缓慢的传输速度,居高不下的出错率和返修率,不尽人意的使用寿命……而且硬盘的数据传输率取决于外部和内部数据传输率两个因素。外部数据传输率和硬盘的接口有直接关系,外部数据传输率目前至少能够达到150MBs以上。而且,从长远的角度来看,其继续发展也完全没有什么问题。但其内部数据传输率目前尚未突破ATA66的水平!因此,在内部数据传输率没有得到相应的提高的情况下,单纯提高外部数据传输率实在是没有太大意义的。

于是,人们开始想方设法的努力解决这个问题。与CPU、GPU、内存、主板等芯片类硬件不同的是,硬盘的核心部件为机械装置。硬盘的内部数据传输率主要由硬盘的机械性能决定。要想提高硬盘的内部数据传输率,就必须提高机械装置的效率。目前提高硬盘内部数据传输率的途径主要有以下几个方法:

① .加快盘片主轴转速;

② .提高磁头的寻道速度;

③ .提高盘片的数据存储密度;

④ .提高盘片直径。

从现在的电机技术发展水平来看,虽然主轴转速已经达到15000转,但似乎已经离极限不远了。更高的转速意味着稳定性、散热、机械损耗、能耗等方面问题的急剧加重。因此,主轴转速的提高是有限度的,而且代价高昂。即使采用了目前最先进的“液态轴承马达”技术,机械损耗和震动也在所难免,提速的潜力十分有限,这就是IDE硬盘自从进入7200转以来迟迟没有向更高速度发展的原因。而寻道速度的提高意味着必须克服更严重的磁头移动惯性和达到更高的精度要求,以及更强的抗震技术的支持,显然也受到相关机电技术现有发展水平的制约。提高盘片的数据存储密度,即提高盘片的单碟容量,可以在相同的主轴转速下使磁头在单位时间内可读写更多的数据。近年来,硬盘的数据存储密度提高很快,现在已经诞生单碟80G的硬盘。不过,由于受到磁头技术水平的限制,数据存储密度的增加并不能同比地提高硬盘的内部数据传输率,就拿刚刚上市不久的希捷“酷鱼 V ”来说,他的单碟容量为60G,而其“前辈”“酷鱼 IV ” 单碟容量为40G,但是两者的内部数据传输率且不相伯仲,磁盘性能的提升十分有限。而提高盘片的直径已经严重与加快盘片主轴转速背道而驰,而且现在的硬盘盘片已经呈现出小型化趋势,3.5英寸已经成为事实上的标准。

二.应急之策——RAID 0

既然单凭硬盘厂商无法从内部解决磁盘传输瓶颈问题,那么就只能从外部想办法了。为此,人们采取了多种措施。1988年,美国加州大学伯克利分校的D.A.Patterson教授提出的廉价冗余磁盘阵列(Redundant Array of Inexpensive Disks,简称RAID)有效地解决了这个问题,简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据冗余的技术。根据RAID所采用的方法不同,可以将其分为许多种。这里我们只介绍能够大幅提高硬盘传输速率的一种——RAID 0:

RAID 0的工作原理为:当主机要求写入数据时,RAID控制器把即将进入硬盘的数据分成许多块,然后并行地将它们写到磁盘阵列中的各个硬盘上;当读出数据时,RAID控制器从各个硬盘上同时读取数据,把这些数据经过处理后恢复为原来顺序传给主机。这种方法的优点是采用数据分块、并行传送方式,能够极大的提高主机读写速度,并且磁盘阵列中存储空间没有冗余。如果采用N(N>1)块硬盘组成RAID 0系统,那么它可以在不牺牲硬盘容量的前提下达到理论上N倍于原来单个硬盘的读写速度!这样就可以极大的提升磁盘子系统的性能,以缓解燃眉之急。

由上可以看出RAID 0系统所带来的性能的提升是我们急切渴望得到的。但是RAID 0也并不是没有缺点的:

① .需要至少两块硬盘,这无疑加重了用户的负担;

② .需要附加控制器RAID卡的支持;

③ .RAID 0系统所带来的高发热、高噪音、高电能消耗都给用户带来了安装、控制和维护的不便;

④ .其致命的缺点就是稳定性差——一旦组成RAID 0系统的硬盘中有一块出错损坏,那么将全盘皆毁,给系统带来灾难性的损失。

对于不惜代价追求硬盘高容量和急速 的服务器来说① ② ③ 项显得微不足道,可以忽略不计,但 ④ 的存在使得服务器也不能安安稳稳的享用RAID 0带来的高磁盘性能。

那么,如果我们能够消灭RAID 0系统所带来的所有缺点而仅保留其优点,那么磁盘系统的瓶颈将不复存在!那么这样的硬盘系统必将具备以下的条件:

① .只需要一块硬盘,安装、控制、维护简单;

② .极大的提高硬盘的传输速度(与原来的硬盘相比较);

③ .不牺牲硬盘容量;

④ .不需要附加控制卡的支持;

⑤ .不降低其稳定性。

听起来很美,但能否实现呢?请看:

三.硬盘的结构带来的思考

先来看看硬盘的内部结构,如图1所示:

硬盘在读写数据时,电机带动盘片高速旋转,磁臂带动磁头沿盘片径向移动,凡是磁头扫过的区域都可进行读写操作。现在的硬盘大多是由多个盘片和多个磁头组成的。目前主流的硬盘为单碟40GB,那么40GB的硬盘就有一个双面盘片和两个磁头(正反两面各一个),60GB的硬盘由两个盘片,一个双面一个单面,和三个磁头……以此类推。

但是一般来说,磁盘在存储数据时,是连续分布的,即在当前位置的磁道写满之后才转入下一个磁道,除非出现磁盘碎片。因此,在读写具体的某个文件时,只有一个磁头在进行读写操作,其余的磁头虽然也在跟着移动,但不进行任何操作。当磁盘要执行多个任务时,举个例子:当第一个磁头正在连续读取数据1(假设其物理位置在硬盘第一个盘片的正面)时,系统发出请求要求读取另一个数据2,这时第一个磁头就必须暂停当前对数据1的读写操作,从而寻找数据2。注意硬盘的各个磁头是由同一个磁臂所控制,因此他们每时每刻都在相同的位置。

由此我们可以联想到,假如此时数据2在硬盘上的物理位置正好位于第一个盘片的反面与数据1相同的位置,此时硬盘的磁头就没必要进行寻道工作,也没有必要停止当前对数据1的读取工作,就可以执行对数据2的读取工作。也就是说,此时硬盘的两个磁头在同时进行读取工作!这样的话,此时其内部数据传输率将达到其标准的两倍!同理,在我们要同时拷贝两个文件时,硬盘的控制电路可以让这两个文件写入同一个盘片正反两面的相同位置,这样就可以同时让两个磁头进行写入操作,极大地提高了磁头的利用率。当然这只是十分极端的情况,在实际应用中这种情形根本不可能出现,况且我们对硬盘的内部具体读写工作方式并不了解,硬盘能否在同一时刻让两个磁头同时工作还是个未知数。不过我们可以肯定的是:如果能够对硬盘控制电路重新设计,从而能够做到硬盘的所有磁头能够同时进行工作,那么上面的猜想也不是没可能实现。

四. 由RAID 0引发的联想

再我们来看一下RAID 0系统的工作原理图,图2是由两块硬盘组成的RAID 0系统:

由上图可以清楚地看到:该系统由两块硬盘同时读写同一数据的不同数据块来达到双倍于原来硬盘的速度。也就是说,在任何时刻,这两块硬盘都在同步地工作,但它们读写的内容却完全不同。其中RAID 0控制器的作用就是将原来的数据均分为两份给两块硬盘写入或将两块硬盘读出的数据合并在一块儿交给外部数据总线。

由上面硬盘结构的猜想我们可以联想到它似乎和RAID 0的工作方式有些共同点:RAID 0在工作时将一个数据分成若干块给数个硬盘,这些硬盘同时进行读写操作,如果组成RAID 0系统的硬盘完全相同的话,那么这些分块了的数据的存放位置将完全相同(不同硬盘上的相同物理位置)。更进一步,如果我们将这些分块了的数据不是分给几个硬盘,而是分给同一个硬盘的几个磁头进行读写操作,由这几个磁头分别在各个盘片(或者同一盘片)的正反面的相同位置同时进行读写操作,这样的话,我们就在硬盘的内部实现了RAID 0系统!在这里我姑且将其称为“RAID硬盘”吧。

五.一劳永逸的解决方法

上面的猜想的确挺诱人的,如果能够实现“RAID硬盘”的话,即可在现有的基础上不进行太大的改动就可以实现数倍于原来的传输速度(有几个磁头就是几倍),但其究竟能否实现呢?让我们来慢慢地进行可行性分析:

⑴.先决条件——硬盘的特殊结构:

前面已经提到过,硬盘的几个磁头是由同一个磁臂连接在一起的,所以在任何时刻,他们都位于同一个位置,这就决定了这几个磁头可以在各个盘片(或者同一盘片)的正反面的相同位置同时进行读写操作,而且精度极高。

⑵.成功的先例——RAID 0系统:

由于我们的猜想是与RAID 0系统息息相关的,因此RAID 0系统的性能直接关系到我们的“RAID硬盘”的性能。目前,RAID系统在服务器上的广泛应用和良好的性能充分肯定了RAID 0的存在价值,虽然服务器是用得并不一定是RAID 0系统,但其一定是由RAID 0演化而来的。近年来,RAID 0系统开始进入桌面IDE领域,这无不充分证明了RAID 0的高性能和高性价比。

根据权威的测试数据表明,由两块硬盘组成的RAID 0系统可以提高硬盘传输率30%以上。当然,具体性能还受到RAID控制卡等外部因素的影响。虽然这里理论上的100%性能提升相差很远,但不可否认,在很小的代价下,RAID 0带来的性能提升是空前的。况且如果把RAID 0系统集成与硬盘内部的话,那就可以更好更精确的控制硬盘,接近甚至达到100%的性能提升指日可待。

⑶.修改硬盘控制电路——硬件级的软件工作:

既然硬件方面没有什么问题,那么就该“RAID硬盘”的核心部分——RAID控制器。作为机械式硬盘的唯一芯片部分,控制电路的性能好坏也直接影响到磁盘的性能,由于我们对硬盘的内部的工作方式进行了很大的改动,因此硬盘控制电路就必须作相应的修改。能否实现“RAID硬盘”的关键就在于此。

首先,既然是“RAID硬盘”就必须要有RAID控制器,因此先在硬盘的控制电路中集成一块RAID芯片,这对于硬盘厂商来说绝不是件难事。数据由硬盘接口传入后经过RAID芯片的处理分为几份(有几个磁头就分为几份)。

上海数据恢复

其次是磁头控制电路,数据被RAID芯片“瓜分”之后,交给磁头控制电路,由他来指挥磁头进行读写操作。这样的话,我们不管硬盘原来的磁头控制电路是什么样的,“RAID硬盘”的磁头控制电路的任务就是将这些已经分好的数据分别传输给各个磁头,然后,磁臂带动这些磁头同时进行读写操作。

由此以来,硬盘的控制电路将进行很大的修改。但是,集成电路IC设计属于硬件级的软件工作,要完成这样工作的芯片及其电路虽然要花费一些周折,但比起无畏地提升硬盘电机的转速显然要现实的多,我们有理由相信重新设计的硬盘控制电路比较容易实现!

⑷.稳定性、安全性分析:

前面说过,RAID 0系统致命的缺点就是稳定性差,如果单个硬盘的稳定系数为90%的话,那么有双硬盘组成的RAID 0系统的稳定系数将小于81%!这样无疑将本来就很脆弱的硬盘稳定性雪上加霜!那么“RAID硬盘”的情形又如何呢?

首先,“RAID硬盘”只是一块硬盘,这样比起由多块硬盘组成的RAID 0系统来说,出错率远远降低。但是跟原来的硬盘相比,稳定性还是比原来的硬盘差,因为它是同时由所有的磁头读取。但是反过来想一下,正是由于它是所有的磁头一起进行读写操作,所以在数据出错的情况下不至于影响到硬盘的其它数据,因此安全性还是比较高的。这样一来,“RAID硬盘”可以不牺牲安全性,而降低少许稳定性,同又数倍地提高了磁盘的整体性能,这样还是比较值得的。

无锡数据恢复

下图所示就是单碟双面双磁头的“RAID硬盘”工作原理图:

分析了这么多,就是一句话:在现有硬盘制造业的基础上实现“RAID硬盘”并不难!一旦“RAID硬盘”诞生,那将是成倍地提升硬盘的性能!就拿现在主流的7200转80GB硬盘来说,它有双碟4面共有四个磁头,内部传输率为50MB/S左右。如果将其改造为“RAID硬盘”的话,它就相当于有四块硬盘组成的RAID 0系统,理论内部传输率将达到200MB/S左右,这即使是Serial ATA 150也不能满足它的要求!

常州数据恢复
相关推荐