CN101788961A - 对块设备进行异步请求的数据访问方法 - Google Patents
对块设备进行异步请求的数据访问方法 Download PDFInfo
- Publication number
- CN101788961A CN101788961A CN200910002500A CN200910002500A CN101788961A CN 101788961 A CN101788961 A CN 101788961A CN 200910002500 A CN200910002500 A CN 200910002500A CN 200910002500 A CN200910002500 A CN 200910002500A CN 101788961 A CN101788961 A CN 101788961A
- Authority
- CN
- China
- Prior art keywords
- request
- data access
- pending
- current
- block device
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种对块设备进行异步请求的数据访问方法,对服务端中的块设备进行访问,根据多笔数据访问请求进行相应的访问处理。数据访问方法包括有:接获来自客户端的当前请求;调用块设备的虚拟设备;将当前请求与存放有多数笔待处理请求的请求队列进行比较;根据当前请求的访问地址,从请求队列中选择出相应的待处理请求;将具有相邻的待处理请求与当前请求进行请求合并程序,产生合并请求;提交合并请求至请求队列。使得多笔访问量小的数据访问请求合并,提高块设备的访问效率。
Description
技术领域
本发明涉及一种数据访问方法,尤其涉及一种对块设备进行异步请求的数据访问方法。
背景技术
在Linux作业系统中包括有字符设备与块设备两种。这两种设备的访问方式迥然不同。字符设备是以字符传递,用以对设备进行访问。反之,块设备以块为单位,对块设备进行数据的访问。字符设备不需要缓冲而且不以固定块尺寸进行操作。而块设备对于访问请求有对应的缓冲区,所以可以选择以特定的顺序进行操作。字符设备没有设置缓冲空间,因此,可以直接的被访问。而且,字符设备只能被依序的读入,而块设备可以被随机的访问。虽然块设备可以被随机的访问,但是对于磁盘这类的机械设备来说,随机访问会使得磁头必须被四处移动,进而降低磁盘的访问性能。
所以当大量的数据访问请求发生时,块设备容易因为不连续的访问地址使得数据的访问性能大大的降低。
发明内容
本发明所要解决的技术问题在于提供一种对块设备进行异步请求的数据访问方法,根据多笔数据访问请求进行相应的访问处理。
为实现上述目的,本发明所揭露的一种对块设备进行异步请求的数据访问方法包括以下步骤:接获来自客户端的当前请求;调用块设备的虚拟设备;将当前请求与存放有多数笔待处理请求的请求队列进行比较;根据当前请求的访问地址,从请求队列中选择出相应的待处理请求;将具有相邻的待处理请求与当前请求进行请求合并程序,并产生合并请求;提交合并请求至请求队列。
本发明提供一种对数据访问请求的异步处理方法,用以对块设备的访问的数据访问请求进行合并处理。将具有连续访问地址的数据访问请求进行合并,使之成为单一笔的数据访问请求,借以提高块设备的访问效率。
有关本发明的特征与实作,兹配合图示作最佳实施例详细说明如下。
附图说明
图1为本发明的结构示意图;
图2为本发明的运作流程序意图;
图3为选择待处理请求的运作流程序意图;
图4为提交合并请求至请求队列的运作流程序意图。
其中,附图标记:
110:客户端
120:服务端
130:块设备
具体实施方式
请参考图1所示,其为本发明的结构示意图。本发明中包括有客户端110与服务端120。服务端120电性连接于多数个块设备130(block device),服务端120分别电性连接于客户端110与块设备130之间。在服务端120被引导后,服务端120会创建块设备130与虚拟设备(virtual device)的连结关系。服务端120在接收来自客户端110的数据访问请求时,会根据数据访问请求的访问地址向块设备130提取相应的数据。服务端120为依序的处理数据访问请求,因此会将所接收到的数据访问请求存放至请求队列(queue)中。为改善服务端120对数据访问效率,本发明提出以下数据访问请求的处理方法。请图2所示,其为本发明的运作流程序意图。
步骤S210:接获来自客户端的当前请求;
步骤S220:调用块设备的虚拟设备;
步骤S230:将当前请求与存放有多数笔待处理请求的虚拟设备的请求队列进行比较;
步骤S240:根据当前请求的访问地址,从该请求队列中选择出相应的待处理请求;
步骤S250:将具有相邻的待处理请求与当前请求进行请求合并程序,并产生合并请求;以及
步骤S260:提交合并请求至虚拟设备的请求队列。
步骤S270:将虚拟设备的请求提交给真实块设备。
首先,由客户端110发送当前请求至服务端120,用以向相应的块设备130访问数据。接着,服务端120获取当前请求后,服务端120会与存放在请求队列中的待处理请求进行访问地址的比较。在本发明中,选择访问地址的方式根据访问地址的连续性与数据访问请求的时序性作为依据。请图3所示,其为选择待处理请求的运作流程序意图。
步骤S241:从请求队列中选择出至少待处理请求;
步骤S242:判断所选择出的已接收数据访问的访问地址与当前请求的访问地址是否为连续地址;
步骤S243:将当前请求与待处理请求进行合并后,判断合并请求的访问容量是否超过块设备的块尺寸;以及
步骤S244:若合并请求的访问容量大于块设备的块尺寸时,该请求不再合并。
在此一选择过程中,是以数据访问请求的时序性与访问地址的连续性作为依据。换句话说,当前请求与待处理请求的写入顺序作为选择的条件之一;另外,再以当前请求的访问地址与待处理请求的访问地址视为另一组选择条件。这是因为客户端110所发送的数据访问请求并非是对块设备130的连续地址进行访问。若是每一笔的数据访问请求非连续的访问地址时,块设备130会因为跳着访问这些访问地址的数据,使得块设备130的访问效率降低。除此之外,为避免合并后访问的数据量大于块设备130的块大小。因此,更在步骤S243中判断每一次合并请求的访问量是否超过块设备130的块尺寸(block size)。
请配合图4所示,其为虚拟设备的请求提交给真实块设备的运作流程示意图。在完成上述各项访问的动作后,接着就是将虚拟设备的请求提交给真实设备。
步骤S271:从虚拟块设备请求队列中获取一个请求;
步骤S272:将请求提交给真实设备;
步骤S273:判断提交过程是否成功;
步骤S274:若请求提交失败时,判断此项请求是否为合并过的请求;
步骤S275:若此项请求为合并过的情求时,则返回错误;
步骤S276:若此项请求不是合并过的情求时,将请求拆分成原请求并依次返回错误;以及
步骤S277:若请求提交成功时,则回复一完成信息。
为更进一步的说明本发明的运作细节,在此以下述程序结构并配合运作流程进行解说。首先,定义数据访问请求的结构(基于linux2.6内核的一种实现):
struct v_request
{
struct list_head node; 队列节点,用于添加到请求队列
dev_t dev; 请求对应的设备号
loff_t offset; 请求在设备上的初始化地址
size_t size; 请求尺寸
void *ori_req; 原请求
struct mergeinfo *minfo 合并信息
end_req_t *end_req; 回调函数
}
记录合并信息的结构:
struct mergeinfo
{
loff_t offset; 合并后的初始化地址
size_t size; 合并后的尺寸
struct iovec *iov; 合并后的数据片断
struct v_request *mreq;所合并的请求链表
}
请求回调函数原形定义:
typedef void(end_req_t)(struct*v_request,unsigned int size,int result);
块设备定义:
struct v_device
{
dev_t dev; 设备号
make_request_fn *new_make_request_fn 新请求提交函数
struct gendisk *ori_device; 目的设备
make_request_fn *ori_make_request_fn 原请求提交函数
spinlock_t queue_lock; 队列锁
struct list_head req_queue; 队列头
int queue_len; 队列长度
int queue_max_len; 最大队列长度
unsigned bd_block_size; 块尺寸
}
接获来自客户端110的当前请求的流程:
对应步骤S210:截获一个发送给块设备130的当前请求,为其配置一个v_request结构,将当前请求的指标保存在v_request,结构的ori_req成员中,同时将当前请求的设备标识、初始化位置、尺寸保存在v_request结构的相应成员中。
接着,搜索与块设备130相关联的v_device设备(意即虚拟设备)。如果没有找到,返回访问错误。若找到有相应的v_device设备,则执行步骤S230。
对应步骤S230:从v_device设备中获得请求队列,并获得请求队列中最后一个待处理请求,计算待处理请求是否能与当前请求。如果能合并则执行执行步骤S250,反之,则执行步骤S260。
对应步骤S250:对待处理请求与当前请求进行合并,合并后会产生合并请求,并将合并后的初始化地址、尺寸等信息填写到v_requset结构的minfo成员中,并且执行步骤S260。
对应步骤S260:将合并请求添加到请求队列。
当前请求提交流程:
首先,从请求队列中获取第一个数据访问请求。在请求队列中第一个数据访问请求指的是存放在请求队列中最久的数据访问请求。再将数据访问请求提交给块设备130,判断数据访问请求的minfo成员是否为空。如果为空,证明是未合并过的请求,调用v_device的ori_make_request_fn将请求提交。如果minfo成员非空,则数据访问请求是经过合并的请求,根据minfo中的信息,调用ori_make_request_fn成员进行提交。
当提交或请求处理失败时,如果数据访问请求不是合并过的数据访问请求,返回错误。否则将数据访问请求拆分成原请求并依次返回错误,拆分时需使用minfo成员中的mreq队列中保存的信息。
本发明提供一种对数据访问请求的异步处理方法,用以对块设备130的访问的数据访问请求进行合并处理。将具有连续访问地址的数据访问请求进行合并,使之成为单一笔的数据访问请求,借以提高块设备130的访问效率。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (4)
1.一种对块设备进行异步请求的数据访问方法,对一服务端中的一块设备进行访问,根据多数笔数据访问请求进行相应的访问处理,其特征在于,该数据访问方法包括:
接获来自一客户端的一当前请求;
调用该块设备的一虚拟设备;
将该当前请求与一存放有多数笔待处理请求的请求队列进行比较;
根据该当前请求的访问地址,从该请求队列中选择出相应的该些待处理请求;
将具有相邻的该些待处理请求与该当前请求进行一请求合并程序,并产生一合并请求;以及
提交该合并请求至该请求队列。
2.根据权利要求1所述的对块设备进行异步请求的数据访问方法,其特征在于,在选择出具有相邻的访问地址的该些待处理请求中还包括以下步骤:
从该请求队列中选择出至少一该待处理请求;
判断所选择出的该些已接收数据访问的访问地址与该当前请求的访问地址是否为连续地址;以及
将该当前请求与该些待处理请求进行合并后,判断该合并请求的访问容量是否超过该块设备的块尺寸。
3.根据权利要求1所述的对块设备进行异步请求的数据访问方法,其特征在于,在提交该合并请求至该请求队列中还包括以下步骤:
从该请求队列中获取该待处理请求;以及
将所获取出的该待处理请求提交给相应的该虚拟设备。
4.根据权利要求3所述的对块设备进行异步请求的数据访问方法,其特征在于,在提交该以接收数据访问请求前还包括以下步骤:
判断该待处理请求是否为合并过的该当前请求;以及
若该待处理请求为已合并过的该当前请求时,将该待处理请求恢复回原始的该当前请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910002500A CN101788961A (zh) | 2009-01-23 | 2009-01-23 | 对块设备进行异步请求的数据访问方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910002500A CN101788961A (zh) | 2009-01-23 | 2009-01-23 | 对块设备进行异步请求的数据访问方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101788961A true CN101788961A (zh) | 2010-07-28 |
Family
ID=42532181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910002500A Pending CN101788961A (zh) | 2009-01-23 | 2009-01-23 | 对块设备进行异步请求的数据访问方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101788961A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102243595A (zh) * | 2011-08-03 | 2011-11-16 | 浙江大学 | 基于MMU架构的Java Card系统组件更新方法 |
CN102291324A (zh) * | 2011-06-28 | 2011-12-21 | 北京神州泰岳软件股份有限公司 | 高并发业务请求处理方法 |
CN104021034A (zh) * | 2014-06-24 | 2014-09-03 | 北京奇艺世纪科技有限公司 | 任务处理方法及系统 |
CN104571952A (zh) * | 2014-12-25 | 2015-04-29 | 华中科技大学 | 一种分开处理数据与元数据读写请求的方法 |
CN104965806A (zh) * | 2015-06-30 | 2015-10-07 | 北京奇艺世纪科技有限公司 | 一种请求处理方法及装置 |
CN105701040A (zh) * | 2014-11-28 | 2016-06-22 | 杭州华为数字技术有限公司 | 一种激活内存的方法及装置 |
CN106951428A (zh) * | 2016-01-06 | 2017-07-14 | 阿里巴巴集团控股有限公司 | 一种页面初始化方法及装置 |
CN109271241A (zh) * | 2018-08-20 | 2019-01-25 | 赛凡信息科技(厦门)有限公司 | 一种蓝光设备操作任务调度的方法 |
CN113507464A (zh) * | 2021-07-06 | 2021-10-15 | 深圳市吉芯微半导体有限公司 | 基于虚拟设备的数据访问方法、装置、设备及存储介质 |
-
2009
- 2009-01-23 CN CN200910002500A patent/CN101788961A/zh active Pending
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102291324A (zh) * | 2011-06-28 | 2011-12-21 | 北京神州泰岳软件股份有限公司 | 高并发业务请求处理方法 |
CN102243595A (zh) * | 2011-08-03 | 2011-11-16 | 浙江大学 | 基于MMU架构的Java Card系统组件更新方法 |
CN102243595B (zh) * | 2011-08-03 | 2014-02-19 | 浙江大学 | 基于MMU架构的Java Card系统组件更新方法 |
CN104021034A (zh) * | 2014-06-24 | 2014-09-03 | 北京奇艺世纪科技有限公司 | 任务处理方法及系统 |
CN105701040B (zh) * | 2014-11-28 | 2018-12-07 | 杭州华为数字技术有限公司 | 一种激活内存的方法及装置 |
US10127955B2 (en) | 2014-11-28 | 2018-11-13 | Huawei Technologies Co., Ltd. | Memory activation method and apparatus, and memory controller |
CN105701040A (zh) * | 2014-11-28 | 2016-06-22 | 杭州华为数字技术有限公司 | 一种激活内存的方法及装置 |
CN104571952B (zh) * | 2014-12-25 | 2017-08-01 | 华中科技大学 | 一种分开处理数据与元数据读写请求的方法 |
CN104571952A (zh) * | 2014-12-25 | 2015-04-29 | 华中科技大学 | 一种分开处理数据与元数据读写请求的方法 |
CN104965806A (zh) * | 2015-06-30 | 2015-10-07 | 北京奇艺世纪科技有限公司 | 一种请求处理方法及装置 |
CN104965806B (zh) * | 2015-06-30 | 2019-02-22 | 北京奇艺世纪科技有限公司 | 一种请求处理方法及装置 |
CN106951428A (zh) * | 2016-01-06 | 2017-07-14 | 阿里巴巴集团控股有限公司 | 一种页面初始化方法及装置 |
CN106951428B (zh) * | 2016-01-06 | 2020-06-02 | 菜鸟智能物流控股有限公司 | 一种页面初始化方法及装置 |
CN109271241A (zh) * | 2018-08-20 | 2019-01-25 | 赛凡信息科技(厦门)有限公司 | 一种蓝光设备操作任务调度的方法 |
CN113507464A (zh) * | 2021-07-06 | 2021-10-15 | 深圳市吉芯微半导体有限公司 | 基于虚拟设备的数据访问方法、装置、设备及存储介质 |
CN113507464B (zh) * | 2021-07-06 | 2023-10-13 | 深圳市吉芯微半导体有限公司 | 基于虚拟设备的数据访问方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101788961A (zh) | 对块设备进行异步请求的数据访问方法 | |
US10860494B2 (en) | Flushing pages from solid-state storage device | |
US8566496B2 (en) | Data prefetch in SAS expanders | |
US20200192873A1 (en) | Blockchain network and method of operation thereof | |
CN104461768B (zh) | 副本存储装置及副本存储方法 | |
CN107153643B (zh) | 数据表连接方法及装置 | |
CN111694770B (zh) | 一种处理io请求的方法及装置 | |
CN107122130B (zh) | 一种数据重删方法及装置 | |
CN106095597A (zh) | 客户端数据处理方法及装置 | |
CN103425589A (zh) | 控制装置、存储装置以及存储控制方法 | |
CN105701112A (zh) | 一种数据处理方法、装置及系统 | |
WO2023207492A1 (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN104123236A (zh) | 用于使用预提升缓冲器的高吞吐量硬件加速的方法和系统 | |
CN110928496B (zh) | 一种在多控存储系统上的数据处理方法及装置 | |
CN110706148B (zh) | 人脸图像处理方法、装置、设备和存储介质 | |
CN109213429B (zh) | 存储管理方法和设备 | |
US9727474B2 (en) | Texture cache memory system of non-blocking for texture mapping pipeline and operation method of texture cache memory | |
US20100250651A1 (en) | Data access method for making asynchronous request to block device | |
CN111385294A (zh) | 数据处理方法、系统、计算机设备和存储介质 | |
CN101534319B (zh) | 一种解除指令间依赖关系的方法、系统和代理服务器 | |
CN108334457B (zh) | 一种io处理方法及装置 | |
CN112596669A (zh) | 一种基于分布式存储的数据处理方法及装置 | |
CN117215491A (zh) | 一种快速数据访问方法、快速数据访问装置及光模块 | |
CN108052296B (zh) | 一种数据读取方法、设备及计算机存储介质 | |
CN108572930A (zh) | 缓存控制方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20100728 |