一种加速磁盘随机输入输出(io)读写的方法

文档序号:8472729阅读:400来源:国知局
一种加速磁盘随机输入输出(io)读写的方法
【技术领域】
[0001]本发明涉及计算机技术领域,尤其是涉及一种加速磁盘随机输入输出(?ο)读写的方法。
【背景技术】
[0002]数据存储相关领域,特别是输入输出(1)加速技术,由于机械磁盘通过盘片存储数据,不可避免需要进行寻道,寻址等操作,以定位存储位置,造成了 1读写存在一定的延迟,正是由于此特性,导致机械磁盘的1PS (单位时间内的1读写次数)在随机的情况下,异常的低效。
[0003]在磁盘加速方面,通常是通过SSD作为缓存,先将数据缓存至SSD,以减少对机械磁盘进行实时的1读写请求,通过在中间加上cache层,提高单位时间内1的读写次数。由于SSD技术存在硬件价格昂贵,存储颗粒存在读写次数限制,在实际的生产环境下,以现有的技术,很难做到大规模的普及。
[0004]而其他的加速方式包括通过算法,在1调度层尽可能延缓1写入至磁盘,等待,试图合并大10,以减少磁盘写入次数。这种方式增加了数据丢失的风险,如果文件系统采用缓存回写,即数据写入缓存,应用层就默认写入成功的方式,当掉电的时候,由于数据未及时回写至磁盘,造成数据丢失。在企业应用中,往往是灾难事件,造成数据的不可恢复。

【发明内容】

[0005]本发明的目的就是为了解决以上数据存储低效率的问题,提供的一种加速磁盘随机输入输出(1)读写的方法。
[0006]一种加速磁盘随机输入输出(1)读写的方法,其特征在于包括以下步骤:
[0007]101、计算机操作系统应用层进行数据读写操作,通过内陷进入内核态,虚拟文件系统层将数据封装成ΒΙ0,即虚拟文件系统层与通用块层交互的数据结构,并提交至通用块层子系统;
[0008]102、在通用块层子系统的DEVICE-MAPPER驱动层,B1将切割成固定块大小,传递给BINL0GDEV模块层,当B1进入BINL0GDEV模块层,将被检查是否满足缓存条件,即B1起始位置是否对齐,长度是否为块长度,如果满足条件,执行步骤103 ;如果不满足条件,执行步骤106 ;
[0009]103、BINL0GDEV模块先搜索内存,以确定B1是否被缓存,如果B1被BINL0GDEV模块缓存,执行步骤104 ;如果B1未被缓存,执行步骤105 ;
[0010]104、在B1已被BINL0GDEV模块缓存的情况下,如果为读操作,则BINL0GDEV模块直接将B1重定向至缓存盘即可;而如果为写操作,则BINL0DEV模块更新内存中此B1对应的BINL0GDEV_10的元数据和数据块,并将BINL0GDEV_10写入缓存盘,之后通过线程回写至数据盘;
[0011]105、在B1未被BINL0GDEV模块缓存的情况下,如果为读操作,则B1直接读取数据盘数据;如果为写操作,则BINLODEV模块将B1中的元数据,以及数据封装成BINL0GDEV_10数据结构,写入缓存盘,之后通过线程回写至数据盘;
[0012]106、当B1不满足对齐条件下,不管B1为读或者写操作,将需要将涉及到的脏数据块,即还未写入数据盘的数据,写入数据盘,然后B1再对数据盘进行读写操作。
[0013]所述的BINL0GDEV模块的缓存盘与数据盘数据对应关系为A:B,A代表缓存盘扇区写入位置,B代表数据盘扇区位置;BINL0GDEV模块在回写脏数据的过程中,从缓存盘A位置读取固定块大小,写到数据盘B位置处;
[0014]所述的BINL0GDEV_10数据结构包含元数据区与数据区,将会被链入先进先出列表,后台的清除线程将根据此链表,在系统负载不重的情况下,将脏数据从缓存盘回写至数据盘。
[0015]所述的BINL0GDEV_10数据,都是根据时间依次写入缓存盘,即顺序写入,来保存数据,即随机1变成顺序10。
[0016]所述的内陷为Linux从用户态进入内核态的一种手段。
[0017]所述的缓存盘数的数据结构包括超级块与块区域,超级块记录了 BINL0GDEV模块所必须的元数据,如缓存盘,数据盘的路径,块大小等信息;块区域包含两个部分:块元数据区和数据区,块元数据区存放了块存放在缓存盘的位置,位于数据盘的位置等信息,而数据区则存放需要写入数据盘的数据。
[0018]本发明的和已有技术相比较,其效果是积极和明显的。本发明在现有的生产环境下,只需要另外增加普通的机械磁盘,就能搭建高性能存储系统,而对于原有数据透明。在操作上,只需要一块大容量的普通机械磁盘(SATA,SAS等),以缓存数据盘上的数据,从而通过减少对于数据磁盘的1操作次数,加速1写入次数。本发明在写入随机1的情况下,将随机1变成顺序10,吞吐量以及单位时间内的1读写次数(1PS)接近顺序10。
【附图说明】
[0019]图1为本发明的步骤流程图。
[0020]图2为现有1加速方式原理图。
[0021]图3为BINL0GDEV层工作原理图。
[0022]图4为缓存盘的数据结构图
【具体实施方式】
[0023]下面结合附图和具体实施例对本发明进行详细说明。
[0024]如图1所示,一种加速磁盘随机输入输出(1)读写的方法,其特征在于包括以下步骤:
[0025]101、计算机操作系统应用层进行数据读写操作,通过内陷进入内核态,虚拟文件系统层将数据封装成ΒΙ0,即虚拟文件系统层与通用块层交互的数据结构,并提交至通用块层子系统;
[0026]102、在通用块层子系统的DEVICE-MAPPER驱动层,B1将切割成固定块大小,传递给BINL0GDEV模块层,当B1进入BINL0GDEV模块层,将被检查是否满足缓存条件,即B1起始位置是否对齐,长度是否为块长度,如果满足条件,执行步骤103 ;如果不满足条件,执行步骤106 ;
[0027]103、BINL0GDEV模块先搜索内存,以确定B1是否被缓存,如果B1被BINL0GDEV模块缓存,执行步骤104 ;如果B1未被缓存,执行步骤105 ;
[0028]104、在B1已被BINL0GDEV模块缓存的情况下,如果为读操作,则BINL0GDEV模块直接将B1重定向至缓存盘
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1