CN104793892B - 一种加速磁盘随机输入输出(io)读写的方法 - Google Patents
一种加速磁盘随机输入输出(io)读写的方法 Download PDFInfo
- 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
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读写存在一定的延迟,正是由于此特性,导致机械磁盘的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模块所必须的元数据,所述元数据包括缓存磁盘、数据盘的路径、块大小的信息;块区域包含两个部分:块元数据区和数据区,块元数据区存放了块存放在缓存磁盘的位置,位于数据盘的位置的信息,而数据区则存放需要写入数据盘的数据。
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)
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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8589913B2 (en) * | 2009-10-14 | 2013-11-19 | Vmware, Inc. | Tracking block-level writes |
-
2014
- 2014-01-20 CN CN201410025008.3A patent/CN104793892B/zh active Active
Patent Citations (3)
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 | |
US10452557B2 (en) | Storage apparatus, computer system, and method for improved read operation handling | |
US9396114B2 (en) | Performing staging or destaging based on the number of waiting discard scans | |
US8825952B2 (en) | Handling high priority requests in a sequential access storage device having a non-volatile storage cache | |
WO2014157244A1 (ja) | ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム | |
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) | 一种高速大数据存储方法 | |
Jain | Performance Evaluation of Split Disk-Cache |
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 |