首页> 中国专利> 基于移动存储的计算机系统磁盘同步写性能提高方法

基于移动存储的计算机系统磁盘同步写性能提高方法

摘要

基于移动存储的计算机系统磁盘同步写性能提高方法属于计算机存储系统结构技术领域。它是一种通过系统调用透明包裹机制,将常见的计算机移动存储设备(如U盘、移动硬盘等)作为计算机系统的同步写缓存以提高数据处理效率的磁盘同步写性能提高方法,简称为MSYNC。它含有:一台计算机,一个移动存储设备。两者通过快速的高带宽接口(包括usb接口、IEEE-1394接口)相连,计算机将此移动设备映射为一个本地硬盘。然后通过系统调用透明包裹技术对应用程序的文件写操作进行包裹,从而将其同步磁盘写操作转换为速度更快的对移动存储的同步写,在不降低数据可靠性的前提下提高计算机的磁盘同步写性能。

著录项

  • 公开/公告号CN1648878A

    专利类型发明专利

  • 公开/公告日2005-08-03

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN200510011125.5

  • 发明设计人 张悠慧;

    申请日2005-01-07

  • 分类号G06F12/00;G06F13/10;

  • 代理机构

  • 代理人

  • 地址 100084 北京市北京100084-82信箱

  • 入库时间 2023-12-17 16:21:02

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2007-03-14

    授权

    授权

  • 2005-09-28

    实质审查的生效

    实质审查的生效

  • 2005-08-03

    公开

    公开

说明书

技术领域

基于移动存储的计算机系统磁盘同步写性能提高方法(简称MSYNC)属于计算机存储系统结构领域。

背景技术

当今计算机系统的主要性能瓶颈在于I/O环节。这主要是由于I/O系统性能的提高远远低于CPU和内存性能的提高。根据Moore定律,CPU性能和内存容量每18个月就可翻一番。但是作为外存的主要设备——硬磁盘,由于机械运动的本质特征导致性能的提高非常有限,每年约7%。这样可由Amadl定律得出,如今I/O在系统整体性能中占有举足轻重的地位。实际上真正限制磁盘性能的主要因素是磁盘访问延迟,每年只能增长约10%(硬盘的访问时间主要由数据定位,寻道与旋转延迟、数据读写组成,其中寻道与旋转指的是磁头移动到硬盘的相应位置以便进行数据访问。因为这两者是机械操作,其性能与数据定位与访问操作相差两个数量级以上,这就阻碍了磁盘访问性能的提高。具体的磁盘访问延迟分析见附录1)。

从软件角度讲,可以采用多种优化技术来降低I/O访问对系统性能的影响,比如缓存技术。通过各种缓存调度算法,缓存技术可以减少对磁盘读、写操作的次数——应用程序对磁盘的写操作实际上被转换化对缓存的写操作,而由操作系统根据系统运行状态适时地将这些数据写入磁盘。这样可以将多次的磁盘写操作简化成一次操作,从而减少磁盘访问次数,提高整体性能。这种写操作一般被称为异步写。

但是需要进行同步写(与异步写不同,同步写不使用缓存,而是直接将数据写入硬盘的相应位置后才算完成操作,因此性能很低,通常是异步写的百分之一或千分之一)时这些方法不起作用。通用文件系统中,写操作占大多数,约57%,同步操作比例占50%到75%,而且写操作中对元数据的访问占67%到78%。从这些数据中可以得出I/O的同步写操作是性能瓶颈的主要原因。之所以如此,主要是由于文件系统为了保证数据的完整性必须通过同步方式来完成对元数据以及重要用户数据的写操作。另外对于数据库系统而言,同步操作对于事务处理的性能具有关键性的影响。

从硬件角度来讲,采用非易失的NVRAM取代传统的内存可以在不降低系统可靠性的前提下提高计算机存储系统的性能,但这种机制需要特殊的硬件(包括主板等)。因此对于目前广为使用的廉价的PC机,这一方法成本太高,难以实用。

因此关键的问题在于如何利用通用且廉价的硬件,较为方便地提高计算机系统的磁盘同步写入性能,同时应该具有较高的可移植性(即实现原理不依赖于某个或某类操作系统)。

目前,移动存储设备(如移动硬盘,闪存盘)的使用越来越广泛,几乎已经成为PC机的标准配置;同时越来越多的数码设备(如mp3播放器、数码相机等)使用基于Flash Memory(闪存)的存储器来与PC机交换数据。Flash Memory是近年来发展迅速的内存,属于非挥发性内存(Non-volatile即断电数据也能保存),它具有电擦除的特点,还具有低功耗、密度高、体积小、可靠性高、可擦除、可重写等优点(详见附录2)。这样,往移动存储设备里同步写入数据的操作的性能可以远高于向PC机硬盘的同步写入,主要原因是前者无需磁盘的寻道与旋转延迟时间。同时,支持高带宽外设的技术的发展(包括USB协议、IEEE-1394等)使得此类移动存储与主机间的数据传输越来越快速,使得前者的性能优势得以体现。

基于上述分析,本发明提出的利用高速的移动存储设备作为某些I/O密集型应用的可靠的磁盘缓存。

发明内容

本发明在于提供一种以移动存储作为计算机磁盘缓存的高性能同步写方法,以便充分利用目前计算机系统高带宽外设的性能(USB,IEEE-1394等接口),以提高磁盘同步写速度,解决当前计算机存储结构层次中存在的问题。MSYNC为I/O密集型应用程序——如Web Server和数据库事务处理服务,提供了一个高性能的存储方法。

MSYNC技术的核心内容在于——利用连接于计算机上的高速移动存储设备(以USB、IEEE-1394等接口相连)作为主机上某些应用(往往需要执行较多的同步磁盘写)的磁盘缓存,使得需要同步写入的数据以较高的速率可靠地存于移动设备上,而在主机上只是执行快速的异步写,以此在不降低数据可靠性的前提下提高这些应用的性能。具体的实现关键在于本发明透明地截获了操作系统的同步写入文件调用,使其定向到高速的移动存储设备上。

其主要的创新点如下:

1.利用移动存储设备作为磁盘缓存,其与计算机间以高带宽外设接口相连(包括usb接口、IEEE-1394接口)。

2.采用系统调用透明包裹技术使得该方法的实现对于操作系统与目标应用程序完全透明,即应用程序无须作任何修改。

3.高效的移动设备写入数据的日志式管理,使得较小容量的移动存储设备能够支持大规模的IO密集型应用,包括大型数据库应用。

本发明所述的系统,其特征在于:

它是通过计算机的高带宽外设接口(如USB、IEEE-1394等),利用移动存储设备作为计算机磁盘缓存以提高数据处理效率的系统,它含有:

有高带宽外设接口的计算机:即欲提高磁盘同步写性能的计算机,运行目标应用程序。高带宽外设接口包括USB接口(1.1与2.0标准),IEEE-1394接口等。

移动存储设备:如U盘、移动硬盘等,作为计算机的磁盘同步写缓存。当前有许多高速移动存储设备,从存储介质上区分包括移动硬盘与基于Flash Memory的多种存储器,后者包括闪存盘(优盘),CompactFlash卡,SmartMedia卡,Memory Stick,MultiMedia Card卡等。其中U盘已经逐步取代软盘称为PC机的标准配置。

两者以高带宽外设接口相连。目前,支持高带宽外设接口的存储设备已被大多数主流的操作系统支持,包括Windows系列,Linux,MAC OS,Solaris等。一般而言,将这些设备连接到计算机上后,操作系统利用其驱动程序将这些设备作为单独的存储分区——如在Windows 2000下,被作为一个新的磁盘;而在Linux下,则可以作为一个独立的磁盘映射到某一目录,而后对其的操作与对本机的硬盘操作没有区别。因此,对移动存储设备的安装与使用已由操作系统解决,这也说明MSYNC技术具有较大的可移植性与易用性。

本发明所述方法的特征在于:

它利用移动存储设备作为计算机磁盘缓存,有高带宽外设接口的计算机将此设备映射为本地磁盘。然后通过对于系统调用进行包裹(实质就是在用户用到的系统调用与实际实现的功能之间插入代码,以便截获用户程序的调用参数等信息),这样可以直接截获应用程序的相关磁盘写入调用,然后将其中的磁盘同步写转换为异步写,而将需同步写入的数据以可靠方式写入移动存储。因为后者的写入速度比前者快很多,所以有较高的性能提高余地。

它依次含有如下步骤:

第1步:计算机系统把连接到自己的高带宽外部移动存储设备映射为一个系统磁盘,将其作为系统的写缓存;

第2步:对步骤1所得到的用移动存储设备作为写缓存的计算机系统进行初始化:

使用预置的包裹程序将目标程序中的文件操作进行包裹,即在目标程序执行文件中插入代码,以重写所要包裹的文件系统调用在执行文件中的入口;

第3步:运行目标程序;

第4步:当上述系统截获到目标应用程序的文件操作时进行如下步骤:

第4.1步:是否为写入文件操作?若是,则上述步骤2中的插入代码将数据以异步写的形式写入移动存储;同时以异步写方式将数据写入主机硬盘;

第4.2步:是否为文件数据刷入磁盘操作(即同步写操作)?若是,则上述步骤2中的插入代码将移动存储上的写入数据刷入存储介质。写入移动设备的数据以日志式数据管理策略来进行数据管理,它依次含有如下步骤:

第4.2.1步:在步骤4截获到目标应用程序的文件写入数据后,将数据写入到移动存储上预设的备份文件中,每一次的写入格式为:数据大小,数据在计算机磁盘文件中的起始位置,数据体;

第4.2.2步:如果写入数据后,备份文件大小超过某个预定的阈值时,上述系统就迫使主机硬盘上的对应文件执行同步刷入操作,成功后清空该备份文件;

第4.3步:若为其他文件操作,则直接交由被包裹的文件操作处理;

第5步:转4,继续。

所述的移动设备写入数据的日志式管理步骤如下:

1.MSYNC初始化:在移动存储设备上创建一个或多个备份文件,每个用于存储相关应用的同步写入数据。

2.当上述的步骤4截获到应用程序的文件写入数据后,将数据写入备份文件,每一次的写入格式为:数据大小,数据在计算机磁盘文件中的起始位置,数据体。

3.如果写入数据后备份文件大小超过某个预定的阈值时,MSYNC就迫使主机硬盘上的对应文件执行同步刷入操作,成功后清空该备份文件。

这么做的主要理由在于:一般而言,移动存储设备的容量远小于主机磁盘,而应用程序用到的需要同步写入的文件大小可能大于移动存储的容量,因此设计了一个日志式数据管理策略来解决这一矛盾。这种机制实际上与操作系统的磁盘缓存是一样的——一旦缓存数据刷入硬盘,这些缓存可以被释放而重复使用。

本发明在Windows系统进行了实现,其磁盘同步写性能比不使用该发明的写入性能提高了1.5-2.5倍。而对于MySQL数据库,针对其事务操作(即数据是同步写入磁盘的)的性能提高了1.5-1.9倍。

附图说明:

图1,本发明所述的系统的结构图,即MSYNC系统模型。

图2,本发明所述系统的流程框图。

图3,Win32执行文件格式。

图4,函数包裹后的执行文件格式。

具体实施方式:

本发明由一台带有高带宽外设接口(包括USB、IEEE-1394)的计算机、移动存储设备组成。利用移动存储设备作为计算机磁盘缓存,有高带宽外设接口的计算机将此设备映射为本地磁盘。然后通过对于系统调用进行透明包裹,这样可以直接截获应用程序的相关磁盘写入调用,将其中的磁盘同步写转换为异步写,而将需同步写入的数据以可靠方式写入移动存储。因为后者的写入速度比前者快很多,所以有较高的性能提高余地。

MSYNC是以一种对用户而言完全透明的形式提供服务的。只要使用者利用MSYNC提供的系统调用透明包裹技术(在形式上是一个软件程序)对欲提高写性能的应用程序进行一次处理(详见“系统调用透明包裹技术“一节),并指定所要使用的移动存储设备在计算机上的映射磁盘或目录就可以了。这样就能够保证用户的应用程序不加任何的改动。

●高速移动存储设备的安装与使用

目前支持高带宽接口的存储设备已被大多数主流的操作系统支持,包括Windows系列,Linux,MAC OS,Solaris等。一般而言,将这些设备连接到计算机上后,操作系统利用其驱动程序将这些设备作为单独的存储分区——如在Windows 2000下,被作为一个新的磁盘;而在Linux下,则可以作为一个独立的磁盘映射到某一目录,而后对其的操作与对本机的硬盘操作没有区别。因此,对移动存储设备的安装与使用已由操作系统解决,这也说明MSYNC技术具有较大的可移植性与易用性。

●系统调用透明包裹技术

系统调用包裹技术的实质就是在用户用到的系统调用与实际实现的功能之间插入代码,以便截获用户程序的调用参数等信息。

一般而言,这种技术是通过函数换名或重写函数所在的库来实现的;但MSYNC采用了透明的代码插入技术,有两种方式:

一是在应用程序的执行文件中插入代码,通过重写所要包裹的系统调用在文件中的入口来实现。这样一旦应用程序使用此调用,就会先进入MSYNC插入的代码,由后者进行适当的处理后再调用真正的系统函数或直接返回。

二是将应用程序装载入内存后再进行函数包裹,直接在内存中改写相关函数的影像,这样可以不改变执行文件的大小,而效果是一样的。

这种技术能在用户无需修改源代码,无需重新编译连接,及不替换任何动态连接库的前提下实现所需的功能。目前在我们的参考实现中使用的是第一种方式。

●Windows系统下的参考实现

MSYNC已经在Windows 2000/XP系统上完成了一个实现,其具体的系统组成如下:

Windows 2000 Professional(sp4);

USB 2.0移动硬盘;

Windows版本的MSYNC程序,用于系统调用的透明包裹;

用于性能测试的目标应用程序,包括MySQL数据库应用与专门编写的硬盘同步写入程序。

1)系统调用的透明包裹

图3显示了Windows下执行文件的组成,包括文件头,PE头,正文段包括程序代码,数据段包括初始化数据、所用到的动态连接库与系统调用的输入链表,输出(Exported)函数表与调试符号。

为修改Windows执行代码,MSYNC在调试符号与输出函数表之间创建了一个新的段(detours section)——含有原先的PE头的拷贝、一个新的函数输入表、以及MSYNC插入的代码,同时修改了原先的PE头使之指向新的输入表。如图4。

插入新的输入表有两个目的:首先它保留了原先的输入表以便在需要时将修改过的执行文件改回去。其次,新的输入表可以包括新的动态连接库,用以完成所需的额外功能。这样当目标应用程序调用文件写操作时,实际上查询的是MSYNC插入的新的函数输入表,从而调用了MSYNC的插入代码,后者对原有调用函数进行了包括。

2)插入的代码说明

MSYNC在Windows下包裹了四个系统调用——CreateFile,CloseHandle,WriteFile,FlushFileBuffer,同时实现了相关的插入代码。总体操作流程如下:

Step1:MSYNC初始化。包括初始化备份文件列表,及取得要备份的硬盘文件的名称(这个需要人工指定)。

Step2:截获相关系统调用,进行如下判断——

如果是CreateFile操作,则先调用原始的createFile创建文件。后进入插入代码,判断是否为要备份的文件,若是则在移动存储设备上创建备份文件,并将此信息插入备份文件列表。返回。

如果是CloseHandle操作,则判断关闭的文件是否已经备份?若是则将此关闭文件内容刷入本机硬盘,成功后关闭移动存储上的备份文件,并删除之。调用原始的CloseHandle并返回。

如果是WriteFile,则首先调用原始的WritFile。然后判断是否是写入已备份的文件?若是,则将写入的数据以异步方式(WriteFIle)写入备份文件。返回。

如果是FlushFileBuffer(Windows下的同步刷入函数),则首先判断是否是刷入备份文件?若是则针对移动存储上的备份文件调用原始的FlushFileBuffer,直接返回。

包裹后的函数如下:

  New_CreateFile(LPCSTR a0.   DWORD a1,   DWORD a2,   LPSECURITY_ATTRIBUTES a3.   DWORD a4,   DWORD a5,   HANDLE a6)  {   HANDLE rv=0;   _try{  rv=Real_CreateFile(a0,a1,a2,a3,a4,a5,a6);//调用真正的CreateFile  if(rv !=INVALID_HANDLE_VALUE)//若操作成功,   DuplicateFile(rv,(LPCSTR)szName,0,0,0,0,0,0);//调用MSYNC插入的操作   }_finally{   };   return rv;  }  New_CloseHandle(HANDLE a0)  {  BOOL rv=0;   _try{  CloseDuplicateFile(a0);  rv=Real CloseHandle(a0);   }_finally{   };   return rv;   }  New_FlushFileBuffers(HANDLE a0)  {<!-- SIPO <DP n="7"> --><dp n="d7"/>   BOOL rv=1;   _try{  if(!FlushDuplicateFileBuffers(a0))   rv=Real_FlushFileBuffers(a0);   }_finally{   };   return rv;}New_WriteFile(HANDLE a0,   LPCVOID a1,   DWORD a2,   LPDWORD a3,   LPOVERLAPPED a4) {  BOOL rv=0;  _try{   rv=Real_WriteFile(a0,a1,a2,a3,a4);   if(rv)  WriteDuplicateFile(a0,a1,a2,a3,a4,a4 !=NULL,rv);  }_finally{  };  return rv;  }

3)性能评测

针对Windows 2000下的参考实现,进行了MSYNC的性能测试。具体的计算机配置如下:

Windows 2000 Professional(sp4);

CPU:PIII 800Mhz

内存:128内存

USB驱动:微软的USB Mass Storage Device,5.0.2195.1

主机硬盘:IBM-DJSA-220

USB 2.0移动硬盘;

具体的测试对象应用程序分为两类:专门编写的磁盘同步写文件程序与MySQL数据库。对于每种测试,比较了其直接写入本机硬盘与使用MSYNC技术后的性能差异。

测试1

本测试采用了自己编写的磁盘同步写程序,每次往硬盘上同步写入1024次不同大小的数据,就启用MSYNC与否进行完成时间的比较,如下:

 4KB*1024 2KB*1024 1KB*1024 512B*1024未启用MSYNC(单位秒) 39 37 37 40启用MSYNC(单位秒) 25 18 16 16性能比 1.56 2.05 2.31 2.5

测试2

本测试采用了Windwos下的MySQL数据库,往一个表中连续插入1024次不同大小的数据(采用事务模式,即数据是同步写入磁盘的)。就启用MSYNC与否进行完成时间的比较,如下:

 1KB*1024 512B*1024 64B*1024未启用MSYNC(单位秒) 155 143 110启用MSYNC(单位秒) 83 75 72性能比 1.87 1.91 1.53

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号