CN112631950B - 一种l2p表的保存方法、***、设备以及介质 - Google Patents
一种l2p表的保存方法、***、设备以及介质 Download PDFInfo
- Publication number
- CN112631950B CN112631950B CN202011437985.6A CN202011437985A CN112631950B CN 112631950 B CN112631950 B CN 112631950B CN 202011437985 A CN202011437985 A CN 202011437985A CN 112631950 B CN112631950 B CN 112631950B
- Authority
- CN
- China
- Prior art keywords
- lba
- data
- pba
- cache
- delta
- 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
- 238000000034 method Methods 0.000 title claims abstract description 28
- 230000004044 response Effects 0.000 claims abstract description 24
- 238000013507 mapping Methods 0.000 claims abstract description 17
- 238000012005 ligant binding assay Methods 0.000 claims description 150
- 229920001485 poly(butyl acrylate) polymer Polymers 0.000 claims description 62
- 238000011084 recovery Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 8
- 239000000872 buffer Substances 0.000 description 42
- 101150101057 PBA1 gene Proteins 0.000 description 10
- 101000648827 Homo sapiens TPR and ankyrin repeat-containing protein 1 Proteins 0.000 description 6
- 102100028173 TPR and ankyrin repeat-containing protein 1 Human genes 0.000 description 6
- 230000007717 exclusion Effects 0.000 description 5
- 238000005192 partition Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 108700041286 delta Proteins 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004146 energy storage Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- 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
-
- 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
-
- 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/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种L2P表的保存方法,包括以下步骤:响应于检测到更新L2P表,获取L2P表中发生映射关系更新的LBA;将LBA发送到日志管理器中;响应于日志管理器接收到LBA,根据接收到的LBA在L2P表中读取对应的PBA并将LBA和对应的PBA组装成增量数据;将增量数据和L2P表中当前待保存的若干个基础数据作为快照保存到非易失性存储器中。本发明还公开了一种***、计算机设备以及可读存储介质。本发明针对SMP***的SSD在保存L2P更新时,采用发送delta(LBA,PBA)的传统方式,引起delta数据乱序保存或互斥保存方式造成性能下降问题,提出了一种只发送L2P更新的LBA给JM,JM通过接收到的LBA访问L2P表获得PBA,组装成delta(LBA,PBA)再进行保存,有效解决了delta保存乱序的问题。
Description
技术领域
本发明涉及固态硬盘领域,具体涉及一种L2P表的保存方法、***、设备以及存储介质。
背景技术
FTL映射表又称L2P表,实现主机逻辑地址空间(LBA)到Flash闪存物理地址空间(PBA)的映射,是SSD管理数据中的核心元数据之一。L2P表是一份以LBA为索引,PBA为内容的线性表。SSD在工作时,会将每一笔用户数据刷写到闪存地址空间,并记录该逻辑地址到物理地址的映射关系到L2P表中。主机读取该数据时,将发送该数据的LBA给SSD,SSD可通过LBA查找L2P表,找到对应的闪存物理空间地址PBA,读出Flash上存储的该笔数据,返回给用户。
SSD运行时,L2P表驻留在DDR中,便于SSD主控快速访问。SSD下电时可将L2P表从DDR中刷写到FLASH中,在SSD上电时,从Flash中读出并加载到指定的DDR区域。由于SSD的L2P表数据量比较大,比如4T盘的L2P大小约4GB,这样,虽然企业级SSD配置储能电容,能在遭遇异常掉电时提供几十ms的电量供应,但也无法满足将整份L2P表刷写到Flash中的需求。因此,SSD一般采用快照方式保存L2P表,即在SSD运行过程中,每隔一定时间或满足一定条件时,刷写一份L2P表的快照到FLASH中,这样,只需在遭遇异常掉电时,刷写少量未保存的快照就行。SSD上电后,通过已保存的快照再将整份L2P表构建到DDR中。
在采用AMP***的SSD中,将SSD的整个nand空间划分成多个partition,每个partition独立维护一份L2P表,配置有单独的1个JM,1个负责数据读写以及L2P表更新的WM,JM和WM处在同一个core上。在一个partition内部,WM等manager对L2P表的任一表项的改动都会生成1个delta(lba,pba),并且生成的L2P delta可以有序地发送给JM,JM也可以有序地接收到L2P delta,确保delta数据能够保序存储。
但是,在采用SMP***的SSD中,为了更好的读写性能,不再严格配置partition。处在不同core上的多个WM会并行访问L2P表,并将L2P表更新通过消息发送给JM。这里就产生了一个JM存储L2P delta如何保序的问题。现有方案中可以通过互斥量的方式可以解决上述问题,即将16K的write buffer视作共享资源,所有WM可见,哪一个WM更新了L2P表之后,需要将delta写入write buffer之前,需要先申请互斥锁,拿到锁之后才能将delta写入,写完之后释放互斥锁;如果拿不到互斥锁,需要一直等待直到拿到锁为止。但是经过评估与实测,多个WM通过互斥锁方式的***消耗过大,直接影响读写性能。
发明内容
有鉴于此,为了克服上述问题的至少一个方面,本发明实施例提出一种L2P表的保存方法,包括以下步骤:
响应于检测到更新L2P表,获取所述L2P表中发生映射关系更新的LBA;
将所述LBA发送到日志管理器中;
响应于所述日志管理器接收到所述LBA,根据接收到的所述LBA在所述L2P表中读取对应的PBA并将所述LBA和所述对应的PBA组装成增量数据;
将所述增量数据和所述L2P表中当前待保存的若干个基础数据作为快照保存到非易失性存储器中。
在一些实施例中,还包括:
创建恢复表;
将所述快照的快照信息记录到所述恢复表中。
在一些实施例中,将所述LBA发送到日志管理器中,进一步包括:
将所述LBA存储到LBA缓存中;
响应于所述LBA缓存中的所述LBA的数量达到阈值,将所述LBA缓存发送到所述日志管理器中。
在一些实施例中,响应于所述日志管理器接收到所述LBA,根据接收到的所述LBA在所述L2P表中读取对应的PBA并将所述LBA和所述对应的PBA组装成增量数据,进一步包括:
所述日志管理器依次读取所述LBA缓存中的LBA以通过所述L2P表得到对应的PBA进而得到多个所述增量数据,并按顺序将所述多个增量数据存储到写缓存中。
在一些实施例中,将所述增量数据和所述L2P表中当前待保存的若干个基础数据作为快照保存到非易失性存储器中,进一步包括:
响应于所述增量数据将所述写缓存中的第一预设空间填满,获取所述L2P表中当前待保存的若干个基础数据并填充到所述写缓存的第二预设空间;
填充所述写缓存的头部信息后将所述写缓存作为快照保存到所述非易失性存储器中。
在一些实施例中,所述写缓存的第一预设空间存储的增量数据的数量是所述LBA缓存中存储的LBA的数量的整数倍。
在一些实施例中,还包括:
响应于接收到恢复L2P表的指令,根据所述恢复表中记录的快照信息从所述非易失性存储器获取到多个快照数据;
根据所述恢复表中所述快照信息的顺序以及每一个所述快照数据中多个增量数据的顺序将每一个所述快照数据中的每一个所述增量数据恢复到L2P表中。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种L2P表的保存***,包括:
获取模块,所述获取模块配置为响应于检测到更新L2P表,获取所述L2P表中发生映射关系更新的LBA;
发送模块,所述发送模块配置为将所述LBA发送到日志管理器中;
组装模块,所述组装模块配置为响应于所述日志管理器接收到所述LBA,根据接收到的所述LBA在所述L2P表中读取对应的PBA以将所述LBA和所述对应的PBA组装成增量数据;
保存模块,所述保存模块配置为将所述增量数据和所述L2P表中当前待保存的若干个基础数据作为快照保存到非易失性存储器中。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如上所述的任一种L2P表的保存方法的步骤。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时执行如上所述的任一种L2P表的保存方法的步骤。
本发明具有以下有益技术效果之一:本发明针对SMP***的SSD在保存L2P更新时,采用发送delta(LBA,PBA)的传统方式,引起delta数据乱序保存或互斥保存方式造成性能下降问题,提出了一种只发送L2P更新的LBA给JM,JM通过接收到的LBA访问L2P表获得PBA,组装成delta(LBA,PBA)再进行保存,有效解决了delta保存乱序的问题。因此采用只发送LBA的方式,由于JM根据LBA获得L2P表永远都是实时的PBA值。只要WM不存在漏发问题,JM就不存在乱序保存的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明的实施例提供的L2P表的保存方法的流程示意图;
图2为本发明的实施例提供的L2P表的保存***的结构示意图;
图3为本发明的实施例提供的计算机设备的结构示意图;
图4为本发明的实施例提供的计算机可读存储介质的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
在本发明的实施例中,WM:Write Manager写管理器;JM:Journal Manager日志管理器;LBA:Logical Block Address逻辑块地址;PBA:Physical Block Address物理块地址;L2P:Logical To Physical Table逻辑块到物理块的映射表,也即FTL映射表。
在本发明的实施例中,对于某个LBA,在第一时间,由WM0更新为delta0(LBA,PBA0),在第二时间,由WM1更新为delta1(LBA,PBA1),如果后续没有再针对该LBA的更新,那么L2P表中LBA对应的表项就是PBA1。按照JM存储的保序需求,JM需要先将delta0(LBA,PBA0)存储到delta buffer中,再存储delta1(LBA,PBA1)。如果通过消息发送,即WM0发送delta0(LBA,PBA0),WM1发送delta1(LBA,PBA1),由于JM轮转查询每个core到当前JM所在core上的inbound中是否有消息,这样,无法保证JM会先收到delta0的消息,再收到delta1的消息。如果JM先收到delta1的消息,完成保存,后收到delta0的消息,完成保存。这样,JM在上电恢复过程中,会先完成delta1的patch,再完成delta0的patch,这样最终恢复完成的L2P表中,LBA对应的表项是PBA0。与下电之前L2P表中LBA表项是PBA1不一致,这就是保存乱序的问题。
根据本发明的一个方面,本发明的实施例提出一种L2P表的保存方法,如图1所示,其可以包括步骤:
S1,响应于检测到更新L2P表,获取所述L2P表中发生映射关系更新的LBA;
S2,将所述LBA发送到日志管理器中;
S3,响应于所述日志管理器接收到所述LBA,根据接收到的所述LBA在所述L2P表中读取对应的PBA并将所述LBA和所述对应的PBA组装成增量数据;
S4,将所述增量数据和所述L2P表中当前待保存的若干个基础数据作为快照保存到非易失性存储器中。
本发明针对SMP***的SSD在保存L2P更新时,采用发送delta(LBA,PBA)的传统方式,引起delta数据乱序保存或互斥保存方式造成性能下降问题,提出了一种只发送L2P更新的LBA给JM,JM通过接收到的LBA访问L2P表获得PBA,组装成delta(LBA,PBA)再进行保存,有效解决了delta保存乱序的问题。因此采用只发送LBA的方式,由于JM根据LBA获得L2P表永远都是实时的PBA值。只要WM不存在漏发问题,JM就不存在乱序保存的问题。
在一些实施例中,还包括:
创建恢复表;
将所述快照的快照信息记录到所述恢复表中。
具体的,可以在JM中创建并维护一个恢复表,例如First table,每当JM刷写1个快照即形成的1个新的映射关系,记录到first table中。当JM在上电恢复L2P表时,会根据First table中记录的映射关系在非易失性存储器中得到待恢复的快照数据。
在一些实施例中,步骤S2,将所述LBA发送到日志管理器中,进一步包括:
将所述LBA存储到LBA缓存中;
响应于所述LBA缓存中的所述LBA的数量达到阈值,将所述LBA缓存发送到所述日志管理器中。
具体的,基于SMP***的SSD中可以配置有4个或8个WM,分布在不同的core上,负责L2P表的维护和更新,配置有1个JM,分布在某个固定的core上,负责L2P表更新数据delta的存储。每个WM可以向buffer manager申请LBA缓存(LBA buffer),用于存储发生L2P表更新的LBA,每个LBA占用4bytes。WM申请获得1个LBA buffer后,将L2P表更新生成的LBA依次存储到LBA buffer中,当LBA buffer填满之后,将该LBA buffer存储的LBA个数信息以及buffer地址通过消息发送给JM。JM收到消息后获得buffer地址,依次读取buffer中的LBA,再访问L2P表获得PBA,组装成delta(LBA,PBA),再进行保存。WM通过LBA buffer方式发送L2P表更新数据给JM,相比于有一个L2P更新就发送的方式,可以极大降低消息的交互频次和消耗,有利于SSD性能的提升。
在一些实施例中,步骤S3,响应于所述日志管理器接收到所述LBA,根据接收到的所述LBA在所述L2P表中读取对应的PBA并将所述LBA和所述对应的PBA组装成增量数据,进一步包括:
所述日志管理器依次读取所述LBA缓存中的LBA以通过所述L2P表得到对应的PBA进而得到多个所述增量数据,并按顺序将所述多个增量数据存储到写缓存中。
在一些实施例中,所述写缓存的第一预设空间存储的增量数据的数量是所述LBA缓存中存储的LBA的数量的整数倍。
具体的,JM配置有若干16k大小的写缓存(write buffer),用于存储接收到的L2P更新数据。在一些实施例中,单个write buffer存储的delta数量刚好是单个LBA buffer存储的LBA个数的整数倍。优选的,单个LBA buffer填满所需的LBA个数刚好能够将单个JM的wrtie buffer填满。JM在收到LBA buffer后,依次读取LBA并在L2P表获得PBA,组装成delta(LBA,PBA),再依次存储到write buffer中的delta buffer中。正常的,处理完1个LBABuffer,1个write buffer的delta buffer就填满了。JM释放LBA buffer,便于WM继续使用。JM再继续填充buffer header信息和base数据,就可以发送给NAND控制器刷写到FLASH中了。
需要说明的是,不同的WM针对同一个LBA做了多次修改,则发送给JM的LBA为多个(与修改次数相同),这样,当JM无论收到哪个WM发送的LBA,其均可通过L2P表获取到实时的PBA数据,而且虽然当前获取的PBA数据不确定是否是最新的PBA数据,但是最后一次获取到一定是最新的数据。例如,在第一时间,由WM0更新为delta0(LBA1,PBA0),在第二时间,由WM1更新为delta1(LBA1,PBA1),JM会收到两次LBA1,第一次收到后,由于不同的WM发送消息的延迟情况,通过LBA1查询到的PBA可能是PBA0也可能是PBA1,但是由于是先对L2P表中的数据进行更新后,才会发送LBA,因此第二次收到LBA后,JM根据L2P表查询到的对应的PBA一定是PBA1。这样,在按照快照数据的顺序和增量数据的顺序恢复时,增量数据(LBA1,PBA0)先恢复,增量数据(LBA1,PBA1)后恢复,即可保证最终恢复完成的L2P表中,LBA对应的表项是PBA1,与下电之前L2P表中LBA表项是PBA1一致,JM不存在乱序保存的问题。
在一些实施例中,步骤S4,将所述增量数据和所述L2P表中当前待保存的若干个基础数据作为快照保存到非易失性存储器中,进一步包括:
响应于所述增量数据将所述写缓存中的第一预设空间填满,获取所述L2P表中当前待保存的若干个基础数据并填充到所述写缓存的第二预设空间;
填充所述写缓存的头部信息后将所述写缓存作为快照保存到所述非易失性存储器中。
具体的,SSD采用delta(增量数据)+base(基础数据)的快照方式保存元数据。Delta即增量数据,来源于base数据。比如,DDR中的整份L2P表称为base数据。L2P表的某个表项(LBA0,PBA0)更新成(LBA0,PBA1),则(LBA0,PBA1)就是一个L2P类型的delta数据。元数据保存到SLC中,在DDR中开辟若干16k大小的write buffer,每一个write buffer的前64bytes用于buffer header信息,紧跟的delta buffer(第一预设空间)用于缓存产生的delta数据,剩下的base buffer(第二预设空间)(size=16k-64bytes buffer header–delta buffer size)大小用于保存一段base数据。
需要说明的是,完整的L2P表可以根据base buffer的大小分成多段base数据,增量数据是针对完整的L2P表。因此当增量数据填充满第一预设空间后,依次循环的将一段base数据填充到当前write buffer的base buffer中,当前write buffer中的增量数据可能对应其他段的base数据,也可能对应当前write buffer中的base数据。这样,更新后的L2P数据要么保存在delta buffer中,要么存在于base buffer中,使得恢复表中时间越靠后的数据越新。
在一些实施例中,还包括:
响应于接收到恢复L2P表的指令,根据所述恢复表中记录的快照信息从所述非易失性存储器获取到多个快照数据;
根据所述恢复表中所述快照信息的顺序以及每一个所述快照数据中多个增量数据的顺序将每一个所述快照数据中的每一个所述增量数据恢复到L2P表中。
具体的,JM上电恢复L2P表时,会根据First table(JM刷写1个16k write buffer形成的1个新的映射关系,记录到first table中,该表由JM内部维护)依次读取已经存储的16K数据。恢复完成1个16K数据到DDR后,会先将base数据搬移到L2P表中的实际位置;Base恢复之后,再依次读取delta(LBA,PBA)数据,根据LBA获得l2p表的表项地址,将PBA写入,完成单个delta的patch。当first table记录的所有16k的映射关系读完成,并完成上述base和patch过程,整个L2P表在DDR中就构建出来了。
本发明针对SMP***的SSD在保存L2P更新时,采用发送delta(LBA,PBA)的传统方式,引起delta数据乱序保存或互斥保存方式造成性能下降问题,提出了一种只发送L2P更新的LBA给JM,JM通过接收到的LBA访问L2P表获得PBA,组装成delta(LBA,PBA)再进行保存,有效解决了delta保存乱序的问题。因此采用只发送LBA的方式,由于JM根据LBA获得L2P表永远都是实时的PBA值。只要WM不存在漏发问题,JM就不存在乱序保存的问题。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种L2P表的保存***400,如图2所示,包括:
获取模块401,所述获取模块401配置为响应于检测到更新L2P表,获取所述L2P表中发生映射关系更新的LBA;
发送模块402,所述发送模块402配置为将所述LBA发送到日志管理器中;
组装模块403,所述组装模块403配置为响应于所述日志管理器接收到所述LBA,根据接收到的所述LBA在所述L2P表中读取对应的PBA以将所述LBA和所述对应的PBA组装成增量数据;
保存模块404,所述保存模块404配置为将所述增量数据和所述L2P表中当前待保存的若干个基础数据作为快照保存到非易失性存储器中。
基于同一发明构思,根据本发明的另一个方面,如图3所示,本发明的实施例还提供了一种计算机设备501,包括:
至少一个处理器520;以及
存储器510,存储器510存储有可在处理器上运行的计算机程序511,处理器520执行程序时执行如上的任一种L2P表的保存方法的步骤。
基于同一发明构思,根据本发明的另一个方面,如图4所示,本发明的实施例还提供了一种计算机可读存储介质601,计算机可读存储介质601存储有计算机程序指令610,计算机程序指令610被处理器执行时执行如上的任一种L2P表的保存方法的步骤。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。
此外,应该明白的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个***的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (7)
1.一种L2P表的保存方法,其特征在于,包括以下步骤:
响应于检测到更新L2P表,获取所述L2P表中发生映射关系更新的LBA;
将所述LBA发送到日志管理器中;
响应于所述日志管理器接收到所述LBA,根据接收到的所述LBA在所述L2P表中读取对应的PBA并将所述LBA和所述对应的PBA组装成增量数据;
将所述增量数据和所述L2P表中当前待保存的若干个基础数据作为快照保存到非易失性存储器中;
将所述LBA发送到日志管理器中,进一步包括:
将所述LBA存储到LBA缓存中;
响应于所述LBA缓存中的所述LBA的数量达到阈值,将所述LBA缓存发送到所述日志管理器中;
响应于所述日志管理器接收到所述LBA,根据接收到的所述LBA在所述L2P表中读取对应的PBA并将所述LBA和所述对应的PBA组装成增量数据,进一步包括:
所述日志管理器依次读取所述LBA缓存中的LBA以通过所述L2P表得到对应的PBA进而得到多个所述增量数据,并按顺序将多个所述增量数据存储到写缓存中;
将所述增量数据和所述L2P表中当前待保存的若干个基础数据作为快照保存到非易失性存储器中,进一步包括:
响应于所述增量数据将所述写缓存中的第一预设空间填满,获取所述L2P表中当前待保存的若干个基础数据并填充到所述写缓存的第二预设空间;
填充所述写缓存的头部信息后将所述写缓存作为快照保存到所述非易失性存储器中。
2.如权利要求1所述的方法,其特征在于,还包括:
创建恢复表;
将所述快照的快照信息记录到所述恢复表中。
3.如权利要求1所述的方法,其特征在于,所述写缓存的第一预设空间存储的增量数据的数量是所述LBA缓存中存储的LBA的数量的整数倍。
4.如权利要求2所述的方法,其特征在于,还包括:
响应于接收到恢复L2P表的指令,根据所述恢复表中记录的快照信息从所述非易失性存储器获取到多个快照数据;
根据所述恢复表中所述快照信息的顺序以及每一个所述快照数据中多个增量数据的顺序将每一个所述快照数据中的每一个所述增量数据恢复到L2P表中。
5.一种L2P表的保存***,其特征在于,包括:
获取模块,所述获取模块配置为响应于检测到更新L2P表,获取所述L2P表中发生映射关系更新的LBA;
发送模块,所述发送模块配置为将所述LBA发送到日志管理器中;
组装模块,所述组装模块配置为响应于所述日志管理器接收到所述LBA,根据接收到的所述LBA在所述L2P表中读取对应的PBA以将所述LBA和所述对应的PBA组装成增量数据;
保存模块,所述保存模块配置为将所述增量数据和所述L2P表中当前待保存的若干个基础数据作为快照保存到非易失性存储器中;
将所述LBA发送到日志管理器中,进一步包括:
将所述LBA存储到LBA缓存中;
响应于所述LBA缓存中的所述LBA的数量达到阈值,将所述LBA缓存发送到所述日志管理器中;
响应于所述日志管理器接收到所述LBA,根据接收到的所述LBA在所述L2P表中读取对应的PBA并将所述LBA和所述对应的PBA组装成增量数据,进一步包括:
所述日志管理器依次读取所述LBA缓存中的LBA以通过所述L2P表得到对应的PBA进而得到多个所述增量数据,并按顺序将多个所述增量数据存储到写缓存中;
将所述增量数据和所述L2P表中当前待保存的若干个基础数据作为快照保存到非易失性存储器中,进一步包括:
响应于所述增量数据将所述写缓存中的第一预设空间填满,获取所述L2P表中当前待保存的若干个基础数据并填充到所述写缓存的第二预设空间;
填充所述写缓存的头部信息后将所述写缓存作为快照保存到所述非易失性存储器中。
6.一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如权利要求1-4任意一项所述的方法的步骤。
7.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行如权利要求1-4任意一项所述的方法的步骤。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011437985.6A CN112631950B (zh) | 2020-12-11 | 2020-12-11 | 一种l2p表的保存方法、***、设备以及介质 |
PCT/CN2021/121914 WO2022121471A1 (zh) | 2020-12-11 | 2021-09-29 | 一种l2p表的保存方法、***、设备以及介质 |
US18/034,541 US20240020240A1 (en) | 2020-12-11 | 2021-09-29 | Method for storing l2p table, system, device, and medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011437985.6A CN112631950B (zh) | 2020-12-11 | 2020-12-11 | 一种l2p表的保存方法、***、设备以及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112631950A CN112631950A (zh) | 2021-04-09 |
CN112631950B true CN112631950B (zh) | 2022-07-19 |
Family
ID=75309333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011437985.6A Active CN112631950B (zh) | 2020-12-11 | 2020-12-11 | 一种l2p表的保存方法、***、设备以及介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240020240A1 (zh) |
CN (1) | CN112631950B (zh) |
WO (1) | WO2022121471A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112631950B (zh) * | 2020-12-11 | 2022-07-19 | 苏州浪潮智能科技有限公司 | 一种l2p表的保存方法、***、设备以及介质 |
CN113254265B (zh) * | 2021-05-10 | 2023-03-14 | 苏州库瀚信息科技有限公司 | 基于固态硬盘的快照实现方法、存储*** |
CN115543865B (zh) * | 2022-11-25 | 2023-04-11 | 成都佰维存储科技有限公司 | 掉电保护方法、装置、可读存储介质及电子设备 |
CN116991757B (zh) * | 2023-09-26 | 2023-12-15 | 四川云海芯科微电子科技有限公司 | 一种l2p表增量数据压缩方法及*** |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111581126A (zh) * | 2020-05-08 | 2020-08-25 | 苏州浪潮智能科技有限公司 | 一种基于ssd的日志数据保存方法、装置、设备和介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10678446B2 (en) * | 2017-07-11 | 2020-06-09 | Western Digital Technologies, Inc. | Bitmap processing for log-structured data store |
CN107422992A (zh) * | 2017-07-31 | 2017-12-01 | 郑州云海信息技术有限公司 | 一种SSD运行时Journal保存方法及*** |
CN107402724B (zh) * | 2017-07-31 | 2020-07-24 | 苏州浪潮智能科技有限公司 | 一种SSD中Journal元数据的保存方法及*** |
CN109213690A (zh) * | 2018-09-21 | 2019-01-15 | 浪潮电子信息产业股份有限公司 | 一种l2p表的重建方法及相关装置 |
CN110647295B (zh) * | 2019-09-12 | 2022-07-22 | 苏州浪潮智能科技有限公司 | 缩短ssd上电恢复时间的方法、***、设备及存储介质 |
CN112631950B (zh) * | 2020-12-11 | 2022-07-19 | 苏州浪潮智能科技有限公司 | 一种l2p表的保存方法、***、设备以及介质 |
-
2020
- 2020-12-11 CN CN202011437985.6A patent/CN112631950B/zh active Active
-
2021
- 2021-09-29 WO PCT/CN2021/121914 patent/WO2022121471A1/zh active Application Filing
- 2021-09-29 US US18/034,541 patent/US20240020240A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111581126A (zh) * | 2020-05-08 | 2020-08-25 | 苏州浪潮智能科技有限公司 | 一种基于ssd的日志数据保存方法、装置、设备和介质 |
Non-Patent Citations (1)
Title |
---|
一个基于日志结构的非易失性内存键值存储***;游理通等;《计算机研究与发展》;20180915(第09期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
WO2022121471A1 (zh) | 2022-06-16 |
CN112631950A (zh) | 2021-04-09 |
US20240020240A1 (en) | 2024-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112631950B (zh) | 一种l2p表的保存方法、***、设备以及介质 | |
US10649897B2 (en) | Access request processing method and apparatus, and computer device | |
US10025669B2 (en) | Maintaining data-set coherency in non-volatile memory across power interruptions | |
US8356148B2 (en) | Snapshot metadata management in a storage system | |
CN113508382B (zh) | Ssd中数据的选择性擦除 | |
KR101870521B1 (ko) | 스토리지 저널링을 개선하는 방법 및 시스템 | |
US20180095680A1 (en) | Physical media aware spacially coupled journaling and replay | |
US8825946B2 (en) | Memory system and data writing method | |
CN103577121A (zh) | 一种基于nand flash的高可靠线性文件存取方法 | |
US20150378642A1 (en) | File system back-up for multiple storage medium device | |
US10489289B1 (en) | Physical media aware spacially coupled journaling and trim | |
KR20170010729A (ko) | 비휘발성 메모리의 메타 데이터 관리 방법 및 스토리지 시스템 | |
KR20100110652A (ko) | 메모리 장치 및 메모리 장치의 펌웨어 업데이트 방법 | |
US10289321B1 (en) | Bad block table recovery in a solid state drives | |
US10459803B2 (en) | Method for management tables recovery | |
US10289549B1 (en) | Checkpointing cache status information | |
US20230244382A1 (en) | Deallocated Block Determination | |
CN114647383A (zh) | 数据访问方法、装置、存储节点及存储介质 | |
CN113608701A (zh) | 一种存储***中数据管理方法和固态硬盘 | |
CN107544912B (zh) | 一种日志记录方法、加载方法及其装置 | |
CN106095331B (zh) | 一种固定大文件内部资源的控制方法 | |
CN113342276A (zh) | 一种日志保存方法、***、设备以及介质 | |
US20230044942A1 (en) | Conditional update, delayed lookup | |
CN111444114B (zh) | 一种非易失性内存中数据的处理方法、装置及*** | |
JP2013196155A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |