CN110007860A - 基于lsm数据库的垃圾处理的方法、固态硬盘以及存储装置 - Google Patents
基于lsm数据库的垃圾处理的方法、固态硬盘以及存储装置 Download PDFInfo
- Publication number
- CN110007860A CN110007860A CN201910243592.2A CN201910243592A CN110007860A CN 110007860 A CN110007860 A CN 110007860A CN 201910243592 A CN201910243592 A CN 201910243592A CN 110007860 A CN110007860 A CN 110007860A
- Authority
- CN
- China
- Prior art keywords
- log
- hard disk
- solid state
- superblock
- state hard
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于LSM数据库的垃圾处理方法、固态硬盘及存储装置。该方法包括:在固态硬盘中创建与待写入数据对应的日志;将待写入数据写入对应的日志中;在满足执行合并操作的条件下,对固态硬盘中日志执行合并操作;删除合并后的日志并标识被删除的日志所在的超级块为数据无效状态。通过上述方式,本发明能够灵活地对存储在固态硬盘中的LSM数据库的数据进行垃圾处理,降低写放大。
Description
技术领域
本申请涉及存储技术领域,特别是涉及一种基于LSM数据库的垃圾处理的方法、固态硬盘以及存储装置。
背景技术
LSM(Log Structured Merge Trees)数据库引擎,把操作固态硬盘的随机写IO转换成顺序写IO,提高数据库的写性能,并提供相对较好的读性能。
LSM数据库引擎的写操作的具体包括:当有写操作时,将写入数据首先写入内存的缓冲区内,内存中通过特定数据结构记录写入数据的先后顺序,同时将写入数据追加写到固态硬盘的logfile文件中,以备必要时恢复。内存中的写入数据定时或按固定大小地刷到固态硬盘,以在固态硬盘上存储多个有序的sstfile文件。
其中,随着越来越多写操作,固态硬盘上积累的sstfile文件也越来越多,这些文件不可写且有序,LSM数据库会定时对sstfile文件进行合并操作(compaction),合并完成删除相应的sstfile文件,减少文件数量。
众所周知,在固定硬盘技术领域,垃圾处理是固态硬盘固件设计中的重要一环,也是影响固态硬盘稳定性能的主要因素。其中,固态硬盘中的闪存(NAND)的颗粒特性为:多个物理块(Block)形成闪存,物理块必须擦除后才能写入数据。如果在擦除前某物理块中存在部分有效数据页(存储了用户数据的物理页),为了不丢失用户数据,必须将有效物理页中的数据读出来写到另一个物理块中,然后才能擦除该物理块,这就是垃圾处理。
使用固态硬盘做LSM数据库的存储介质时,LSM数据库引擎所做的数据合并操作也即进行的垃圾处理是不能被固态硬盘所感知的,从而导致LSM数据库引擎进行了合并操作也即垃圾处理后,固态硬盘还会对相同的数据再进行一次垃圾处理,这样就导致了数据重复搬移,增加写放大。
发明内容
本申请提供一种基于LSM数据库的垃圾处理的方法、固态硬盘以及存储装置,能够灵活地对LSM数据库的数据进行垃圾处理,降低写放大。
为解决上述技术问题,本申请采用的一个技术方案是:提供一种基于LSM数据库的垃圾处理方法,该方法包括:在固态硬盘中创建与待写入数据对应的日志,其中,待写入的数据为LSM数据库中的sstfile文件或者logfile文件;将待写入数据写入对应的日志中;在满足执行合并操作的条件下,对固态硬盘中日志执行合并操作;删除合并后的日志并标识被删除的日志所在的超级块为数据无效状态,其中,超级块为固态硬盘中分配用于存储各日志的物理地址空间。
其中,该方法进一步包括:获取固态硬盘中处于空闲状态的超级块的数量;获取固态硬盘的访问强度;检测处于空闲状态的超级块的数量和访问强度是否满足预定条件;其中,当检测结果为处于空闲状态的超级块的数量和访问强度满足预定条件时,执行合并操作的条件被满足。
其中,对固态硬盘中各日志执行合并操作的步骤包括:获取各超级块中存储的日志的数量以及各日志对应的数据量;根据日志的数量以及各日志对应的数据量获取各超级块对应的有效数据量;合并有效数据量最小的超级块。
其中,在固态硬盘中创建与待写入数据对应的日志的步骤包括:获取待写入数据所对应的分组标识,其中,每一分组标识对应一超级块,,每一超级块包括第一预定大小的多个第一逻辑块,所有超级块对应一入口参数列表,每一超级块中的第一逻辑块与入口参数列表中的一入口参数相对应;在与分组标识对应的超级块中动态分配用于存储日志的空闲的第一逻辑块。
其中,将待写入数据写入对应的日志中的步骤进一步包括:将写入数据后的日志划分为第二预定大小的多个第二逻辑块;
查找超级块中空闲的第一逻辑块对应的入口参数;将第二逻辑块中的内容写入对应的空闲的第一逻辑块中;修改已完成写入操作的第一逻辑块对应的入口参数为日志的日志标识和已写入的第二逻辑块的逻辑块标识。
其中,该方法进一步包括:将写入入口参数的日志标识和逻辑块标识作为哈希键值,根据哈希键值获取哈希数值;根据哈希数值获取哈希桶的索引值;检测索引值对应的哈希桶中是否为空;若检测结果为哈希桶为空,则将入口参数的下标保存在索引值对应的哈希桶中;若检测结果为哈希桶不为空,则将入口参数的下标保存在对应的哈希链接中。
其中,在固态硬盘中创建与待写入数据对应的日志的步骤之前,方法进一步包括:获取LSM数据库中的分组标识;在固态硬盘中为不同的分组标识创建对应的超级块,其中,LSM数据库中的同一层sstfile文件属于同一分组标识。
其中,该方法进一步包括:将各超级块划分为多个第一预定大小的第一逻辑块;按照各超级块中第一逻辑块的数量的总和创建与所有超级块对应的入口参数列表。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种固态硬盘,该固态硬盘包括处理器、与处理器耦接的存储控制器,其中,存储控制器存储有用于实现上述任一项的基于LSM数据库的垃圾处理的方法的程序指令;处理器用于执行存储控制器存储的程序指令以对固态硬盘进行垃圾处理;其中,LSM数据库通过SPDK与固态硬盘进行交互。
为解决上述技术问题,本申请采用的又一个技术方案是:提供一种存储装置,存储有能够实现上述任一方法的程序文件。
本申请的有益效果是:本发明的基于LSM数据库的垃圾处理的方法、固态硬盘以及存储装置通过在固态硬盘中创建与待写入数据对应的日志;将待写入数据写入对应的日志中;在满足执行合并操作的条件下,对固态硬盘中日志执行合并操作;删除合并后的日志并标识被删除的日志所在的超级块为数据无效状态。通过上述方式,本发明能够灵活地对存储在固态硬盘中的LSM数据库的数据进行垃圾处理,降低写放大。
附图说明
图1是本发明第一实施例的基于LSM数据库的垃圾处理方法的流程示意图;
图2是本发明第二实施例的基于LSM数据库的垃圾处理方法的流程示意图;
图3是本发明实施例的超级块的结构示意图;
图4是本发明实施例的超级块、日志和入口参数列表的关系示意图;
图5是本发明实施例的哈希桶、入口参数列表和哈希链接的关系示意图;
图6是本发明实施例的固态硬盘的结构示意图;
图7是LSM数据库与图6所示的固态硬盘的链接示意图;
图8是本发明实施例的存储装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请中的术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括至少一个该特征。本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。本申请实施例中所有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
图1是本发明第一实施例的基于LSM数据库的垃圾处理的方法的流程图。需注意的是,若有实质上相同的结果,本发明的方法并不以图1所示的流程顺序为限。如图1所示,该方法包括步骤:
步骤S101:在固态硬盘中创建与待写入数据对应的日志。
在本实施例中,固态硬盘提供的所有接口使用nvme协议来承载,即在nvme协议上定制nvme命令来实现对应的接口;为了提供更高的性能,LSM数据库使用SPDK直接发送对应的nvme命令与固态硬盘进行交互。其中,nvme命令包括创建日志CreatLog、追加写入日志AppendLog、读日志ReadLog、删除日志DeleteLog等命令。
在步骤S101中,LSM数据库利用创建日志命令CreatLog在固态硬盘中创建与待写入的数据对应的日志,其中,待写入数据为LSM数据库中的sstfile文件或者logfile文件。
步骤S102:将待写入数据写入对应的日志中。
在步骤S102中,LSM数据库利用追加写入日志命令AppendLog将待写入数据写入对应的日志中,并存储在固态硬盘的超级块中。
步骤S103:在满足执行合并操作的条件下,对固态硬盘中日志执行合并操作。
在步骤S103中,当固态硬盘满足执行合并操作的触发条件后,对固态硬盘中日志执行合并操作。也就是说,对固态硬盘中的日志执行合并操作的时间是可以灵活进行配置的。
其中,在合并的过程中,LSM数据库利用读日志命令ReadLog将待合并的日志中的有效数据读出并转移到另一有效的物理地址空间。
步骤S104:删除合并后的日志并标识被删除的日志所在的超级块为数据无效状态,其中,超级块为固态硬盘中分配用于存储各日志的物理地址空间。
在步骤S104中,LSM数据库利用删除日志命令DeleteLog删除合并后的日志,同时将该日志所在的超级块标识为数据无效状态,从而达到快速释放该超级块的目的。
图2是本发明第二实施例的基于闪存的垃圾处理的方法的流程示意图。需注意的是,若有实质上相同的结果,本发明的方法并不以图2所示的流程顺序为限。如图2所示,该方法包括如下步骤:
步骤S201:获取LSM数据库中的分组标识,在固态硬盘中为不同的分组标识所对应的分组创建对应的超级块。
在步骤S201中,LSM数据库中的分组标识与LSM数据库中sstfile文件所在的层标识相对应,也就是说,LSM数据库中的同一层sstfile文件属于同一分组标识。固态硬盘为不同的分组标识所对应的分组创建对应的超级块,其中,超级块为固态硬盘中分配用于存储数据的物理地址空间。
步骤S202:将各超级块划分为多个第一预定大小的第一逻辑块。
在步骤S202中,将各超级块划分为多个第一预定大小例如1MB的第一逻辑块,以利用超级块中的第一逻辑块依次来存储待写入数据。
图3为本发明实施例的超级块的结构示意图。如图3所示,超级块包括多个第一逻辑块BLOCKN(N=0,1,2.....)。其中,超级块中的第一逻辑块是动态分配的,当已分配的第一逻辑块完成存储操作后,若未完成所有待写入数据的存储,则继续分配一个新的第一逻辑块来继续存储待写入数据。
步骤S203:按照各超级块中第一逻辑块的数量的总和创建与各超级块对应的入口参数列表。
在步骤S203中,按照超级块提供的第一逻辑块的个数申请保存入口参数列表entry table的空间以创建入口参数列表entry table。
具体来说,假设所有超级块的大小为1TB,第一逻辑块的大小为1MB,入口参数列表中每个入口参数entry为4个字节,则入口参数列表所需的空间为4MB。
其中,入口参数entry不需要保存超级块的标识符和第一逻辑块的逻辑标识符也即是第几个超级块中的第几个第一逻辑块,其可以通过入口参数entry在入口参数列表entry table中的下标也即入口参数entry在入口参数列表entry table中的位置对应计算出,也就是说,每一第一逻辑块和入口参数entry一一对应。
步骤S204:在固态硬盘中创建与待写入数据对应的日志。
在步骤S204中,在固态硬盘中创建与待写入数据对应的日志的步骤包括:获取待写入数据所对应的分组标识,在与分组标识对应的超级块中动态分配用于存储日志的空闲的第一逻辑块。
LSM数据库在创建日志log时,需要知道该日志log的分组标识,其中,日志log的分组标识即为待写入数据的分组标识。另外,在创建日志log时,对应的日志log的空间分配使用分组标识所对应的分组创建的超级块上进行分配。
步骤S205:将待写入数据写入对应的日志中。
在步骤S205中,将待写入数据写入对应的日志中的步骤包括:将待写入数据写入日志log并将该日志log划分为第二预定大小的多个第二逻辑块BlockN(N=0,1,2...);查找空闲的第一逻辑块对应的入口参数entry;将第二逻辑块中的内容写入对应的空闲的第一逻辑块中;修改已完成写入操作的第一逻辑块对应的入口参数entry为该日志log的日志标识和已写入的第二逻辑块的逻辑块标识(如图4所示)。
也就是说,当待写入数据作为日志被保存在固态硬盘的超级块的第一逻辑块中后,会同时更新与该第一逻辑块对应的入口参数的信息。
优选地,第二逻辑块和第一逻辑块的大小相同例如同为1MB。
优选地,将待写入数据写入对应的日志中的步骤进一步包括:将写入入口参数的日志标识log Id和逻辑块标识block id作为哈希键值hash key,根据哈希键值hash key获取哈希数值hash value;根据哈希数值hash value获取哈希桶bucket的索引值index;检测与索引值index对应的哈希桶bucket是否为空;若检测结果为哈希桶bucket为空,则将入口参数entry的下标保存在索引值index对应的哈希桶bucket中;若检测结果为哈希桶bucket不为空,则将入口参数entry的下标保存在对应的哈希链接hashlink中。
需要强调的是,若检测结果为哈希桶bucket不为空,也就是说,证明当前发生了哈希冲突,这个时候需要根据哈希桶bucket中保存的值也即入口参数的下标,找到对应的哈希链接hashlink的下标,其中,哈希链接hashlink的下标与入口参数entry的下标一一对应,然后在与该下标对应的哈希链接hashlink中保存最近的入口参数的下标。如果与该下标对应的哈希链接hashlink中也有值,证明还有冲突,需要根据与该下标对应的哈希链接hashlink中保存的值也即入口参数entry的下标,继续查找下一个下标的哈希链接hashlink,直到没有冲突为止。
举例来说,如图5所示,哈希桶bucket不为空,其保存的值为2,则寻找下标为2的哈希链接hashlink,发现其保存的值为4,则继续寻找下标为4的哈希链接hashlink,发现其保存的值为6,继续寻找下标为6的哈希链接hashlink,发现其为空,则可以存储待保存的入口参数entry的下标。
步骤S206:在满足执行合并操作的条件下,对固态硬盘中日志执行合并操作。
在步骤S206中,判断执行合并操作的条件是否被满足的操作具体为:获取固态硬盘中处于空闲状态的超级块的数量;获取固态硬盘的访问强度;检测处于空闲状态的超级块的数量和访问强度是否满足预定条件;其中,当检测结果为处于空闲状态的超级块的数量和访问强度满足预定条件时,执行合并操作的条件被满足。其中,固态硬盘的访问强度即为固态硬盘的业务负载,其也可以理解为窗口时间也即单位时间内对固态硬盘的访问次数。
具体来说,当检测结果为处于空闲状态的超级块的数量小于第一预定阈值且固态硬盘的访问强度小于第二预定阈值时,执行合并操作。也就是说,当处于空闲状态的超级块的数量比较小、固态硬盘的访问强度比较小时,执行合并操作,此时可以规避合并操作对主机访问固态硬盘的操作的影响。反之,当检测结果为处于空闲状态的超级块的数量大于等于第一预定阈值或固态硬盘的访问强度大于等于第二预定阈值时,不执行合并操作,以保证主机对固态硬盘的访问质量。
对固态硬盘中日志执行合并操作的步骤包括:获取各超级块中存储的日志的数量以及各日志对应的数据量,其可以通过遍历入口参数entry获得;根据日志的数量以及各日志对应的数据量获取各超级块对应的有效数据量;合并有效数据量最小的超级块。也就是说,LSM数据库可以根据固态硬盘内部的处于空闲状态的超级块的数量,结合当前对固态硬盘的访问强度,来选择合适的时间对固态硬盘中有效数据量最小的超级块进行合并操作。
其中,在对超级块进行合并操作是需要读出超级块中的数据,其读出数据的操作具体为:根据读IO的逻辑地址lba获取对应的日志标识log Id和逻辑块标识block id;将日志标识log Id和逻辑块标识block id作为哈希键值hash key计算得到哈希数值hashvalue;根据哈希数据hash key生成哈希桶bucket的索引值index;根据哈希桶bucket的索引值index获取入口参数entry的下标;判断入口参数entry保存的日志标识log id、逻辑块标识block id与这次读IO的日志标识log id和逻辑块标识block id是否相等,如果相等则根据入口参数entry的下标计算对应的超级块的标识和第一逻辑块的逻辑块标识,并读取该第一逻辑块中的数据;如果不等则查找哈希链接hashlink中保存的入口参数entry下标,再次进行比较,直到匹配。
步骤S207:删除合并后的日志并标识被删除的日志所在的超级块为数据无效状态。
在步骤S207中,删除合并后的超级块中的各日志并将该超级块标识为数据无效状态,从而释放该超级块,以达到垃圾处理的目的。
请参阅图6,图6为本发明实施例的固态硬盘的结构示意图。如图6所示,该固态硬盘10包括处理器11及和处理器耦接的存储控制器12。
存储控制器12存储有用于实现上述任一实施例所述的基于LSM数据库的垃圾处理的方法的程序指令。
处理器12用于执行存储控制器12存储的程序指令以对固态硬盘进行垃圾处理。
其中,处理器11还可以称为CPU(Central Processing Unit,中央处理单元)。处理器11可能是一种集成电路芯片,具有信号的处理能力。处理器11还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
请一并参考图7,图7是LSM数据库与图6所示的固态硬盘的链接示意图。如图7所示,LSM数据库20通过SPDK30与固态硬盘进10行交互,其中,SPDK30为存储性能开发工具包。
具体来说,固态硬盘10提供的所有接口使用nvme协议来承载,即在nvme协议上定制nvme命令来实现对应的接口;为了提供更高的性能,LSM数据库20使用SPDK30直接发送对应的nvme命令与固态硬盘10进行交互。其中,nvme命令包括创建日志CreatLog、追加写入日志AppendLog、读日志ReadLog、删除日志DeleteLog等命令。
换个角度来说,固态硬盘10是以日志log形式提供的固态硬盘10,通过新增特殊的nvme命令来实现LSM数据库20和固态硬盘10的交互。
参阅图8,图8为本发明实施例的存储装置的结构示意图。本发明实施例的存储装置存储有能够实现上述所有方法的程序文件21,其中,该程序文件21可以以软件产品的形式存储在上述存储装置中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储装置包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
本申请的有益效果是:本发明的基于LSM数据库的垃圾处理的方法、固态硬盘以及存储装置通过在固态硬盘中创建与待写入数据对应的日志;将待写入数据写入对应的日志中;在满足执行合并操作的条件下,对固态硬盘中日志执行合并操作;删除合并后的日志并标识被删除的日志所在的超级块为数据无效状态。通过上述方式,本发明能够避免现有技术中的LSM数据库引擎和固态硬盘对相同的数据进行重复的垃圾处理。进一步,本发明能够灵活地对存储在固态硬盘中的LSM数据库的数据进行垃圾处理,降低写放大。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种基于LSM数据库的垃圾处理方法,其特征在于,所述方法包括:
在固态硬盘中创建与待写入数据对应的日志,其中,所述待写入的数据为所述LSM数据库中的sstfile文件或者logfile文件;
将所述待写入数据写入对应的所述日志中;
在满足执行合并操作的条件下,对所述固态硬盘中所述日志执行合并操作;
删除合并后的所述日志并标识被删除的所述日志所在的超级块为数据无效状态,其中,所述超级块为所述固态硬盘中分配用于存储各所述日志的物理地址空间。
2.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
获取所述固态硬盘中处于空闲状态的所述超级块的数量;
获取所述固态硬盘的访问强度;
检测处于空闲状态的所述超级块的所述数量和所述访问强度是否满足预定条件;
其中,当检测结果为处于空闲状态的所述超级块的所述数量和所述访问强度满足预定条件时,执行合并操作的条件被满足。
3.根据权利要求1或2所述的方法,其特征在于,所述对所述固态硬盘中所述日志执行合并操作的步骤包括:
获取各超级块中存储的所述日志的数量以及各所述日志对应的数据量;
根据所述日志的数量以及各所述日志对应的数据量获取各所述超级块对应的有效数据量;
合并有效数据量最小的所述超级块。
4.根据权利要求1所述的方法,其特征在于,所述在固态硬盘中创建与待写入数据对应的日志的步骤包括:
获取待写入数据所对应的分组标识,其中,每一所述分组标识对应一所述超级块,每一所述超级块包括第一预定大小的多个第一逻辑块,所有所述超级块对应一入口参数列表,每一所述超级块中的所述第一逻辑块与所述入口参数列表中的一入口参数相对应;
在与所述分组标识对应的所述超级块中动态分配用于存储所述日志的空闲的所述第一逻辑块。
5.根据权利要求4所述的方法,其特征在于,所述将所述待写入数据写入对应的所述日志中的步骤包括:
将所述待写入数据写入所述日志并将所述日志划分为第二预定大小的多个第二逻辑块;
查找所述超级块中空闲的所述第一逻辑块对应的所述入口参数;
将所述第二逻辑块中的内容写入对应的空闲的所述第一逻辑块中;
修改已完成写入操作的所述第一逻辑块对应的所述入口参数为所述日志的日志标识和已写入的所述第二逻辑块的逻辑块标识。
6.根据权利要求5所述的方法,其特征在于,所述将所述待写入数据写入对应的所述日志中的步骤进一步包括:
将写入所述入口参数的所述日志标识和所述逻辑块标识作为哈希键值,根据所述哈希键值获取哈希数值;
根据所述哈希数值获取哈希桶的索引值;
检测与所述索引值对应的所述哈希桶是否为空;
若检测结果为所述哈希桶为空,则将所述入口参数的下标保存在所述索引值对应的所述哈希桶中;
若检测结果为所述哈希桶不为空,则将所述入口参数的下标保存在对应的哈希链接中。
7.根据权利要求1所述的方法,其特征在于,在所述固态硬盘中创建与待写入数据对应的日志的步骤之前,所述方法进一步包括:
获取所述LSM数据库中的分组标识;
在所述固态硬盘中为不同的分组标识所对应的分组创建对应的所述超级块,其中,所述LSM数据库中的同一层所述sstfile文件属于同一分组标识。
8.根据权利要求7所述的方法,其特征在于,所述方法进一步包括:
将各所述超级块划分为多个第一预定大小的第一逻辑块;
按照各所述超级块中所述第一逻辑块的数量的总和创建与所有所述超级块对应的入口参数列表。
9.一种固态硬盘,其特征在于,所述固态硬盘包括处理器、与所述处理器耦接的存储控制器,其中,
所述存储控制器存储有用于实现如权利要求1-8中任一项所述的基于LSM数据库的垃圾处理的方法的程序指令;
所述处理器用于执行所述存储控制器存储的所述程序指令以对所述固态硬盘进行垃圾处理;
其中,所述LSM数据库通过SPDK与所述固态硬盘进行交互。
10.一种存储装置,其特征在于,存储有能够实现如权利要求1-8中任一项所述方法的程序文件。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910243592.2A CN110007860A (zh) | 2019-03-28 | 2019-03-28 | 基于lsm数据库的垃圾处理的方法、固态硬盘以及存储装置 |
PCT/CN2020/081281 WO2020192710A1 (zh) | 2019-03-28 | 2020-03-26 | 基于lsm数据库的垃圾处理的方法、固态硬盘以及存储装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910243592.2A CN110007860A (zh) | 2019-03-28 | 2019-03-28 | 基于lsm数据库的垃圾处理的方法、固态硬盘以及存储装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110007860A true CN110007860A (zh) | 2019-07-12 |
Family
ID=67168637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910243592.2A Pending CN110007860A (zh) | 2019-03-28 | 2019-03-28 | 基于lsm数据库的垃圾处理的方法、固态硬盘以及存储装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110007860A (zh) |
WO (1) | WO2020192710A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110531927A (zh) * | 2019-08-06 | 2019-12-03 | 深圳大普微电子科技有限公司 | 一种基于块分级的垃圾回收方法及非易失性的存储设备 |
WO2020192710A1 (zh) * | 2019-03-28 | 2020-10-01 | 深圳大普微电子科技有限公司 | 基于lsm数据库的垃圾处理的方法、固态硬盘以及存储装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112596682A (zh) * | 2020-12-28 | 2021-04-02 | 郝东东 | 一种区块链用存储装置及存储方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8965849B1 (en) * | 2012-08-06 | 2015-02-24 | Amazon Technologies, Inc. | Static sorted index replication |
CN108733306A (zh) * | 2017-04-14 | 2018-11-02 | 华为技术有限公司 | 一种文件合并方法及装置 |
CN108804019A (zh) * | 2017-04-27 | 2018-11-13 | 华为技术有限公司 | 一种数据存储方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106708427B (zh) * | 2016-11-17 | 2019-05-10 | 华中科技大学 | 一种适用于键值对数据的存储方法 |
CN108182154A (zh) * | 2017-12-22 | 2018-06-19 | 深圳大普微电子科技有限公司 | 一种基于固态硬盘的日志文件的读写方法及固态硬盘 |
CN110007860A (zh) * | 2019-03-28 | 2019-07-12 | 深圳大普微电子科技有限公司 | 基于lsm数据库的垃圾处理的方法、固态硬盘以及存储装置 |
-
2019
- 2019-03-28 CN CN201910243592.2A patent/CN110007860A/zh active Pending
-
2020
- 2020-03-26 WO PCT/CN2020/081281 patent/WO2020192710A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8965849B1 (en) * | 2012-08-06 | 2015-02-24 | Amazon Technologies, Inc. | Static sorted index replication |
CN108733306A (zh) * | 2017-04-14 | 2018-11-02 | 华为技术有限公司 | 一种文件合并方法及装置 |
CN108804019A (zh) * | 2017-04-27 | 2018-11-13 | 华为技术有限公司 | 一种数据存储方法及装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020192710A1 (zh) * | 2019-03-28 | 2020-10-01 | 深圳大普微电子科技有限公司 | 基于lsm数据库的垃圾处理的方法、固态硬盘以及存储装置 |
CN110531927A (zh) * | 2019-08-06 | 2019-12-03 | 深圳大普微电子科技有限公司 | 一种基于块分级的垃圾回收方法及非易失性的存储设备 |
CN110531927B (zh) * | 2019-08-06 | 2023-05-09 | 深圳大普微电子科技有限公司 | 一种基于块分级的垃圾回收方法及非易失性的存储设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2020192710A1 (zh) | 2020-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102521145B (zh) | Java卡系统及其空间分配处理方法 | |
CN103098035B (zh) | 存储系统 | |
CN110007860A (zh) | 基于lsm数据库的垃圾处理的方法、固态硬盘以及存储装置 | |
US8364732B2 (en) | Extending cluster allocations in an extensible file system | |
CN109815162A (zh) | 内存管理方法、装置、移动终端及存储介质 | |
CN109948641A (zh) | 异常群体识别方法及装置 | |
CN103678337B (zh) | 数据清除方法、装置及系统 | |
CN103164490B (zh) | 一种不固定长度数据的高效存储实现方法和装置 | |
CN111061752B (zh) | 数据处理方法、装置及电子设备 | |
CN106383666B (zh) | 一种数据存储方法及装置 | |
CN102567522B (zh) | 一种智能卡文件系统的管理方法及设备 | |
CN102142032B (zh) | 一种分布式文件系统的数据读写方法及系统 | |
CN101246440B (zh) | Java卡系统垃圾回收方法 | |
CN107635078A (zh) | 游戏控制方法及设备 | |
CN104298736A (zh) | 数据集合连接方法、装置及数据库系统 | |
CN111125034A (zh) | 一种聚合对象数据处理方法、系统及相关设备 | |
CN102253985B (zh) | 一种文件系统数据的管理方法及系统 | |
CN110543435B (zh) | 存储单元的混合映射操作方法、装置、设备及存储介质 | |
CN1687899A (zh) | 将应用程序动态下载到用户识别模块的方法、系统及模块 | |
CN105493080A (zh) | 基于上下文感知的重复数据删除的方法和装置 | |
CN105022593A (zh) | 一种基于数据压缩和数据去冗协同的存储优化方法 | |
CN109542800A (zh) | 基于闪存的垃圾处理的方法、固态硬盘以及存储装置 | |
CN112596949A (zh) | 一种高效率的ssd删除数据恢复方法及系统 | |
CN112199042A (zh) | 存储空间管理方法、装置、芯片、设备及存储介质 | |
CN104965737B (zh) | 更新数据的获取方法及装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190712 |