快速同步高性能日志设备及其同步写操作方法

文档序号:6381665阅读:279来源:国知局
专利名称:快速同步高性能日志设备及其同步写操作方法
技术领域
快速同步高性能日志设备及其同步写操作方法属于计算机存储系统结构领域。
背景技术
当今计算机系统的主要性能瓶颈在于I/O环节。这主要是由于I/O系统性能的提高远远低于CPU和内存性能的提高。根据Moore定律,CPU性能和内存容量每18个月就可翻一番。但是作为外存的主要设备——硬磁盘,由于机械运动的本质特征导致性能的提高非常有限,每年约7%。这样可由Amadl定律得出,如今I/O的性能在系统整体性能中占有举足轻重的地位。不过需要指出的是磁盘存储密度每年提高约100%,这一点甚至高于CPU和内存的提高速度。实际上真正限制磁盘性能的主要因素是延迟,每年只能增长约10%。
为缓和存储层次间的性能差异,最普遍的一种解决方案是将本机的一部分内存划分出来,作为系统缓冲存储器,从而来降低磁盘访问的延迟对系统性能的影响。因此,应用程序对磁盘的写操作实际上被转换化对缓冲存储器的写操作,而由操作系统根据系统运行状态适时地将这些数据写入磁盘。这样可以将多次的磁盘写操作简化成一次操作,从而减少磁盘访问次数,提高整体性能。这种写操作一般被称为异步写。
但是很多情况下这些方法不起作用,尤其是需要同步写(与异步写不同,同步写不使用缓冲存储器,而是直接将数据写入硬盘的相应位置后才算完成操作,因此性能很低,通常是异步写的百分之一或千分之一)操作时。通用文件系统中,写操作占大多数,约57%,同步操作比例占50%到75%,而且写操作中对元数据的访问占67%到78%。从这些数据中可以得出I/O的同步写操作是性能瓶颈的主要原因。之所以如此,主要是由于文件系统为了保证数据的完整性必须通过同步方式来完成对元数据以及重要用户数据的写操作。另外对于数据库系统而言,同步操作几乎决定了其性能。
目前从硬件角度解决这个问题的主要途径是使用NVRAM作为系统内存。系统掉电时NVRAM中的数据不会丢失,而且NVRAM的响应速度接近于内存的速度。但是NVRAM的价格非常昂贵,一般是DRAM价格的4到10倍;同时需要特殊的软件支持。

发明内容
本发明的目的在于提供一种快速同步高性能日志设备及其同步写操作以便在很大程度上提高小量数据同步I/O操作的响应速度,从而在不增加系统多余硬件的条件下改善I/O延迟对系统整体性能的影响。
本发明从降低磁盘寻道延迟这一角度着手,主要使用软件方法与一般PC机通用的廉价SCSI磁盘来解决这一问题。主要思路如下为了提高磁盘同步写的性能需要降低磁盘延迟,我们引入一个专用的日志磁盘(就是一般的小容量磁盘),作为系统的缓存磁盘。而系统中原先的数据磁盘不做任何改动。内存、日志磁盘和数据磁盘形成了一个多层次的存储结构。在操作系统执行同步写操作时,可以将其转换成日志磁盘的同步写操作和异步的缓存写操作。我们通过软件方法将日志磁盘的同步写操作进行专门优化,通过预测磁头的位置而在临近磁头的位置执行写操作命令,这种做法能够基本消除旋转延迟的开销。我们将写入日志磁盘上的数据称为日志。同时针对该日志磁盘,我们可以预先将磁头停留在空闲的磁道上,这样就能够在多数情况下消除寻道延迟的开销。从而通过这种方法,日志磁盘的同步写操作性能与通常的磁盘相比可以提高8-10倍。而且本系统的实现在驱动设备层完成,对于系统用户而言是完全透明的,即用户对于文件系统的访问方式不变。
本系统的特色之处在于能够根据负载的状况在自动寻道和在当前磁道上记录日志数据间做出优化的选择。当系统负载繁忙时,尽量将数据记录在当前磁道上,减少磁头寻道所带来的延迟;而当系统负载相对较少时,尽量将磁头预先放置在空闲磁道上,实现寻道延迟的隐藏。
本发明所选的设备特征在于本发明是一种利用高性能日志磁盘作为磁盘缓存以提高计算机硬盘同步写操作响应速度的三层存储结构,它含有内存磁盘驱动它的输入信号为内存发出的读写操作指令,它的输出信号是读操作、写操作的异步指令,或者是同步的写操作指令。
数据磁盘它接受磁盘驱动器发出的读操作;或异步的写操作,接收异步数据;高性能日志磁盘是一种小容量磁盘构成的缓存盘,它按磁盘驱动器发出的同步写操作指令,接收同步数据,再通过异步写操作把数据写入数据盘中;分布在缓存磁盘上的日志记录由同步写操作中的数据和记录头部构成,记录头部主要负责标识每个数据在数据磁盘上的分布以及该数据操作的时间,从头部开始它的钩秤如下Magic记录起始的标志,用Oxfe作为起始标志;Epoch和Sequence共同确定各个纪录间的时间顺序,通过这两个域在各条记录之间定以一种偏序关系;Last_Checkpoint_Sequence最后一个做检查点的纪录在当前这一批记录中的序号,通过这个标志位确定未被写入硬盘的起始纪录的地址;Position本记录在数据磁盘上相应的位置。
所选的高性能日志磁盘是小型计算机系统接口磁盘(SCSI)。本发明所选方法的特征在于它通过预测磁头的位置在磁头运动正前方的位置执行写操作指令设假定在初始时刻t0,磁头位于位置S0,则在时刻t1,磁头位于位置S1,S1=((t1-t0)modRTRT*SPT+S0)modSPT]]>当C0∶H0≠C1∶H1时,需要将S0转换为在磁道C1∶H1上相应的值S’0,S’0=S0*(SPT’/SPT),其中C0∶H0′为t0时刻磁头所在磁道;C1∶H1′为t1时刻磁头所在磁道;SPT为当前磁道C0∶H0′上的扇区数目;SPT’为t1时刻磁道C1∶H1上的扇区数目;RT是盘片旋转的周期。
在实际应用时,所选计算S1的公式被修正为S1=((t1-t0+Adjust)modRTRT*SPT+S0)modSPT]]>其中Adjust是修正参数,通过测试得到。
所选的方法被优化选择为当系统负载繁忙时,尽量把数据记录在当前磁道上,减少磁头寻道带来的延迟;当系统负载相对较少时,尽量把磁头预先放置在空闲磁道上,实现寻道延迟的隐藏。
当需要等待的时间长于磁头移动一个磁道所需的时间时,即磁头移动的距离大于一个磁道上的记录长度时,把磁头移动到下一个磁道上,磁头等待时间WT=0,if(S1-S0’≥Record_Length)否则,WT=||S1-S0||SPT*RT,if(S1-S0,<Record_Length)]]>
其中Record_Length为纪录的长度。
该系统的实现成本是相对较低的(与使用专用硬件,如NVRAM、磁盘阵列的系统相比较)——只需增加一个小容量的普通磁盘,即可以取得高性能的可靠的存储效果。根据我们的分析,对于同步写较为频繁的应用其总体性能至少可以提高30%,对于数据库应用则会更高。


附图1高性能日志设备的三层结构图附图2日至缓存磁盘上的记录的组织附图3高性能日志设备的同步写操作方法的程序流程框图附图4日志盘性能测试的结果比较附图5磁盘缓存在同步操作中的作用具体实施方式
本发明是在传统的内存、磁盘的两层存储结构之间增加一层缓存磁盘,形成内存、缓存磁盘、数据磁盘的三层存储结构。结构如图1所示。通常内存与数据磁盘的数据传输可以分成写操作和读操作。其中写操作一般分为同步操作和异步操作。对于异步操作,由于进程不需要等待存储系统的执行结果,从而不会对系统的性能造成重要影响;而对于同步操作;进程需要等待数据磁盘执行完毕,由于磁盘性能与内存性能的巨大差异,同步操作会在很大程度上影响系统的性能。
快速同步高性能日志设备结构中的缓存磁盘对同步写操作进行了专门的优化,与数据磁盘相比速度快8-10倍。该设备的主要软件功能在设备驱动中实现。在其三层存储结构当中,设备驱动负责内存跟磁盘之间的数据交互。当设备驱动接收到读操作和异步的写操作任务时,不需要作任何处理,直接将请求发送至数据磁盘;而当接收到同步的写操作任务时,将请求的数据以同步的方式直接写入到高性能的缓存磁盘中,然后通知文件系统或操作系统同步写操作已经完成,同时将该数据在内存中的副本标志为异步写任务。这样就将同步任务转换成为异步的任务,而异步操作不会影响系统的性能。这种方法就可以将同步写操作的性能提高8倍左右。
本发明实施所示用的缓存磁盘是SCSI磁盘,型号是IBM DDYS-T36950,数据磁盘的型号是IBM DDYS-T36950,设备驱动由软件实现。本发明所述的快速同步高性能日志设备的三层结构图见图1,同步数据的操作流程见图3。
系统中的数据操作流程如下读操作需要从数据盘上读取数据时,不经过日志磁盘,数据直接从数据盘读出复制到内存缓冲区中。其优点是本系统不妨碍文件系统对读操作所做的任何优化。由于本系统能够减少数据盘I/O写操作的整体响应时间,所以读操作的性能应该也有所提高。
写操作写操作分成两种情况同步操作和异步操作。对于异步数据,同样不经过日志缓存盘,直接从内存缓冲池到达数据盘中。
而同步写的流程比较复杂,具体介绍如下1)数据首先要以同步写方式写到缓存盘上,这部分的实现见“磁头预测“部分;2)向进程返回数据写完成信号。
3)此时数据仍就保留在内存中,只是转换成为异步数据。由操作系统的后台进程通过异步写操作将数据写入数据盘中,不影响应用程序的性能。
4)如果在3)完成以前,计算机系统发生故障导致这部分应该同步写入数据盘的数据丢失,则系统重起后进入磁盘恢复阶段。具体步骤见“系统崩溃后日志磁盘上有效数据的恢复”部分。
磁头预测在缓存盘上进行日志操作时,必须能够在任意时刻,知道当前磁头的物理地址(即CHS地址),以便将数据写在磁头的正前方。这即是要假定在初始时刻t0,磁头位于位置s0,那么我们需要能够预测出t1时刻磁头的位置s1=f(s0,t1-t0),其中t1>t0,且期间磁头没有发生寻道操作。
预测磁头位置是根据扇区的物理位置进行的。磁盘的物理地址C:H:S中,需要预测的仅仅是扇区(Sector)位置。假定初始时刻T0磁头位于C0:H0:S0扇区位置,那么预测T1时刻磁头所在扇区位置C1:H1:S1的公式如下S1=((T1-T0)modRTRT*SPT+S0)modSPT···················(1)]]>其中SPT(Sectors per Track)表示当前磁道上的扇区数目,RT(Rotation Time)是盘片旋转的周期,S0和S1均为同一磁道上扇区的物理地址,T1>T0。因为只有盘片在不断旋转,而磁柱和磁头是可以通过命令来控制的。所以磁柱和磁道的位置不需预测。需要注意的是当C0:H0≠C1:H1时,需要将S0转换为在磁道C1:H1上相应的值。这一点很好实现,因为盘片上所有的磁道都是同心圆,所以各个扇区之间的相对位置固定不变。具体实现公式如下
S0′=S0*(SPT′/SPT)…………………………………………………………………(2)其中S0′为S0在磁道C1:H1上对应的物理扇区位置,SPT为磁道C0:H0上的扇区数目,而SPT′为磁道C1:H1上扇区的数目。
然而实际应用时,公式(1)还有缺陷。因为从处理器向驱动设备发出命令到该命令在磁盘驱动器上被执行是需要一段时间;另外盘片的旋转本身是有误差的,必须保证误差不能影响公式的准确度。将公式(1)修正为公式(3)S1=((T1-T0+Adjust)modRTRT*SPT+S0)modSPT··············(3)]]>其中Adjust是修正参数,需要通过测试得出。实验中得到的值为1000ms。
本公式成立的一个重要条件就是磁盘旋转是否稳定。实际上,当前所使用的温彻斯特硬盘在室温化境下稳定性非常高,其旋转周期的误差小于1%。所以能够满足算法要求。
另外一点需要指出的是,本算法是基于物理地址(CHS地址)进行预测的。而实际硬盘提供给文件系统的接口使用的是逻辑地址(例如LBA地址)。逻辑地址与物理地址间的相互转换是隐藏在硬盘内部的,但是通过软件的方法将这些参数提取出来。并且还需要指出的一点是预测算法需要知道磁盘旋转周期的精确数值。而一般硬盘厂家提供的手册上给出的磁盘旋转周期都不准确,所以也需要通过软件的方法将这个数值测试出来。具体的实现请参考附录一。
系统崩溃后日志磁盘上有效数据的恢复首先介绍日志记录在缓存盘上的分布、日志磁盘的格式化、针对不同负载环境的优化、最后涉及系统崩溃后日志磁盘上有效数据的恢复步骤。
日志记录由同步写操作中的数据和记录头部构成。记录头部主要负责标识每个数据在数据磁盘上的分布以及该数据操作的时间,其主要结构如下表表1日志记录的主要结构

下面讲述对其中的主要标志信息的含义。Magic是记录起始的标志,本系统中采用0xfe作为起始标志。如果某个扇区的第一个字节与0xfe相等,则认为这个扇区就是一条记录的起始位置。Epoch和sequence共同确定各个记录间的时间顺序,通过这两个域在各条记录间定义了一种偏序关系。当系统崩溃后,就按照这种偏序关系在缓存盘上查找未被写入数据盘的记录。Last_checkpoint_sequence是最后一个做检查点的记录在当前这一批日志中的序号。通过这个标志位确定未被写入硬盘的起始记录的地址。如果日志的数据中,有某个扇区的第一个字节与magic相等,则必须将之替换为其他的任意数据(本系统中替换为0)。同时必须在记录头部加以标识。Position是本记录在数据磁盘上相应的位置;Data是本记录所对应的同步写操作的数据内容。
同步写操作的数据长度一般很小在几K左右,而日志头部的长度不到1K。通常由文件系统的最小操作单位决定,Linux的Ext3中通常为4K到16K。而每一磁道所能容纳的数据长度为几百K,现代的磁盘系统一个磁道的容量至少在100K以上。
日志记录在缓存磁盘上的位置由预测算法确定,预测算法确定出的位置基本就是磁头的当前位置。也就是说在同步写操作执行的时刻,相应的日志记录会写在当时磁头所在的位置上。图2所示为日志记录在磁盘上的分布式意图。日志记录在磁盘上是稀疏分布的。
日志磁盘的格式化需要通过附录[1]中的算法将该磁盘的参数提取出来,以便系统使用时能够取得该磁盘的物理信息。其次只要在其SuperBlock中做好该磁盘为缓存磁盘的标识即可。
如果在每个磁道上只做一次日志记录,本磁道的记录完成后立刻将磁头移动到下一个磁道上,对于这种做法在负载不密集的情况下可以保证每次记录的等待时间不超过该磁盘寻一道所需时间。但是如果负载比较密集,则需要附加移动磁头所需时间。磁头移动一道所需要的时间实际上比较大。另外,目前磁盘的密度相当大,单个磁道的总容量也很大,约为几百K左右。而一般一条日志的长度约为几K到几十K不等,因此如果每个磁道仅记录一条日志,浪费的空间很大。在这种情况下可以在同一个磁道上记录多个日志。这样对于一个已经有了记录数据的磁道而言,再次发送记录数据必须保证不会覆盖原有的有效数据,所以可能需要等待一段时间。如果需要等待的时间小于磁头移动一个磁道所需的时间,那么就在同一个磁道上记录日志;如果需要等待的时间长于磁头移动一个磁道所需的时间,那么就将磁头移动到下一个磁道上。在图2中的结构中,优化策略如下 其中Record_Length为纪录的长度,而WT为磁头的等待时间。
理论的分析可以证明在一个磁道上记录多条数据是可行的。但在实际的实现中,由于记录多条数据需要附加开销来保证不覆盖有效数据,因此每个磁道上记录的数据不宜过多。
系统崩溃后,如果缓存盘中留有未能转入到数据盘的数据则需要从中将这些数据读出,然后转入到数据盘中。虽然内存中的数据丢失了,但是可以从缓存盘上恢复过来,这一点充分保证了数据的持久性。本过程不妨碍文件系统一致性检查。但是这个过程需要早于文件系统一致性的检查工作完成。
恢复数据时,需要搜索整个日志盘的所有空间将有效数据提取出来。寻找最后一个记录的过程需要将整个磁道上的内容读入内存,确定其中哪些数据是日志,然后在所有日志中找到日期最近的那个。假定日志空间为10000个磁道,读取每个磁道时间约为(252k)/(40M/s)=6.3ms。由于整个缓冲磁盘可以看作是循环的日志空间,所以可以使用折半查找的方法确定最小的那个日志记录。这样折半查找的复杂度为log210000=13.3,也就是确定最小的日志记录所需的时间约为100ms。即便是再附加一些其他的处理开销整个时间应该不会超过1分钟。接下来就是要把缓存数据转入数据盘中了。作者实现的原型系统中,未写入到数据盘中的数据不会超过500个,这是由检查点机制决定的。所以整个恢复过程所需时间不超过5分钟。
我们对日志盘的写操作以及利用日志盘提高I/O系统的同步操作进行了性能测试。测试环境如下CPU为Pentium III 700,日志磁盘与数据磁盘均为IBM UltraStar DDYS-T36950SCSI,操作系统为Linux(Kernel 2.4.5)。
如下表所示,估测磁头位置的算法准确度还是比较高的。表中所示理想情况下的数值是根据硬盘所提供的参数计算出来的。从表中可以看出,利用本算法的I/O带宽接近理想值的一半。这主要是由于实际系统中的某些命令开销以及为了降低误差对算法的影响而造成的。
表2磁头预测算法的性能

测试结果如图3所示。图中纵轴单位为秒,横轴单位为KB。测试是在负载密集情况下得到的。所示分别为每道上日志一条、两条和三条记录的性能结果。由图中可以看出同一磁道上日志的记录数目越多,其性能就越高。当然,日志记录数目增加到一定程度后,负面影响会逐渐增大。所以实际实现的过程中应该选择一个最佳的记录个数保证性能达到最佳程度。而这个数目的选择与每条记录的长度以及磁道的长度均有关系。在我们的实际测试过程中,认为每道记录三条比较合适。从图3中可以看出,日志三条记录同日志一条记录相比性能提高约为20%左右。
本节测试了利用高性能日志磁盘作为磁盘缓存提高I/O同步操作情况下的性能结果,如图4所示。使用磁盘缓存与不使用磁盘缓存的情况下I/O子系统同步操作的性能差距非常大,性能提高约为4倍左右。图中纵轴单位为秒;横轴单位为KB。
随着信息社会的发展,越来越多的信息被数据化,尤其是伴随着Internet的发展,数据呈爆炸式增长。因而在未来几年内,存储技术将成为令人瞩目的一个市场。据IDC预测,1999年,世界范围的存储服务市场为210亿美元;而到2003年,更将达到400亿美元以上。在今后的几年内,存储服务市场将进入飞速发展期。基于Internet的应用比如电子商务、电子邮件和客户关系管理(CRM)等将成为存储服务的主要市场,因为他们都需要对大量数据的快速访问。
到2000年年底,国内已有100家大型企业、10,000家中型企业、100万家小型企业完成Interment上网工程。赛迪顾问的调查显示有51%的大型企业、12%的中型企业、1%的小型企业拥有存储设备,同时有83%的大型企业、56%的中型企业、11%的小型企业有扩充和订购存储产品的意向。
这就意味着国内的市场潜力是巨大的。但是,目前国内企业涉足此方面的研究开发还非常少见。我们在市场上多看到的是IBM、DELL、3COM的产品。同时对于大量的中小型企业而言,在实现信息化的同时,降低成本也是重要的考虑因素,因此我们所研究的低成本的基于日志磁盘的存储系统具有广阔的应用前景。
附录1田清源,靳超,温冬婵。“磁盘物理参数提取算法的设计”,全国理论计算2003年会,收录于《计算机科学》八月增刊。
权利要求
1.快速同步高性能日志设备含有内存和硬磁盘,其特征在于它是一种三层存储结构,它含有计算机内存;磁盘驱动模块它的输入信号为内存发出的读写操作指令,它的输出信号是读操作、写操作的异步指令,或者是同步的写操作指令;数据磁盘它接收磁盘驱动器发出的读操作,异步写操作及异步数据;高性能日志磁盘是一种小容量磁盘构成的缓存盘,它接收磁盘驱动器发出的同步写操作指令与同步数据,写入自身。分布在该磁盘上的日志记录由同步写操作中的数据和记录头部构成,记录的构成如下Magic记录起始的标志,用0xfe作为起始标志;Epoch和Sequence共同确定各个纪录间的时间顺序;Last_Checkpoint_Sequence最后一个做检查点的纪录在当前这一批记录中的序号;Position本记录在数据磁盘上相应的位置。
2.快速高性能日志设备的同步写操作方法,其特征在于通过预测磁头的位置,从而在磁头运动正前方的位置执行写操作指令设假定在初始时刻t0,磁头位于位置S0,则在时刻t1,磁头位于位置S1,S1=((t1-t0)modRTRT*SPT+S0)modSPT]]>当C0:H0≠C1:H1时,需要将S0转换为在磁道C1:H1上相应的值S’0,S’0=S0*(SPT’/SPT),其中C0:H0′为t0时刻磁头所在磁道;C1:H1′为t1时刻磁头所在磁道;SPT为当前磁道C0:H0′上的扇区数目;SPT’为t1时刻磁道C1:H1上的扇区数目;RT是盘片旋转的周期。
3.根据权利要求2所述的快速同步高性能日志设备的同步写操作方法,其特征在于在实际应用时,所选计算S1的公式被修正为S1=((t1-t0+Adjust)modRTRT*SPT+S0)modSPT]]>其中Adjust是修正参数,通过测试得到。
4.根据权利要求2所述的快速同步高性能日志设备的同步写操作方法,其特征在于所述的方法被优化选择为当系统负载繁忙时,尽量把数据记录在当前次头上,减少磁头寻道带来的延迟;当系统负载相对较少时,尽量把磁头预先放置在空闲磁道上,实现寻道延迟的隐藏。
5.根据权利要求2所述的快速同高性能日志设备的同步写操作方法,其特征还在于当需要等待的时间长于磁头移动一个磁道所需的时间时,即磁头移动的距离大于一个磁道上的记录长度时,把磁头移动到下一个磁道上,磁头等待时间WT=0,if(S1-S0’≥Record_Length)否则,WT=||S1-S0||SPT*RT]]>if(S1-S0’<Record_Length)其中Record_Length为纪录的长度。
6.根据权利要求1所述的快速同步高性能日志设备,其特征还在于所选的高性能日志磁盘是小型计算机系统接口磁盘,即SCSI磁盘。
全文摘要
快速同步高性能日志设备及其同步写操作方法属于计算机存储系统结构领域,其特征在于它是一种利用小容量的高性能日志磁盘作为磁盘缓存的提高计算机硬盘同步写操作的三层存储结构—内存、日志磁盘和数据磁盘。在操作系统执行同步写操作时,它可将其转换成日志磁盘的同步写操作和异步的系统缓存写操作;相应地提高了同步写操作,其特征是通过预测磁头的位置而在临近磁头运动的正前方执行写操作指令,它基本消除了旋转延迟的开销;它预先把磁头停留在空闲磁道上,在多数情况下也消除了寻道延迟的开销。它用SCSI,即小型计算机系统接口作日志磁盘,节约了成本,改善了同步写操作的性能。
文档编号G06F12/08GK1564138SQ20041000346
公开日2005年1月12日 申请日期2004年3月26日 优先权日2004年3月26日
发明者郑纬民, 张悠慧, 靳超, 周枫 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1