CN107908573A - 一种缓存数据的方法及装置 - Google Patents
一种缓存数据的方法及装置 Download PDFInfo
- Publication number
- CN107908573A CN107908573A CN201711098205.8A CN201711098205A CN107908573A CN 107908573 A CN107908573 A CN 107908573A CN 201711098205 A CN201711098205 A CN 201711098205A CN 107908573 A CN107908573 A CN 107908573A
- Authority
- CN
- China
- Prior art keywords
- data
- data block
- small data
- block
- small
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000005194 fractionation Methods 0.000 claims abstract description 10
- 230000008569 process Effects 0.000 claims description 15
- 238000005192 partition Methods 0.000 claims description 9
- 230000007246 mechanism Effects 0.000 claims description 2
- 230000006870 function Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability 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 (7)
1.一种缓存数据的方法,其特征是:所述的方法包括:
S1:接收上层下发的IO数据块,并将IO数据块拆分成若干小数据块;
S2:将拆分后的若干小数据块依次访问缓存盘;
S3:访问完成后,将拆分后的若干小数据块封装成IO数据块,并通过回调函数提交给上层接口。
2.根据权利要求1所述的一种缓存数据的方法,其特征是:步骤S1的具体实现过程为:
S11:系统接收到IO访问请求后,将IO数据块拆分成若干小数据块;
S12:为每一个小数据块建立链表管理。
3.根据权利要求2所述的一种缓存数据的方法,其特征是:步骤S12的具体实现过程为:
S121:创建每一个小数据块的结构体,每一个机构体均包含链表、卷编号、逻辑块地址和扇区数量;
S122:获取IO请求的起始逻辑块地址;
S123:以IO请求的起始逻辑块地址为边界选取第一个小数据块,并记录其卷编号、逻辑块地址和扇区数量三种信息;
S124:通过上一个小数据块的逻辑块地址和扇区数量,计算出下一个小数据块的起始扇区地址,并在IO中以新计算出的逻辑块地址开始截取新的小数据块;
S125:将步骤S124中获取的信息记录到该小数据块对应的链表中;
S126:重复步骤S124-S125,直至所有的小数据块建立链表管理信息。
4.根据权利要求3所述的一种缓存数据的方法,其特征是:步骤S123的具体实现过程为:
计算IO的起始逻辑块地址和缓存分区的扇区边界是否对齐;
若边界对齐,则从IO的起始扇区开始截取一个小数据块作为第一个小数据块,并记录其卷编号、逻辑块地址和扇区数量三种信息;
若边界不对齐,截取IO起始逻辑块地址到与缓存扇区对齐地址之间的这段数据作为第一个小数据块,并记录其卷编号、逻辑块地址和扇区数量三种信息。
5.根据权利要求1所述的一种缓存数据的方法,其特征是:如果小数据块为读数据,则步骤S2的具体实现过程为:
通过小数据块的扇区逻辑块地址计算SSD盘数据分区编号,并查询是否命中;
若命中,则把将硬盘的扇区号转换为SSD的扇区号,然后将此小数据块向SSD提交,进行读取;
若未命中,则向硬盘驱动提交小数据块,从硬盘读数据,读取完成后,由回调函数启动回写SSD操作,将小数据块的扇区号转换为SSD的扇区号,然后向SSD驱动程序提交,将硬盘读取的数据写入SSD。
6.根据权利要求1所述的一种缓存数据的方法,其特征是:如果小数据块为写数据,则步骤S2的具体实现过程为:
通过小数据块的扇区逻辑块地址计算SSD盘数据分区编号,并查询是否命中;
若命中,则把小数据块提交到SSD盘,SSD盘在脏数据达到阈值时自动下刷数据;
若未命中,则直接把数据提交到后端HDD盘。
7.一种缓存数据的装置,其特征是:所述的装置包括:
数据拆分模块,用于将IO数据块差分成若干小数据块;
数据访问模块,用于实现若干小数据块对于缓存盘的读或写访问;
数据封装模块,用于将若干小数据块分装成一个完整的IO数据块。
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 true CN107908573A (zh) | 2018-04-13 |
CN107908573B 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) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175049A (zh) * | 2019-05-17 | 2019-08-27 | 西安微电子技术研究所 | 一种支持地址未对齐的数据拆分与聚合访问的处理系统及方法 |
CN113448517A (zh) * | 2021-06-04 | 2021-09-28 | 山东英信计算机技术有限公司 | 一种固态硬盘写大块数据处理方法、装置、设备及介质 |
Citations (5)
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 |
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 |
-
2017
- 2017-11-09 CN CN201711098205.8A patent/CN107908573B/zh active Active
Patent Citations (5)
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 |
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 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175049A (zh) * | 2019-05-17 | 2019-08-27 | 西安微电子技术研究所 | 一种支持地址未对齐的数据拆分与聚合访问的处理系统及方法 |
CN113448517A (zh) * | 2021-06-04 | 2021-09-28 | 山东英信计算机技术有限公司 | 一种固态硬盘写大块数据处理方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107908573B (zh) | 2020-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6729914B2 (ja) | ソリッドステートストレージドライブ、システム、および方法 | |
CN108021511B (zh) | 一种ssd性能提升的方法及ssd | |
JP5813375B2 (ja) | ストレージシステムにおける要求に対する応答に関連した待ち時間削減 | |
CN103999058B (zh) | 带驱动器系统服务器 | |
CA2942443C (en) | Method for storing data by storage device and storage device | |
US8103847B2 (en) | Storage virtual containers | |
US9671977B2 (en) | Handling data block migration to efficiently utilize higher performance tiers in a multi-tier storage environment | |
JP5944587B2 (ja) | 計算機システム及び制御方法 | |
US10521345B2 (en) | Managing input/output operations for shingled magnetic recording in a storage system | |
US8694563B1 (en) | Space recovery for thin-provisioned storage volumes | |
US10339021B2 (en) | Method and apparatus for operating hybrid storage devices | |
US10621059B2 (en) | Site recovery solution in a multi-tier storage environment | |
US10152242B1 (en) | Host based hints | |
CN107908573A (zh) | 一种缓存数据的方法及装置 | |
US11474750B2 (en) | Storage control apparatus and storage medium | |
US20050160307A1 (en) | Method, system, and program for generating parity data | |
US11010091B2 (en) | Multi-tier storage | |
US9384135B2 (en) | System and method of caching hinted data | |
US10929032B1 (en) | Host hinting for smart disk allocation to improve sequential access performance | |
US9009426B1 (en) | Methods, computer readable media, and systems for optimizing cache utilization | |
US20100262771A1 (en) | Data storage system and cache data-consistency assurance method | |
US10503651B2 (en) | Media cache band cleaning | |
JP2017068805A (ja) | 情報処理装置、プロセッサ、および情報処理方法 | |
CN2603974Y (zh) | 磁盘高速缓存装置 | |
US20240061786A1 (en) | Systems, methods, and apparatus for accessing data in versions of memory pages |
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 |
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. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |