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

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

Info

Publication number
CN104793892B
CN104793892B CN201410025008.3A CN201410025008A CN104793892B CN 104793892 B CN104793892 B CN 104793892B CN 201410025008 A CN201410025008 A CN 201410025008A CN 104793892 B CN104793892 B CN 104793892B
Authority
CN
China
Prior art keywords
data
bio
binlogdev
write
disk
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410025008.3A
Other languages
English (en)
Other versions
CN104793892A (zh
Inventor
黄敏飞
莫显峰
蒙晓净
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Excellent Polytron Technologies Inc
Original Assignee
Excellent Polytron Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Excellent Polytron Technologies Inc filed Critical Excellent Polytron Technologies Inc
Priority to CN201410025008.3A priority Critical patent/CN104793892B/zh
Publication of CN104793892A publication Critical patent/CN104793892A/zh
Application granted granted Critical
Publication of CN104793892B publication Critical patent/CN104793892B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种加速磁盘随机输入输出(IO)读写的方法,其特征在于包括以下步骤:计算机操作系统应用层进行数据读写操作,通过内陷进入内核态,虚拟文件系统层将数据封装成BIO,即虚拟文件系统层与通用块层交互的数据结构,并提交至通用块层子系统;在通用块层子系统的DEVICE‑MAPPER驱动层,BIO将切割成固定块大小,传递给BINLOGDEV模块层,当BIO进入BINLOGDEV模块层,将被检查是否满足缓存条件,即BIO起始位置是否对齐,长度是否为块长度,如果满足条件,执行步骤103;如果不满足条件,执行步骤106。本发明在写入随机IO的情况下,将随机IO变成顺序IO,存储速度快,效率高。

Description

一种加速磁盘随机输入输出(IO)读写的方法
技术领域
本发明涉及计算机技术领域,尤其是涉及一种加速磁盘随机输入输出(IO)读写的方法。
背景技术
数据存储相关领域,特别是输入输出(IO)加速技术,由于机械磁盘通过盘片存储数据,不可避免需要进行寻道,寻址等操作,以定位存储位置,造成了IO读写存在一定的延迟,正是由于此特性,导致机械磁盘的IOPS(单位时间内的IO读写次数)在随机的情况下,异常的低效。
在磁盘加速方面,通常是通过SSD作为缓存,先将数据缓存至SSD,以减少对机械磁盘进行实时的IO读写请求,通过在中间加上cache层,提高单位时间内IO的读写次数。由于SSD技术存在硬件价格昂贵,存储颗粒存在读写次数限制,在实际的生产环境下,以现有的技术,很难做到大规模的普及。
而其他的加速方式包括通过算法,在IO调度层尽可能延缓IO写入至磁盘,等待,试图合并大IO,以减少磁盘写入次数。这种方式增加了数据丢失的风险,如果文件系统采用缓存回写,即数据写入缓存,应用层就默认写入成功的方式,当掉电的时候,由于数据未及时回写至磁盘,造成数据丢失。在企业应用中,往往是灾难事件,造成数据的不可恢复。
发明内容
本发明的目的就是为了解决以上数据存储低效率的问题,提供的一种加速磁盘随机输入输出(IO)读写的方法。
一种加速磁盘随机输入输出(IO)读写的方法,其特征在于包括以下步骤:
101、计算机操作系统应用层进行数据读写操作,通过内陷进入内核态,虚拟文件系统层将数据封装成BIO,即虚拟文件系统层与通用块层交互的数据结构,并提交至通用块层子系统;
102、在通用块层子系统的DEVICE-MAPPER驱动层,BIO将切割成固定块大小,传递给BINLOGDEV模块层,当BIO进入BINLOGDEV模块层,将被检查是否满足缓存条件,即BIO起始位置是否对齐,长度是否为块长度,如果满足条件,执行步骤103;如果不满足条件,执行步骤106;
103、BINLOGDEV模块先搜索内存,以确定BIO是否被缓存,如果BIO被BINLOGDEV模块缓存,执行步骤104;如果BIO未被缓存,执行步骤105;
104、在BIO已被BINLOGDEV模块缓存的情况下,如果为读操作,则BINLOGDEV模块直接将BIO重定向至缓存盘即可;而如果为写操作,则BINLODEV模块更新内存中此BIO对应的BINLOGDEV_IO的元数据和数据块,并将BINLOGDEV_IO写入缓存盘,之后通过线程回写至数据盘;
105、在BIO未被BINLOGDEV模块缓存的情况下,如果为读操作,则BIO直接读取数据盘数据;如果为写操作,则BINLODEV模块将BIO中的元数据,以及数据封装成BINLOGDEV_IO数据结构,写入缓存盘,之后通过线程回写至数据盘;
106、当BIO不满足对齐条件下,不管BIO为读或者写操作,将需要将涉及到的脏数据块,即还未写入数据盘的数据,写入数据盘,然后BIO再对数据盘进行读写操作。
所述的BINLOGDEV模块的缓存盘与数据盘数据对应关系为A:B,A代表缓存盘扇区写入位置,B代表数据盘扇区位置;BINLOGDEV模块在回写脏数据的过程中,从缓存盘A位置读取固定块大小,写到数据盘B位置处;
所述的BINLOGDEV_IO数据结构包含元数据区与数据区,将会被链入先进先出列表,后台的清除线程将根据此链表,在系统负载不重的情况下,将脏数据从缓存盘回写至数据盘。
所述的BINLOGDEV_IO数据,都是根据时间依次写入缓存盘,即顺序写入,来保存数据,即随机IO变成顺序IO。
所述的内陷为Linux从用户态进入内核态的一种手段。
所述的缓存盘数的数据结构包括超级块与块区域,超级块记录了BINLOGDEV模块所必须的元数据,如缓存盘,数据盘的路径,块大小等信息;块区域包含两个部分:块元数据区和数据区,块元数据区存放了块存放在缓存盘的位置,位于数据盘的位置等信息,而数据区则存放需要写入数据盘的数据。
本发明的和已有技术相比较,其效果是积极和明显的。本发明在现有的生产环境下,只需要另外增加普通的机械磁盘,就能搭建高性能存储系统,而对于原有数据透明。在操作上,只需要一块大容量的普通机械磁盘(SATA,SAS等),以缓存数据盘上的数据,从而通过减少对于数据磁盘的IO操作次数,加速IO写入次数。本发明在写入随机IO的情况下,将随机IO变成顺序IO,吞吐量以及单位时间内的IO读写次数(IOPS)接近顺序IO。
附图说明
图1为本发明的步骤流程图。
图2为现有IO加速方式原理图。
图3为BINLOGDEV层工作原理图。
图4为缓存盘的数据结构图
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
如图1所示,一种加速磁盘随机输入输出(IO)读写的方法,其特征在于包括以下步骤:
101、计算机操作系统应用层进行数据读写操作,通过内陷进入内核态,虚拟文件系统层将数据封装成BIO,即虚拟文件系统层与通用块层交互的数据结构,并提交至通用块层子系统;
102、在通用块层子系统的DEVICE-MAPPER驱动层,BIO将切割成固定块大小,传递给BINLOGDEV模块层,当BIO进入BINLOGDEV模块层,将被检查是否满足缓存条件,即BIO起始位置是否对齐,长度是否为块长度,如果满足条件,执行步骤103;如果不满足条件,执行步骤106;
103、BINLOGDEV模块先搜索内存,以确定BIO是否被缓存,如果BIO被BINLOGDEV模块缓存,执行步骤104;如果BIO未被缓存,执行步骤105;
104、在BIO已被BINLOGDEV模块缓存的情况下,如果为读操作,则BINLOGDEV模块直接将BIO重定向至缓存盘即可;而如果为写操作,则BINLODEV模块更新内存中此BIO对应的BINLOGDEV_IO的元数据和数据块,并将BINLOGDEV_IO写入缓存盘,之后通过线程回写至数据盘;
105、在BIO未被BINLOGDEV模块缓存的情况下,如果为读操作,则BIO直接读取数据盘数据;如果为写操作,则BINLODEV模块将BIO中的元数据,以及数据封装成BINLOGDEV_IO数据结构,写入缓存盘,之后通过线程回写至数据盘;
106、当BIO不满足对齐条件下,不管BIO为读或者写操作,将需要将涉及到的脏数据块,即还未写入数据盘的数据,写入数据盘,然后BIO再对数据盘进行读写操作。
如图3所示,所述的BINLOGDEV模块的缓存盘与数据盘数据对应关系为A:B,A代表缓存盘扇区写入位置,B代表数据盘扇区位置;BINLOGDEV模块在回写脏数据的过程中,从缓存盘A位置读取固定块大小,写到数据盘B位置处;
所述的BINLOGDEV_IO数据结构包含元数据区与数据区,二者都会被链入先进先出列表,后台的清除线程将根据此链表,在系统负载不重的情况下,将脏数据从缓存盘回写至数据盘。
所述的BINLOGDEV_IO数据,都是根据时间依次写入缓存盘,即顺序写入,来保存数据,即随机IO变成顺序IO。
所述的内陷为Linux从用户态进入内核态的一种手段。
如图4所示,所述的缓存盘数的数据结构包括超级块与块区域,超级块记录了BINLOGDEV模块所必须的元数据,如缓存盘,数据盘的路径,块大小等信息;块区域包含两个部分:块元数据区和数据区,块元数据区存放了块存放在缓存盘的位置,位于数据盘的位置等信息,而数据区则存放需要写入数据盘的数据。
当然,上述说明并非是对本发明的限制,本发明也并不仅限于上述举例,本技术领域的普通技术人员在本发明的实质范围内做出的变化、改型、添加或替换,也应属于本发明的保护范围。

Claims (6)

1.一种加速磁盘随机输入输出(IO)读写的方法,其特征在于包括以下步骤:
101、计算机操作系统应用层进行数据读写操作,通过内陷进入内核态,虚拟文件系统层将数据封装成BIO,即虚拟文件系统层与通用块层交互的数据结构,并提交至通用块层子系统;
102、在通用块层子系统的DEVICE-MAPPER驱动层,BIO将切割成固定块大小,传递给BINLOGDEV模块层,当BIO进入BINLOGDEV模块层,将被检查是否满足缓存条件,即BIO起始位置是否对齐,长度是否为块长度,如果满足条件,执行步骤103;如果不满足条件,执行步骤106;
103、BINLOGDEV模块先搜索内存,以确定BIO是否被缓存,如果BIO被BINLOGDEV模块缓存,执行步骤104;如果BIO未被缓存,执行步骤105;
104、在BIO已被BINLOGDEV模块缓存的情况下,如果为读操作,则BINLOGDEV模块直接将BIO重定向至缓存磁盘即可;而如果为写操作,则BINLOGDEV模块更新内存中此BIO对应的BINLOGDEV_IO的元数据和数据块,并将BINLOGDEV_IO写入缓存磁盘,之后通过线程回写至数据盘;
105、在BIO未被BINLOGDEV模块缓存的情况下,如果为读操作,则BIO直接读取数据盘数据;如果为写操作,则BINLOGDEV模块将BIO中的元数据,以及数据封装成BINLOGDEV_IO数据结构,写入缓存磁盘,之后通过线程回写至数据盘;
106、当BIO不满足对齐条件下,不管BIO为读或者写操作,都需要将涉及到的脏数据块,即还未写入数据盘的数据,写入数据盘,然后BIO再对数据盘进行读写操作。
2.如权利要求1所述的一种加速磁盘随机输入输出(IO)读写的方法,其特征在于:所述的BINLOGDEV模块的缓存磁盘与数据盘数据对应关系为A:B,A代表缓存磁盘扇区写入位置,B代表数据盘扇区位置;BINLOGDEV模块在回写脏数据的过程中,从缓存磁盘A位置读取固定块大小,写到数据盘B位置处。
3.如权利要求1所述的一种加速磁盘随机输入输出(IO)读写的方法,其特征在于:所述的BINLOGDEV_IO数据结构包含元数据区与数据区,将被链入先进先出列表,后台的清除线程将根据此列表,在系统负载不重的情况下,将脏数据从缓存磁盘回写至数据盘。
4.如权利要求1所述的一种加速磁盘随机输入输出(IO)读写的方法,其特征在于:所述的BINLOGDEV_IO数据,都是根据时间依次写入缓存磁盘,即顺序写入,来保存数据,即随机IO变成顺序IO。
5.如权利要求1所述的一种加速磁盘随机输入输出(IO)读写的方法,其特征在于:所述的内陷为Linux从用户态进入内核态的一种手段。
6.如权利要求1所述的一种加速磁盘随机输入输出(IO)读写的方法,其特征在于:所述的缓存磁盘数据的数据结构包括超级块与块区域,超级块记录了BINLOGDEV模块所必须的元数据,所述元数据包括缓存磁盘、数据盘的路径、块大小的信息;块区域包含两个部分:块元数据区和数据区,块元数据区存放了块存放在缓存磁盘的位置,位于数据盘的位置的信息,而数据区则存放需要写入数据盘的数据。
CN201410025008.3A 2014-01-20 2014-01-20 一种加速磁盘随机输入输出(io)读写的方法 Active CN104793892B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410025008.3A CN104793892B (zh) 2014-01-20 2014-01-20 一种加速磁盘随机输入输出(io)读写的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410025008.3A CN104793892B (zh) 2014-01-20 2014-01-20 一种加速磁盘随机输入输出(io)读写的方法

Publications (2)

Publication Number Publication Date
CN104793892A CN104793892A (zh) 2015-07-22
CN104793892B true CN104793892B (zh) 2019-04-19

Family

ID=53558717

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410025008.3A Active CN104793892B (zh) 2014-01-20 2014-01-20 一种加速磁盘随机输入输出(io)读写的方法

Country Status (1)

Country Link
CN (1) CN104793892B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107908573B (zh) * 2017-11-09 2020-05-19 苏州浪潮智能科技有限公司 一种缓存数据的方法及装置
CN108664412A (zh) * 2018-05-18 2018-10-16 广州优视网络科技有限公司 Io数据流处理方法、装置、存储介质和终端
CN109032523B (zh) * 2018-07-26 2021-08-10 郑州云海信息技术有限公司 一种磁盘设备驱动方法、系统、装置及可读存储介质
CN110941595B (zh) * 2019-11-19 2023-08-01 北京奇艺世纪科技有限公司 一种文件系统访问方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102043593A (zh) * 2010-12-17 2011-05-04 天津曙光计算机产业有限公司 一种基于Region的磁盘外置cache管理方法
CN102147802A (zh) * 2010-12-17 2011-08-10 曙光信息产业(北京)有限公司 一种伪随机类nfs应用加速系统
CN102521147A (zh) * 2011-11-17 2012-06-27 曙光信息产业(北京)有限公司 一种使用高速非易失介质做缓存的管理方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8589913B2 (en) * 2009-10-14 2013-11-19 Vmware, Inc. Tracking block-level writes

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102043593A (zh) * 2010-12-17 2011-05-04 天津曙光计算机产业有限公司 一种基于Region的磁盘外置cache管理方法
CN102147802A (zh) * 2010-12-17 2011-08-10 曙光信息产业(北京)有限公司 一种伪随机类nfs应用加速系统
CN102521147A (zh) * 2011-11-17 2012-06-27 曙光信息产业(北京)有限公司 一种使用高速非易失介质做缓存的管理方法

Also Published As

Publication number Publication date
CN104793892A (zh) 2015-07-22

Similar Documents

Publication Publication Date Title
US7325112B2 (en) High-speed snapshot method
US8788742B2 (en) Using an attribute of a write request to determine where to cache data in a storage system having multiple caches including non-volatile storage cache in a sequential access storage device
US8806122B2 (en) Caching data in a storage system having multiple caches including non-volatile storage cache in a sequential access storage device
US8650354B2 (en) Prefetching tracks using multiple caches
US9348747B2 (en) Solid state memory command queue in hybrid device
KR20080084948A (ko) 데이터를 효율적으로 저장하는 방법, 컴퓨터 판독가능 매체및 컴퓨터 시스템
US9335930B2 (en) Performing asynchronous discard scans with staging and destaging operations
CN104793892B (zh) 一种加速磁盘随机输入输出(io)读写的方法
CN104267912A (zh) 一种nas加速方法及系统
US10366000B2 (en) Re-use of invalidated data in buffers
US20140215127A1 (en) Apparatus, system, and method for adaptive intent logging
US9396114B2 (en) Performing staging or destaging based on the number of waiting discard scans
WO2014157244A1 (ja) ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
US20240086332A1 (en) Data processing method and system, device, and medium
US20120303895A1 (en) Handling high priority requests in a sequential access storage device having a non-volatile storage cache
US20180018272A1 (en) Storage apparatus, computer system, and method
CN102609486A (zh) 一种Linux文件系统的数据读写加速方法
US20180181318A1 (en) Storage control device
CN102508790A (zh) 一种应用于内容解析存储的基于内容的缓存方法
CN106155583B (zh) 缓存固态设备读取请求结果的系统和方法
US20230259294A1 (en) Systems, methods, and apparatus for copy destination atomicity in devices
US8738823B2 (en) Quiescing input/output (I/O) requests to subsets of logical addresses in a storage for a requested operation
Zeng et al. Optimizing Secure Deletion in Interlaced Magnetic Recording With Move-On-Cover Approach
CN104360820A (zh) 一种高速大数据存储方法
CN116594805A (zh) 用于设备中复制目的地原子性的系统、方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 200433 Room 201, 10 B, 619 Longchang Road, Yangpu District, Shanghai.

Applicant after: Excellent Polytron Technologies Inc

Address before: 200433 101, room 10, Fudan Science and Technology Park, 1018 Miyun Road, Shanghai.

Applicant before: SHANGHAI UCLOUD INFORMATION TECHNOLOGY CO., LTD.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant