CN107908573B - 一种缓存数据的方法及装置 - Google Patents

一种缓存数据的方法及装置 Download PDF

Info

Publication number
CN107908573B
CN107908573B CN201711098205.8A CN201711098205A CN107908573B CN 107908573 B CN107908573 B CN 107908573B CN 201711098205 A CN201711098205 A CN 201711098205A CN 107908573 B CN107908573 B CN 107908573B
Authority
CN
China
Prior art keywords
data
small data
data block
small
block
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
CN201711098205.8A
Other languages
English (en)
Other versions
CN107908573A (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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
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 Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN201711098205.8A priority Critical patent/CN107908573B/zh
Publication of CN107908573A publication Critical patent/CN107908573A/zh
Application granted granted Critical
Publication of CN107908573B publication Critical patent/CN107908573B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供了一种缓存数据的方法及装置,所述的方法包括:S1:接收上层下发的IO数据块,并将IO数据块拆分成若干小数据块;S2:将拆分后的若干小数据块依次访问缓存盘;S3:访问完成后,将拆分后的若干小数据块封装成IO数据块,并通过回调函数提交给上层接口。所述的装置包括:数据拆分模块,用于将IO数据块差分成若干小数据块;数据访问模块,用于实现若干小数据块对于缓存盘的读或写访问;数据封装模块,用于将若干小数据块分装成一个完整的IO数据块。通过对上层下发的IO数据块先做拆分处理,拆分成更小的数据块,再访问缓存盘或磁盘,以此方式提高IO请求的缓存命中率,提升缓存访问速度。

Description

一种缓存数据的方法及装置
技术领域
本发明涉及计算机技术领域,具体的说是一种缓存数据的方法及装置。
背景技术
在计算机技术中,缓存的使用比较广泛,cpu和内存之间、存储软件中都有使用。数据缓存是决定设备运行能力的重要决定因素,它不仅直接反应了设备的性能,而且决定着对硬件的选择范围。
目前,几款常见的用于Linux系统中的缓存软件的数据调度方法,基本上都未对上层下发的IO数据块做过多的处理,直接利用接收到的IO数据块访问缓存盘或后端机械盘,只是在数据访问的优先级、访问通道等环节进行了优化,对于较大的IO数据块而言,将IO数据块作为整体进行访问的方式,在缓存命中率以及缓存访问速度上不能满足客户的需求。
发明内容
为了解决上述问题,提供了一种缓存数据的方法及装置,对上层下发的IO数据块先做拆分处理,拆分成更小的数据块,再访问缓存盘或磁盘,以此方式提高IO请求的缓存命中率,提升缓存访问速度。
本发明实施例提供了一种缓存数据的方法,所述的方法包括:
S1:接收上层下发的IO数据块,并将IO数据块拆分成若干小数据块;
S2:将拆分后的若干小数据块依次访问缓存盘;
S3:访问完成后,将拆分后的若干小数据块封装成IO数据块,并通过回调函数提交给上层接口。
进一步的,步骤S1的具体实现过程为:
S11:系统接收到IO访问请求后,将IO数据块拆分成若干小数据块;
S12:为每一个小数据块建立链表管理。
进一步的,步骤S12的具体实现过程为:
S121:创建每一个小数据块的结构体,每一个结构体均包含链表、卷编号、逻辑块地址和扇区数量;
S122:获取IO请求的起始逻辑块地址;
S123:以IO请求的起始逻辑块地址为边界选取第一个小数据块,并记录其卷编号、逻辑块地址和扇区数量三种信息;
S124:通过上一个小数据块的逻辑块地址和扇区数量,计算出下一个小数据块的起始扇区地址,并在IO中以新计算出的逻辑块地址开始截取新的小数据块;
S125:将步骤S124中获取的信息记录到该小数据块对应的链表中;
S126:重复步骤S124-S125,直至所有的小数据块建立链表管理信息。
进一步的,步骤S123的具体实现过程为:
计算IO的起始逻辑块地址和缓存分区的扇区边界是否对齐;
若边界对齐,则从IO的起始扇区开始截取一个小数据块作为第一个小数据块,并记录其卷编号、逻辑块地址和扇区数量三种信息;
若边界不对齐,截取IO起始逻辑块地址到与缓存扇区对齐地址之间的这段数据作为第一个小数据块,并记录其卷编号、逻辑块地址和扇区数量三种信息。
进一步的,如果小数据块为读数据,则步骤S2的具体实现过程为:
通过小数据块的扇区逻辑块地址计算SSD盘数据分区编号,并查询是否命中;
若命中,则把将硬盘的扇区号转换为SSD的扇区号,然后将此小数据块向SSD提交,进行读取;
若未命中,则向硬盘驱动提交小数据块,从硬盘读数据,读取完成后,由回调函数启动回写SSD操作,将小数据块的扇区号转换为SSD的扇区号,然后向SSD驱动程序提交,将硬盘读取的数据写入SSD。
进一步的,如果小数据块为写数据,则步骤S2的具体实现过程为:
通过小数据块的扇区逻辑块地址计算SSD盘数据分区编号,并查询是否命中;
若命中,则把小数据块提交到SSD盘,SSD盘在脏数据达到阈值时自动下刷数据;
若未命中,则直接把数据提交到后端HDD盘。
本发明实施例还提供了一种缓存数据的装置,所述的装置包括:
数据拆分模块,用于将IO数据块拆分成若干小数据块;
数据访问模块,用于实现若干小数据块对于缓存盘的读或写访问;
数据封装模块,用于将若干小数据块分装成一个完整的IO数据块。
发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
1、在生成IO请求提交到缓存盘之前对其进行拆分,在保证数据块信息不丢失的情况下,可以有效缩小数据块的大小,提高缓存加速的性能。
2、使用链表对拆分后的小数据块进行管理,可以保证拆分后数据块的唯一性,并增减拆分后数据块的逻辑性和关联性,在处理大块IO读写请求时能有效的提高数据的缓存命中率。
3、对于读、写数据采用不同的缓存策略,可以进一步提升缓存速度,减少读、写数据的缓存响应时间。
附图说明
图1是本发明方法流程图;
图2是本发明装置的原理框图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
如图1所示的一种缓存数据的方法,所述的方法包括以下步骤:
S1:接收上层下发的IO数据块(bio),并将IO数据块(bio)拆分成若干小数据块(pio),具体实现过程为:
S11:当有IO访问请求时,对IO数据块进行拆分,一般拆分成4K大小的数据块(pio)。
S12:使用链表对新拆分的数据块进行管理,具体实现过程为:
S121:创建pio结构体,结构体中主要包含链表(listnode)、卷编号(lun)、逻辑块地址(lba)、扇区数量(count)等属性。链表使用单链表即可满足要求。
S122:获取IO请求的起始逻辑块地址。
S123:以IO请求的起始逻辑块地址为边界选取第一个小数据块,并记录其卷编号、逻辑块地址和扇区数量三种信息。此处要计算IO的起始lba和缓存分区的扇区边界是否对齐,若边界对齐,则从IO的起始扇区开始截取一个小数据块作为第一个小数据块,并记录其卷编号、逻辑块地址和扇区数量三种信息;若边界不对齐,截取IO起始逻辑块地址到与缓存扇区对齐地址之间的这段数据作为第一个小数据块,并记录其卷编号、逻辑块地址和扇区数量三种信息。
S124:通过上一个小数据块的逻辑块地址和扇区数量,计算出下一个小数据块的起始扇区地址,并在IO中以新计算出的逻辑块地址开始截取新的小数据块。
S125:将步骤S124中获取的信息记录到该小数据块对应的链表中。
S126:重复步骤S124-S125,直至所有的小数据块建立链表管理信息。
S2:将拆分后的若干小数据块依次访问缓存盘。
如果小数据块为读数据,则步骤S2的具体实现过程为:
通过小数据块的扇区逻辑块地址计算SSD盘数据分区编号,并查询是否命中;若命中,则把将硬盘的扇区号转换为SSD的扇区号,然后将此小数据块向SSD提交,进行读取;若未命中,则向硬盘驱动提交小数据块,从硬盘读数据,读取完成后,由回调函数启动回写SSD操作,将小数据块的扇区号转换为SSD的扇区号,然后向SSD驱动程序提交,将硬盘读取的数据写入SSD。
如果小数据块为写数据,则步骤S2的具体实现过程为:
通过小数据块的扇区逻辑块地址计算SSD盘数据分区编号,并查询是否命中;若命中,则把小数据块提交到SSD盘,SSD盘在脏数据达到阈值时自动下刷数据;若未命中,则直接把数据提交到后端HDD盘。
S3:访问完成后,将拆分后的若干小数据块封装成IO数据块,并通过回调函数提交给上层接口。
对于IO请求的起始lba,一般情况下不会与缓存盘的扇区地址对齐。也就是说拆分后生成的pio链中第一个和最后一个pio的数据块小于4KB。比对齐的情况下,对于起始pio和最后一个pio的处理如下:
1)对于读IO请求,直接提交到后端hdd盘,读取完成后不同步缓存。
2)对于写IO请求,在提交到后端hdd盘之前,需要先把pio补全到4K大小,获取数据后同步缓存,否则会破坏数据一致性。
如图2所示,本发明实施例还提供了一种缓存数据的装置,所述的装置包括数据拆分模块、数据访问模块和数据封装模块。
数据拆分模块,接收上层下发的IO数据块(bio),并将IO数据块(bio)拆分成若干小数据块(pio)。
数据访问模块,用于实现若干小数据块对于缓存盘的读或写访问。
数据封装模块,用于将若干小数据块分装成一个完整的IO数据块。
尽管说明书及附图和实施例对本发明创造已进行了详细的说明,但是,本领域技术人员应当理解,仍然可以对本发明创造进行修改或者等同替换;而一切不脱离本发明创造的精神和范围的技术方案及其改进,其均涵盖在本发明创造专利的保护范围当中。

Claims (5)

1.一种缓存数据的方法,其特征是:所述的方法包括:
S1:接收上层下发的IO数据块,并将IO数据块拆分成若干小数据块;
步骤S1的具体实现过程为:
S11:系统接收到IO访问请求后,将IO数据块拆分成若干小数据块;
S12:为每一个小数据块建立链表管理;
步骤S12的具体实现过程为:
S121:创建每一个小数据块的结构体,每一个结构体均包含链表、卷编号、逻辑块地址和扇区数量;
S122:获取IO请求的起始逻辑块地址;
S123:以IO请求的起始逻辑块地址为边界选取第一个小数据块,并记录其卷编号、逻辑块地址和扇区数量三种信息;
S124:通过上一个小数据块的逻辑块地址和扇区数量,计算出下一个小数据块的起始逻辑块地址,并在IO中以新计算出的逻辑块地址开始截取新的小数据块;
S125:将步骤S124中获取的信息记录到该小数据块对应的链表中;
S126:重复步骤S124-S125,直至所有的小数据块建立链表管理信息;
S2:将拆分后的若干小数据块依次访问缓存盘;
S3:访问完成后,将拆分后的若干小数据块封装成IO数据块,并通过回调函数提交给上层接口。
2.根据权利要求1所述的一种缓存数据的方法,其特征是:步骤S123的具体实现过程为:
计算IO访问请求的起始逻辑块地址和缓存分区的扇区边界是否对齐;
若边界对齐,则从IO访问请求的起始扇区开始截取一个小数据块作为第一个小数据块,并记录其卷编号、逻辑块地址和扇区数量三种信息;
若边界不对齐,截取IO访问请求起始逻辑块地址到与缓存扇区对齐地址之间的这段数据作为第一个小数据块,并记录其卷编号、逻辑块地址和扇区数量三种信息。
3.根据权利要求1所述的一种缓存数据的方法,其特征是:如果小数据块为读数据,则步骤S2的具体实现过程为:
通过小数据块的扇区逻辑块地址计算SSD盘数据分区编号,并查询是否命中;
若命中,则把将硬盘的扇区号转换为SSD的扇区号,然后将此小数据块向SSD提交,进行读取;
若未命中,则向硬盘驱动提交小数据块,从硬盘读数据,读取完成后,由回调函数启动回写SSD操作,将小数据块的扇区号转换为SSD的扇区号,然后向SSD驱动程序提交,将硬盘读取的数据写入SSD。
4.根据权利要求1所述的一种缓存数据的方法,其特征是:如果小数据块为写数据,则步骤S2的具体实现过程为:
通过小数据块的扇区逻辑块地址计算SSD盘数据分区编号,并查询是否命中;
若命中,则把小数据块提交到SSD盘,SSD盘在脏数据达到阈值时自动下刷数据;
若未命中,则直接把数据提交到后端HDD盘。
5.一种缓存数据的装置,其特征是:基于权利要求1-4任意一项所述的方法来实现功能,所述的装置包括:
数据拆分模块,用于将IO数据块拆分成若干小数据块;
数据访问模块,用于实现若干小数据块对于缓存盘的读或写访问;
数据封装模块,用于将若干小数据块分装成一个完整的IO数据块。
CN201711098205.8A 2017-11-09 2017-11-09 一种缓存数据的方法及装置 Active CN107908573B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711098205.8A CN107908573B (zh) 2017-11-09 2017-11-09 一种缓存数据的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711098205.8A CN107908573B (zh) 2017-11-09 2017-11-09 一种缓存数据的方法及装置

Publications (2)

Publication Number Publication Date
CN107908573A CN107908573A (zh) 2018-04-13
CN107908573B true CN107908573B (zh) 2020-05-19

Family

ID=61844599

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711098205.8A Active CN107908573B (zh) 2017-11-09 2017-11-09 一种缓存数据的方法及装置

Country Status (1)

Country Link
CN (1) CN107908573B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110175049B (zh) * 2019-05-17 2021-06-08 西安微电子技术研究所 一种支持地址未对齐的数据拆分与聚合访问的处理系统及方法
CN113448517B (zh) * 2021-06-04 2022-08-09 山东英信计算机技术有限公司 一种固态硬盘写大块数据处理方法、装置、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101446931A (zh) * 2008-12-03 2009-06-03 中国科学院计算技术研究所 一种实现输入输出数据一致性的系统及方法
CN104023037A (zh) * 2014-07-02 2014-09-03 浪潮集团有限公司 一种低系统开销的rapidio数据传输方法
CN104793892A (zh) * 2014-01-20 2015-07-22 上海优刻得信息科技有限公司 一种加速磁盘随机输入输出(io)读写的方法
US9460017B1 (en) * 2014-09-26 2016-10-04 Qlogic, Corporation Methods and systems for efficient cache mirroring

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080235484A1 (en) * 2007-03-22 2008-09-25 Uri Tal Method and System for Host Memory Alignment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101446931A (zh) * 2008-12-03 2009-06-03 中国科学院计算技术研究所 一种实现输入输出数据一致性的系统及方法
CN104793892A (zh) * 2014-01-20 2015-07-22 上海优刻得信息科技有限公司 一种加速磁盘随机输入输出(io)读写的方法
CN104023037A (zh) * 2014-07-02 2014-09-03 浪潮集团有限公司 一种低系统开销的rapidio数据传输方法
US9460017B1 (en) * 2014-09-26 2016-10-04 Qlogic, Corporation Methods and systems for efficient cache mirroring

Also Published As

Publication number Publication date
CN107908573A (zh) 2018-04-13

Similar Documents

Publication Publication Date Title
US10860494B2 (en) Flushing pages from solid-state storage device
US9026730B2 (en) Management of data using inheritable attributes
US9348747B2 (en) Solid state memory command queue in hybrid device
US11360705B2 (en) Method and device for queuing and executing operation commands on a hard disk
US9182912B2 (en) Method to allow storage cache acceleration when the slow tier is on independent controller
WO2017148242A1 (zh) 一种访问叠瓦式磁记录smr硬盘的方法及服务器
US10216437B2 (en) Storage systems and aliased memory
US11226778B2 (en) Method, apparatus and computer program product for managing metadata migration
US9983997B2 (en) Event based pre-fetch caching storage controller
CN107203480B (zh) 一种数据预取方法以及装置
CN107908573B (zh) 一种缓存数据的方法及装置
US11474750B2 (en) Storage control apparatus and storage medium
CN112347044B (zh) 一种基于spdk的对象存储优化方法
US20170199679A1 (en) System and method for using persistent memory to accelerate write performance
US11010091B2 (en) Multi-tier storage
WO2023020136A1 (zh) 存储系统中的数据存储方法及装置
US8140804B1 (en) Systems and methods for determining whether to perform a computing operation that is optimized for a specific storage-device-technology type
CN111858402A (zh) 一种基于cache的读写数据处理方法及系统
WO2016029481A1 (zh) 一种隔离磁盘区域的方法和设备
US20150039832A1 (en) System and Method of Caching Hinted Data
US8732343B1 (en) Systems and methods for creating dataless storage systems for testing software systems
US9236066B1 (en) Atomic write-in-place for hard disk drives
US8527696B1 (en) System and method for out-of-band cache coherency
CN109542359B (zh) 一种数据重建方法、装置、设备及计算机可读存储介质
JP7310110B2 (ja) ストレージ及び情報処理システム。

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200424

Address after: 215100 No. 1 Guanpu Road, Guoxiang Street, Wuzhong Economic Development Zone, Suzhou City, Jiangsu Province

Applicant after: SUZHOU LANGCHAO INTELLIGENT TECHNOLOGY Co.,Ltd.

Address before: 450018 Henan province Zheng Dong New District of Zhengzhou City Xinyi Road No. 278 16 floor room 1601

Applicant before: ZHENGZHOU YUNHAI INFORMATION TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant