CN108334457B - 一种io处理方法及装置 - Google Patents
一种io处理方法及装置 Download PDFInfo
- Publication number
- CN108334457B CN108334457B CN201810145883.3A CN201810145883A CN108334457B CN 108334457 B CN108334457 B CN 108334457B CN 201810145883 A CN201810145883 A CN 201810145883A CN 108334457 B CN108334457 B CN 108334457B
- Authority
- CN
- China
- Prior art keywords
- data block
- page
- index
- pages
- space
- 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
Images
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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种IO处理方法及装置,可包括:接收应用服务端发送的写IO请求;确定第一目标页;将第一数据块写入该第一目标页,生成所述第一数据块在第一目标页内的第一页内索引记录,以及生成该第一数据块的第一逻辑地址映射记录,并向应用服务端返回成功写入消息。其中,第一页内索引记录包括:为第一数据块分配的索引ID、第一数据块在第一目标页内的起始地址、以及第一数据块的数据长度;第一逻辑地址映射记录包括:写IO请求携带的逻辑地址与第一目标页地址、为第一数据块分配的索引ID二者之间对应关系,从而使得上层逻辑空间与下层物理空间解耦,使得上层逻辑空间为IO处理提供更多的资源,提高IO处理的性能。
Description
技术领域
本申请涉及计算机通信领域,尤其涉及一种IO处理方法及装置。
背景技术
存储设备通常可包括逻辑空间层和物理空间层,逻辑空间层又可以被称为LUN(Logical Unit Number,逻辑单元号)层,逻辑空间层和物理空间层通过逻辑地址映射记录建立联系。
当存储设备的LUN接收到写IO请求后,LUN可将该写IO请求携带的数据块写入到本设备的物理空间中,并生成该写IO请求携带的逻辑地址、写入到的物理地址的逻辑地址映射记录。
当存储设备的系统运行一段时间后,比如存储设备进行后台重删处理等数据处理后,存储设备会释放部分物理空间中的数据块,从而形成有效数据块和空闲物理空间间隔排布的情况,为了提高物理空间的利用率,存储设备可进行空间整理,以使得有效数据块可以保存在连续的物理空间中。
然而,在进行数据整理后,当数据块发生移动后,需要更改该数据块对应的逻辑地址映射记录中的物理地址。由于这种逻辑地址与物理地址的逻辑地址映射记录的构造方式,使得上层逻辑空间与下层物理空间高度耦合,当要修改逻辑地址映射记录时,需要上层逻辑空间进行修改,从而使得修改占用了大量的系统资源,致使系统读写IO性能受到影响。
发明内容
有鉴于此,本申请提供一种IO处理方法及装置。
具体地,本申请是通过如下技术方案实现的:
根据本申请的第一方面,提供一种IO处理方法,其特征在于,所述方法应用于存储设备,所述存储设备的物理空间被划分为若干页,所述方法包括:
接收应用服务端发送的写IO请求;
确定用于写入该写IO请求携带的第一数据块的第一目标页;
将所述第一数据块写入该第一目标页,生成所述第一数据块在该第一目标页内的第一页内索引记录,以及生成该第一数据块的第一逻辑地址映射记录,并向所述应用服务端返回成功写入消息。
其中,所述第一页内索引记录包括:为所述第一数据块分配的索引ID、所述第一数据块在所述第一目标页内的起始地址、以及所述第一数据块的数据长度;
所述第一逻辑地址映射记录包括:所述写IO请求携带的逻辑地址与所述第一目标页地址、为所述第一数据块分配的索引ID二者之间对应关系。
可选的,所述确定用于写入该写IO请求携带的第一数据块的第一目标页,包括:
在所述若干页中,选择已完成空间整理的、并且剩余空间容量最大的页作为第一目标页。
可选的,所述方法还包括:
接收所述应用服务端发送的读IO请求;
在已记录的多个逻辑地址映射记录中,查找与该读IO请求携带的第二逻辑地址对应的第二目标页地址以及第二索引ID;
在所述第二目标页的多个页内索引记录中,查找与该第二索引ID对应的起始地址;
根据查找到的起始地址,从所述第二目标页中读取数据块,并将该数据块返回所述应用服务端。
可选的,若读取到的数据块是压缩数据,则在所述将该数据块返回所述应用服务端之前,还包括:
对读取到的数据块进行解压缩;
将解压缩后的数据块写入到读IO请求对应的数据缓冲区。
可选的,所述方法还包括:
确定待进行空间整理的候选页;
当检测到经过上一次空间整理后的已整理页的剩余空间容量小于第一预设阈值,则将确定出的候选页中保存的有效数据块迁移至该候选页内连续的物理空间中,并将该有效数据块对应的页内索引记录中的第一起始地址修改为第二起始地址;
其中,所述第一起始地址为所述有效数据块迁移前所在该候选页内的物理空间的起始地址;所述第二起始地址为所述有效数据块迁移后所在所述该连续的物理空间中的起始地址。
可选的,所述确定待进行空间整理的候选页,包括:
监测各个页释放的空间容量;
将释放空间容量高于第二预设阈值的页添加在候选队列中;
从所述候选队列中,选择出释放空间容量最多的前N个页,确定为候选页;其中,N为大于0的整数。
根据本申请的第二方面,提供一种IO处理装置,其特征在于,所述装置应用于存储设备,所述存储设备的物理空间被划分为若干页,所述方法包括:
第一接收单元,用于接收应用服务端发送的写IO请求;
第一确定单元,用于确定用于写入该写IO请求携带的第一数据块的第一目标页;
写入单元,用于将所述第一数据块写入该第一目标页,生成所述第一数据块在该第一目标页内的第一页内索引记录,以及生成该第一数据块的第一逻辑地址映射记录,并向所述应用服务端返回成功写入消息。
其中,所述第一页内索引记录包括:为所述第一数据块分配的索引ID、所述第一数据块在所述第一目标页内的起始地址、以及所述第一数据块的数据长度;
所述第一逻辑地址映射记录包括:所述写IO请求携带的逻辑地址与所述第一目标页地址、为所述第一数据块分配的索引ID二者之间对应关系。
可选的,所述第一确定单元,具体用于在所述若干页中,选择已完成空间整理的、并且剩余空间容量最大的页作为第一目标页。
可选的,所述装置还包括:
第二接收单元,用于接收所述应用服务端发送的读IO请求;
第一查找单元,用于在已记录的多个逻辑地址映射记录中,查找与该读IO请求携带的第二逻辑地址对应的第二目标页地址以及第二索引ID;
第二查找单元,用于在所述第二目标页的多个页内索引记录中,查找与该第二索引ID对应的起始地址;
读取单元,用于根据查找到的起始地址,从所述第二目标页中读取数据块,并将该数据块返回所述应用服务端。
可选的,所述装置还包括:
解压缩单元,用于对读取到的数据块进行解压缩;将解压缩后的数据块写入到读IO请求对应的数据缓冲区。
可选的,所述装置还包括:
第二确定单元,用于确定待进行空间整理的候选页;
空间整理单元,用于当检测到经过上一次空间整理后的已整理页的剩余空间容量小于第一预设阈值,则将确定出的候选页中保存的有效数据块迁移至该候选页内连续的物理空间中,并将该有效数据块对应的页内索引记录中的第一起始地址修改为第二起始地址;其中,所述第一起始地址为所述有效数据块迁移前所在该候选页内的物理空间的起始地址;所述第二起始地址为所述有效数据块迁移后所在所述该连续的物理空间中的起始地址。
可选的,所述第二确定单元,用于监测各个页释放的空间容量;将释放空间容量高于第二预设阈值的页添加在候选队列中;从所述候选队列中,选择出释放空间容量最多的前N个页,确定为候选页;其中,N为大于0的整数。
本申请提供的逻辑地址映射记录、以及页内索引记录这种数据索引结构可以将上层逻辑空间和下层物理空间解耦,使得逻辑空间层处理逻辑空间层的事务,物理空间层处理物理空间层的事务,两者互不参与,使得逻辑空间层和物理空间层的资源都得到充分利用,并且实现起来简单灵活。
比如,一方面,在空间整理后,上层逻辑空间层(即LUN)不需要修改迁移数据块所对应的逻辑地址映射记录,而物理空间层只需要修改该迁移数据块对应的页内索引记录,从而大大节省了LUN的资源,使得LUN可以为读写IO请求的处理提供更多的资源,大大提高了LUN处理读写IO的性能。
另一方面,由于LUN不需要修改修改迁移数据块所对应的逻辑地址映射记录,所以也不需要软件程序来控制物理空间层通知上层LUN进行哪个逻辑地址映射记录的修改的通知机制,使得软件程序更为简单灵活。
附图说明
图1a是本申请示出的一种传统的空间整理的示意图;
图1b是本申请示出的一种传统的空间整理的示意图;
图2a是本申请一实施例示出的物理空间结构示意图;
图2b是本申请一实施例示出的页的构造示意图;
图3是本申请一示例性实施例示出的一种写IO请求的处理方法的流程图;
图4是本申请一示例性实施例示出的一种空间整理方法的流程图;
图5是本申请一示例性实施例示出的空间整理示意图;
图6是本申请一示例性实施例示出的一种读IO请求的处理方法流程图;
图7是本申请提供一种IO处理装置所在存储设备的硬件架构图;
图8是本申请一示例性实施例示出的一种IO处理装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
存储设备通常可包括逻辑空间层和物理空间层,逻辑空间层又可以被称为LUN层,逻辑空间层和物理空间层通过逻辑地址映射记录建立联系。通常逻辑地址映射记录保存了数据块的逻辑地址与物理地址的映射关系。
当存储设备接收到写IO请求后,可将该写IO请求携带的数据块写入到本设备的物理空间中,并生成该写IO请求携带的逻辑地址、写入到的物理空间地址的逻辑地址映射记录。
当存储设备的系统运行一段时间后,比如存储设备进行后台重删处理等数据处理后,存储设备会释放部分物理空间中的数据块,从而形成有效数据块和空闲物理空间间隔排布的情况,此时,存储设备可进行空间整理,以将碎片化的空闲空间整理成连续的空闲空间,有利于后续IO请求中数据的保存。
空间整理的好处在于:
1)通常,当未进行空间整理时,空闲空间是碎片分布的,当接收携带数据量较大的写IO时,如果查找不到连续的可以存储该数据的空闲空间时,则会导致数据写入失败,使得空闲空间没有得到充分利用。而在空间整理后,由于将碎片化的空闲空间整理成连续的空闲空间,所以在接收到写IO时,可以找到连续的空闲空间来写入数据,从而有效地提高了空闲空间的利用效率。
2)在空间前,空闲空间呈碎片化分布,IO请求数据写入是随机写入的,而在空间整理后,由于碎片化的空闲空间被整理成连续的空闲空间,所以IO请求的数据写入是顺序写入,而顺序写入的写入速度要高于随机写入的写入速度,所以进行空间整理,可以有效地提高IO请求数据写入的速度。
例如,如图1a所示,其中,LBA表示逻辑地址,PBA表示物理地址。假设物理空间中有三个连续的数据块,这里分别记为数据块1、数据块2和数据块3。数据块1的逻辑地址映射记录为LBA1-PBA1,数据块2的逻辑地址映射记录为LBA2-PBA2,数据块3的逻辑地址映射记录为LBA3-PBA3。
假设存储设备的系统在经过一段时间运行后,将数据块2的删除,将数据块2所在的物理空间回收。此时,数据块1和数据块3这两个有效的数据块之间就会存在释放了的空闲空间,使得有效数据块和空闲空间间隔排布。
参见图1b所示,存储设备可进行空间整理,使得有效数据块保存在连续的物理空间中。在进行空间整理时,存储设备将数据块3移动到数据块1之后,使得数据块3和数据块1储存在连续的物理空间中。当对数据块3进行移动后,就需要修改数据块3的逻辑地址映射记录中的PBA,比如,将数据块3移动前的逻辑地址映射记录LBA3-PBA3修改为数据块3移动后的逻辑地址映射记录LBA3-PBA2。
但是,这种逻辑地址与物理地址的逻辑地址映射记录的构造方式,使得上层逻辑空间与下层物理空间高度耦合。这样的不好之处在于:
1)当需要对逻辑地址映射记录进行修改时,比如如上例所示,修改逻辑地址映射记录中的物理地址时,需要上层逻辑空间层,即LUN参与修改。这种修改就会占用LUN的很多资源,使得LUN没有足够的资源来进行读、写IO的处理,致使LUN的读写IO的处理性能下降。
2)当需要修改逻辑地址映射记录时,需要软件设置很多机制,比如需要设置下层物理空间通知上层LUN修改哪个逻辑地址映射记录等机制,这些机制的设计就会大大增加软件的复杂程度。
有鉴于此,本申请提出一种IO处理方法,可以实现将上层逻辑空间与下层物理空间进行解耦,可以克服上述问题。
在介绍本申请的IO处理方法之前,首先对本申请的数据索引结构、以及物理空间的构造进行详细地介绍。
参见图2a,图2a是本申请一实施例示出的物理空间结构示意图。
在本申请中,存储设备的物理空间被划分为若干页,每一页表示一段物理子空间。每个页的大小是可以调节的。
参见图2b,图2b是本申请一实施例示出的页的构造示意图。
每个页都包含数据区,以及对应有一个页内索引表。
其中,页内索引表中记录了若干页内索引记录。每个页内索引记录包括:索引ID、数据块在该页的起始地址、以及数据块长度。索引ID用以唯一标识页内写入的数据块。
每个页还包括数据区,用以保存写入的数据块。
通常,页内索引表中的每一个页内索引记录与该页的数据区的数据块一一对应。
例如,如图2b所示,假设页内索引表记录了两个页内索引记录,分别记为页内索引记录1、页内索引记录2。数据区包括两个数据块,分别记为数据块1、数据块2。其中,页内索引记录1与数据块1对应,页内索引记录2与数据块2对应。
页内索引记录1中的0表示为数据块1分配的索引ID,100表示数据块1在该页的起始地址,200表示数据块1的数据长度。
页内索引记录2中的1表示为数据块2分配的索引ID,300表示数据块2的在该页的起始地址,200表示数据块2的数据长度。
需要说明的是,页内索引表作为页内数据块的索引部件,可具有多种保存方式。比如,可以如图2b所示,索引表和数据区保存在页内的指定位置。当然,也可以在物理空间中单独开辟出来一片空间,用以保存页内索引记录。这里不对页内索引表的保存方式进行具体地限定。
下面从写IO请求的处理、空间整理以及读IO请求的处理三个方面,来介绍本申请提供的IO处理方法。该IO处理方法可以应用在各个场景中,比如数据压缩场景等,这里不对该方法应用的场景进行具体地限定。
1)写IO请求的处理
参见图3,图3是本申请一示例性实施例示出的一种写IO请求的处理方法的流程图,可应用于存储设备,可包括如下所示步骤。
步骤301:存储设备可接收应用服务端发送的写IO请求;
步骤302:存储设备可确定用于写入该写IO请求携带的第一数据块的第一目标页;
在实现时,存储设备可以在该物理空间划分的多个页中,选择已经经过空间整理、并且剩余空间容量最大的页,作为第一目标页。
需要说明的是,为了方便表述,这里将写IO请求中携带的数据块,记为第一数据块。将写入该第一数据块的目标页记为第一目标页。本申请所述的第一、第二只是为了方便叙述,没有实际含义。
步骤303:存储设备可将该第一数据块写入该第一目标页,生成所述第一数据块在该第一目标页内的第一页内索引记录,以及生成该第一数据块的第一逻辑地址映射记录,并向所述应用服务端返回成功写入消息。
需要说明的是,每页还配置有一个索引ID池,该索引ID池内预配置了若干索引ID。当该页检测到有数据块写入时,可从该索引ID池中选择一个索引ID分配给该数据块。当该页中的某一数据块被删除,该数据块所在的物理空间被释放后,该数据块所分配的索引ID也会被回收到该索引ID池中。
在本申请实施例中,存储设备可将第一数据块写入该第一目标页中。当第一目标页检测到有第一数据块写入时,可以从索引ID池中选择一个索引ID,分配给该写入的第一数据块。
在第一数据块写入该第一目标页后,可生成该第一数据块在第一目标页中的第一页内索引记录,以及生成该第一数据块的第一逻辑地址映射记录。
其中,第一页内索引记录包括:为所述第一数据块分配的索引ID、所述第一数据块在所述第一目标页内的起始地址、以及所述第一数据块的数据长度;所述第一逻辑地址映射记录包括:所述写IO请求携带的逻辑地址与所述第一目标页地址、为所述第一数据块分配的索引ID二者之间对应关系。
例如,假设该写IO请求里携带的逻辑地址为LBA1,该写IO请求里携带的第一数据块的长度为100。LUN将该数据块写入到第一目标页中起始地址为100的物理空间内,为该第一数据块分配的索引ID为0。
则生成的针对第一数据块的第一页内索引记录如表1所示,生成的针对该第一数据块的第一逻辑地址映射记录如表2所示。
索引ID | 起始地址 | 数据块长度 |
0 | 100 | 100 |
表1
逻辑地址 | 页地址 | 索引ID |
LAB1 | 第一目标页地址 | 0 |
表2
还需要说明的是,该写IO的处理方式还可应用于压缩数据的场景。在该场景下,存储设备可在确定第一目标页前,先对该写IO请求中的第一数据块进行压缩处理。然后再将压缩后的第一数据块写入到第一目标页中。
2)空间整理
参见图4,图4是本申请一示例性实施例示出的一种空间整理方法的流程图,可应用于存储设备,可包括如下所示步骤。
步骤401:确定待进行空间整理的候选页。
在本申请中,当存储设备的系统运行一段时间后可释放页内一些物理空间,使得有效数据块和释放的物理空间间隔排布。为了提高物理空间的利用率,通常需要对物理空间进行整理。
在进行空间整理时,存储设备可在上述划分出的若干页中,确定待进行空间整理的候选页。
在实现时,存储设备可检测各个页释放的空间容量。存储设备可将释放空间容量高于预设阈值(这里记为第二预设阈值)的页添加在候选队列中。
然后,存储设备可从该候选队列中,选择出释放空间容量最多的前N个页,确定为候选页。其中,N为大于0的整数。
例如,存储设备可按照释放空间容量从大到小的顺序,将释放空间容量高于第二预设阈值的页依次添加在候选队列中。候选队列中越排在前的页,释放空间容量越大。然后,存储设备可选择该候选队列中的前N个页作为候选页。
又例如,存储设备可将释放容量高于第二预设阈值的多个页,按照释放空间容量的大小,划分为多个候选队列。然后对候选队列进行排队,排在前的候选队列的释放空间容量较大。然后,存储设备可将前M个候选队列中的页确定为候选页。其中,M为大于0的整数。
这里只是对选择候选页的示例性说明,不对其进行具体地限定。
步骤402:当检测到经过上一次空间整理后的已整理页的剩余空间容量小于第一预设阈值,则将确定出的候选页中保存的有效数据块迁移至该候选页内连续的物理空间中,并将该有效数据块对应的页内索引记录中的第一起始地址修改为第二起始地址。
在本申请实施例中,当存储设备检测到上一次空间整理后的所有已整理页的剩余空间容量小于预设阈值(这里记为第一预设阈值)时,存储设备可对上述确定出的候选页进行空间整理。
在进行空间整理时,存储设备可将候选页中保存的有效数据块迁移至该候选页内连续的物理空间中,并将迁移的有效数据块对应的页内索引记录中的第一起始地址修改为第二起始地址。
其中,该第一起始地址为所述有效数据块迁移前所在该候选页内的物理空间的起始地址,该第二起始地址为所述有效数据块迁移后所在所述该连续的物理空间中的起始地址。
例如,如图5所示,图5是本申请一示例性实施例示出的空间整理示意图。假设图5所示的页(这里记为页1)中,保存有三个数据块,分别记为数据块1、数据块2和数据块3。页1的页内索引表中包括三个页内索引记录,分别为页内索引记录1、页内索引记录2和页内索引记录3。其中,数据块1与页内索引记录1对应,数据块2与页内索引记录2对应,数据块3与页内索引记录3对应。
其中,假设页内索引记录1的索引ID为0,起始地址为100,数据块长度为100。
页内索引记录2的索引ID为1,起始地址为200,数据块长度为200。
页内索引记录3的索引ID为2,起始地址为400,数据块长度为50。
假设经过一段时间系统运行,存储设备删除了数据块2,并释放了数据块2所在的物理空间,即起始地址为200,结束地址为400的页1中的物理空间。
假设存储设备要对页1进行空间整理,在整理时,存储设备可将数据块3迁移至数据块1之后,使得数据块1和数据块3占用连续的物理空间。在数据块3迁移后,存储设备要将数据块3对应的页内索引记录3中的起始地址由100修改为200,不对索引ID以及数据块长度进行修改。此时,页内索引记录3的索引ID仍为2,起始地址被修改为200,数据块长度仍为200。
当然,存储设备也可以将数据块1和数据块3都进行迁移,迁移至连续的物理空间中,这与上文类似,不再赘述,只不过需要修改数据块1和数据块3对应的页内索引记录中的起始地址。
在本申请实施例中,候选页在经过空间整理后,就可写入写IO请求携带的数据。当存储设备检测到已经过空间整理的已整理页的剩余容量超过第三预设阈值时,存储设备可停止该空间整理。
从上述描述可知,本申请提供的逻辑地址映射记录、以及页内索引记录这种数据索引结构可以将上层逻辑空间和下层物理空间解耦,使得逻辑空间层处理逻辑空间层的事务,物理空间层处理物理空间层的事务,两者互不参与,使得逻辑空间层和物理空间层的资源都得到充分利用,并且实现起来简单灵活。
比如,一方面,在空间整理后,上层逻辑空间层(即LUN)不需要修改迁移数据块所对应的逻辑地址映射记录,而物理空间层只需要修改该迁移数据块对应的页内索引记录,从而大大节省了LUN的资源,使得LUN可以为读写IO请求的处理提供更多的资源,大大提高了LUN处理读写IO的性能。
另一方面,由于LUN不需要修改修改迁移数据块所对应的逻辑地址映射记录,所以也不需要软件程序来控制物理空间层通知上层LUN进行哪个逻辑地址映射记录的修改的通知机制,使得软件程序更为简单灵活。
3)读IO请求处理
参见图6,图6是本申请一示例性实施例示出的一种读IO请求的处理方法流程图,可应用于存储设备,可包括如下所示步骤。
步骤601:存储设备可接收所述应用服务端发送的读IO请求;
步骤602:存储设备可在已记录的多个逻辑地址映射记录中,查找与该读IO请求携带的第二逻辑地址对应的第二目标页地址以及第二索引ID;
步骤603:存储设备可在所述第二目标页的多个页内索引记录中,查找与该第二索引ID对应的起始地址;
步骤604:存储设备可根据查找到的起始地址,从所述第二目标页中读取数据块,并将该数据块返回所述应用服务端。
在本例中,若读取到的数据块为压缩数据块时,存储设备可对该数据块进行解压缩,然后将解压缩后的数据块写入到读IO请求对应的数据缓冲区,并将该解压缩后的数据块返回给应用服务端。
参见图7,本申请还提供一种IO处理装置所在存储设备的硬件架构图,该存储设备包括:通信接口701、处理器702、存储器703和总线704;其中,通信接口701、处理器702和存储器703通过总线704完成相互间的通信。
其中,通信接口701,用于与应用服务端通信。处理器702可以是一个CPU,存储器703可以是非易失性存储器(non-volatile memory),并且存储器703中存储有IO处理的逻辑指令,处理器702可以执行存储器703中存储的IO处理的逻辑指令,以实现IO处理的功能。
至此,完成图7所示的硬件结构描述。
请参考图8,图8是本申请一示例性实施例示出的一种IO处理装置的框图。该IO处理装置可应用于存储设备,可包括如下所示单元。
第一接收单元801,用于接收应用服务端发送的写IO请求;
第一确定单元802,用于确定用于写入该写IO请求携带的第一数据块的第一目标页;
写入单元803,用于将所述第一数据块写入该第一目标页,生成所述第一数据块在该第一目标页内的第一页内索引记录,以及生成该第一数据块的第一逻辑地址映射记录,并向所述应用服务端返回成功写入消息。
其中,所述第一页内索引记录包括:为所述第一数据块分配的索引ID、所述第一数据块在所述第一目标页内的起始地址、以及所述第一数据块的数据长度;
所述第一逻辑地址映射记录包括:所述写IO请求携带的逻辑地址与所述第一目标页地址、为所述第一数据块分配的索引ID二者之间对应关系。
可选的,所述第一确定单元802,具体用于在所述若干页中,选择已完成空间整理的、并且剩余空间容量最大的页作为第一目标页。
可选的,所述装置还包括:
第二接收单元804,用于接收所述应用服务端发送的读IO请求;
第一查找单元805,用于在已记录的多个逻辑地址映射记录中,查找与该读IO请求携带的第二逻辑地址对应的第二目标页地址以及第二索引ID;
第二查找单元806,用于在所述第二目标页的多个页内索引记录中,查找与该第二索引ID对应的起始地址;
读取单元807,用于根据查找到的起始地址,从所述第二目标页中读取数据块,并将该数据块返回所述应用服务端。
可选的,所述装置还包括:
解压缩单元808,用于对读取到的数据块进行解压缩;将解压缩后的数据块写入到读IO请求对应的数据缓冲区。
可选的,所述装置还包括:
第二确定单元809,用于确定待进行空间整理的候选页;
空间整理单元810,用于当检测到经过上一次空间整理后的已整理页的剩余空间容量小于第一预设阈值,则将确定出的候选页中保存的有效数据块迁移至该候选页内连续的物理空间中,并将该有效数据块对应的页内索引记录中的第一起始地址修改为第二起始地址;其中,所述第一起始地址为所述有效数据块迁移前所在该候选页内的物理空间的起始地址;所述第二起始地址为所述有效数据块迁移后所在所述该连续的物理空间中的起始地址。
可选的,所述第二确定单元809,用于监测各个页释放的空间容量;将释放空间容量高于第二预设阈值的页添加在候选队列中;从所述候选队列中,选择出释放空间容量最多的前N个页,确定为候选页;其中,N为大于0的整数。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (12)
1.一种IO处理方法,其特征在于,所述方法应用于存储设备,所述存储设备的物理空间被划分为若干页,所述方法包括:
接收应用服务端发送的写IO请求;
确定用于写入该写IO请求携带的第一数据块的第一目标页;
将所述第一数据块写入该第一目标页,生成所述第一数据块在该第一目标页内的第一页内索引记录,以及生成该第一数据块的第一逻辑地址映射记录,并向所述应用服务端返回成功写入消息;
其中,所述第一页内索引记录包括:为所述第一数据块分配的索引ID、所述第一数据块在所述第一目标页内的起始地址、以及所述第一数据块的数据长度;
所述第一逻辑地址映射记录包括:所述写IO请求携带的逻辑地址与所述第一目标页地址、为所述第一数据块分配的索引ID二者之间对应关系。
2.根据权利要求1所述的方法,其特征在于,所述确定用于写入该写IO请求携带的第一数据块的第一目标页,包括:
在所述若干页中,选择已完成空间整理的、并且剩余空间容量最大的页作为第一目标页。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述应用服务端发送的读IO请求;
在已记录的多个逻辑地址映射记录中,查找与该读IO请求携带的第二逻辑地址对应的第二目标页地址以及第二索引ID;
在所述第二目标页的多个页内索引记录中,查找与该第二索引ID对应的起始地址;
根据查找到的起始地址,从所述第二目标页中读取数据块,并将该数据块返回所述应用服务端。
4.根据权利要求3所述的方法,其特征在于,若读取到的数据块是压缩数据,则在所述将该数据块返回所述应用服务端之前,还包括:
对读取到的数据块进行解压缩;
将解压缩后的数据块写入到读IO请求对应的数据缓冲区。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定待进行空间整理的候选页;
当检测到经过上一次空间整理后的已整理页的剩余空间容量小于第一预设阈值,则将确定出的候选页中保存的有效数据块迁移至该候选页内连续的物理空间中,并将该有效数据块对应的页内索引记录中的第一起始地址修改为第二起始地址;
其中,所述第一起始地址为所述有效数据块迁移前所在该候选页内的物理空间的起始地址;所述第二起始地址为所述有效数据块迁移后所在该连续的物理空间中的起始地址。
6.根据权利要求5所述的方法,其特征在于,所述确定待进行空间整理的候选页,包括:
监测各个页释放的空间容量;
将释放空间容量高于第二预设阈值的页添加在候选队列中;
从所述候选队列中,选择出释放空间容量最多的前N个页,确定为候选页;其中,N为大于0的整数。
7.一种IO处理装置,其特征在于,所述装置应用于存储设备,所述存储设备的物理空间被划分为若干页,所述装置包括:
第一接收单元,用于接收应用服务端发送的写IO请求;
第一确定单元,用于确定用于写入该写IO请求携带的第一数据块的第一目标页;
写入单元,用于将所述第一数据块写入该第一目标页,生成所述第一数据块在该第一目标页内的第一页内索引记录,以及生成该第一数据块的第一逻辑地址映射记录,并向所述应用服务端返回成功写入消息;
其中,所述第一页内索引记录包括:为所述第一数据块分配的索引ID、所述第一数据块在所述第一目标页内的起始地址、以及所述第一数据块的数据长度;
所述第一逻辑地址映射记录包括:所述写IO请求携带的逻辑地址与所述第一目标页地址、为所述第一数据块分配的索引ID二者之间对应关系。
8.根据权利要求7所述的装置,其特征在于,所述第一确定单元,具体用于在所述若干页中,选择已完成空间整理的、并且剩余空间容量最大的页作为第一目标页。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二接收单元,用于接收所述应用服务端发送的读IO请求;
第一查找单元,用于在已记录的多个逻辑地址映射记录中,查找与该读IO请求携带的第二逻辑地址对应的第二目标页地址以及第二索引ID;
第二查找单元,用于在所述第二目标页的多个页内索引记录中,查找与该第二索引ID对应的起始地址;
读取单元,用于根据查找到的起始地址,从所述第二目标页中读取数据块,并将该数据块返回所述应用服务端。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
解压缩单元,用于对读取到的数据块进行解压缩;将解压缩后的数据块写入到读IO请求对应的数据缓冲区。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二确定单元,用于确定待进行空间整理的候选页;
空间整理单元,用于当检测到经过上一次空间整理后的已整理页的剩余空间容量小于第一预设阈值,则将确定出的候选页中保存的有效数据块迁移至该候选页内连续的物理空间中,并将该有效数据块对应的页内索引记录中的第一起始地址修改为第二起始地址;其中,所述第一起始地址为所述有效数据块迁移前所在该候选页内的物理空间的起始地址;所述第二起始地址为所述有效数据块迁移后所在该连续的物理空间中的起始地址。
12.根据权利要求11所述的装置,其特征在于,所述第二确定单元,用于监测各个页释放的空间容量;将释放空间容量高于第二预设阈值的页添加在候选队列中;从所述候选队列中,选择出释放空间容量最多的前N个页,确定为候选页;其中,N为大于0的整数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810145883.3A CN108334457B (zh) | 2018-02-12 | 2018-02-12 | 一种io处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810145883.3A CN108334457B (zh) | 2018-02-12 | 2018-02-12 | 一种io处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108334457A CN108334457A (zh) | 2018-07-27 |
CN108334457B true CN108334457B (zh) | 2020-06-30 |
Family
ID=62929266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810145883.3A Active CN108334457B (zh) | 2018-02-12 | 2018-02-12 | 一种io处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108334457B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11288181B2 (en) * | 2019-03-07 | 2022-03-29 | Silicon Motion, Inc. | Flash memory initialization scheme for writing boot up information into selected pages averagely and randomly distributed over more pages and correspondingly method for reading boot up information from selected pages |
CN115079957B (zh) * | 2022-07-20 | 2023-08-04 | 阿里巴巴(中国)有限公司 | 请求处理方法、装置、控制器、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101493794A (zh) * | 2009-01-19 | 2009-07-29 | 成都市华为赛门铁克科技有限公司 | 一种闪存数据处理方法及装置 |
CN103176752A (zh) * | 2012-07-02 | 2013-06-26 | 晶天电子(深圳)有限公司 | 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器 |
CN103729303A (zh) * | 2014-01-20 | 2014-04-16 | 飞天诚信科技股份有限公司 | 一种Flash的数据写入和读取方法 |
CN103874980A (zh) * | 2011-08-16 | 2014-06-18 | 净睿存储股份有限公司 | 存储系统中的映射 |
CN105824759A (zh) * | 2014-10-31 | 2016-08-03 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9495288B2 (en) * | 2013-01-22 | 2016-11-15 | Seagate Technology Llc | Variable-size flash translation layer |
-
2018
- 2018-02-12 CN CN201810145883.3A patent/CN108334457B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101493794A (zh) * | 2009-01-19 | 2009-07-29 | 成都市华为赛门铁克科技有限公司 | 一种闪存数据处理方法及装置 |
CN103874980A (zh) * | 2011-08-16 | 2014-06-18 | 净睿存储股份有限公司 | 存储系统中的映射 |
CN103176752A (zh) * | 2012-07-02 | 2013-06-26 | 晶天电子(深圳)有限公司 | 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器 |
CN103729303A (zh) * | 2014-01-20 | 2014-04-16 | 飞天诚信科技股份有限公司 | 一种Flash的数据写入和读取方法 |
CN105824759A (zh) * | 2014-10-31 | 2016-08-03 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108334457A (zh) | 2018-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108459826B (zh) | 一种处理io请求的方法及装置 | |
EP3726364B1 (en) | Data write-in method and solid-state drive array | |
US20220137849A1 (en) | Fragment Management Method and Fragment Management Apparatus | |
US9507720B2 (en) | Block storage-based data processing methods, apparatus, and systems | |
US20180232314A1 (en) | Method for storing data by storage device and storage device | |
CN108733306B (zh) | 一种文件合并方法及装置 | |
US10503424B2 (en) | Storage system | |
US8694563B1 (en) | Space recovery for thin-provisioned storage volumes | |
CN107122130B (zh) | 一种数据重删方法及装置 | |
WO2017149592A1 (ja) | ストレージ装置 | |
US20170364300A1 (en) | Controller, flash memory apparatus, method for identifying data block stability, and method for storing data in flash memory apparatus | |
US20210096983A1 (en) | System controller and system garbage collection method | |
CN107193503B (zh) | 一种数据重删方法及存储设备 | |
US8799572B2 (en) | Sliding-window multi-class striping | |
US20240143219A1 (en) | Software-hardware combination method for internal mapping address query of zoned namespace | |
US20190243758A1 (en) | Storage control device and storage control method | |
WO2017006675A1 (ja) | 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム | |
CN110928496B (zh) | 一种在多控存储系统上的数据处理方法及装置 | |
CN108334457B (zh) | 一种io处理方法及装置 | |
CN104408126B (zh) | 一种数据库的持久化写入方法、装置和系统 | |
US11288006B2 (en) | Storage system and volume copying method where changes to address conversion table is rolled back | |
JP2021135538A (ja) | ストレージ制御装置及びストレージ制御プログラム | |
JP6100927B2 (ja) | 情報処理装置 | |
US10007437B2 (en) | Management apparatus, storage system, method, and computer readable medium | |
CN114974365A (zh) | Ssd有限窗口数据去重识别方法、装置和计算机设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |