CN113448878B - 一种lba处理方法、系统、存储介质及设备 - Google Patents
一种lba处理方法、系统、存储介质及设备 Download PDFInfo
- Publication number
- CN113448878B CN113448878B CN202110583108.8A CN202110583108A CN113448878B CN 113448878 B CN113448878 B CN 113448878B CN 202110583108 A CN202110583108 A CN 202110583108A CN 113448878 B CN113448878 B CN 113448878B
- Authority
- CN
- China
- Prior art keywords
- lba
- request
- processing
- memory block
- locking request
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
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)
- Memory System (AREA)
Abstract
本发明提供了一种LBA处理方法、系统、存储介质及设备,方法包括:响应于收到LBA处理请求,基于LBA处理请求发起加锁请求;查找加锁请求对应的内存节点,且对内存节点加自旋锁,并判断内存节点中是否有空闲的用于存放加锁请求记录的地址;响应于内存节点中有空闲的地址,判断是否有用于存放LBA处理请求的空闲内存块;响应于有空闲内存块,将LBA处理请求存放至空闲内存块,且向空闲内存块对应的空闲的地址中添加加锁请求记录以得到加锁请求成功的结果,并将自旋锁解锁;基于加锁请求成功的结果进行LBA处理。本发明能够保证每次只处理一个LBA处理请求,实现了主机IO与垃圾回收互斥,确保LBA相应的数据修改只能同时由一个对象来操作。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种LBA处理方法、系统、存储介质及设备。
背景技术
存储系统中的垃圾回收,顾名思义即为将已经失效的存储空间进行回收来达到释放容量的目的。因此垃圾回收在存储系统工作的整个过程中都在监控存储容量的变化,当存储容量不足时,垃圾回收启动并回收存储空间。但是在垃圾回收工作时,存储系统的业务并不会中断,因此会存在待回收空间中的数据会被主机IO访问的可能。
垃圾回收的基本单位是block,一个block划分为16个FU,每个FU又划分为多个SPAN,每个SPAN内保存若干个数据grain。在编码中将数据grain表示为PBA,主机IO的写数据表示为LBA,数据grain对应的指纹值表示为HASH(重删数据才会有指纹值)。有效数据:存在L→P和对应的P→L映射;重删数据还有对应的H→P映射;无效数据:根据PBA无法查到LBA。
1)垃圾回收通过查询重删PBA的P→L元数据判断对应PBA内数据是无效数据后,会把H→P映射删除,但是在查询P→L元数据之后到删除H→P映射完成之前,可能主机又下发了和该PBA一样的数据,查询到了H→P映射,就会在该PBA位置产生新的L→P映射,从而P→L又变为有效数据,但是有可能新的L→P映射的元数据事务完成之前垃圾回收就删除H→P映射完成,并且垃圾回收再次去查询P→L元数据确认该PBA处确实是无效数据时,就会查询不到P→L信息,就确认了该PBA回收完成,但是新的L→P映射之后就会生效,如果后面需要读取该LBA的数据,就可能相应PBA已经回收或者已经分配给新的业务了,就会读取到错误的数据。
2)垃圾回收通过查询P→L元数据判断某个PBA内数据是有效数据并把PBA内数据迁移到其它位置后,会把L→P映射修改为新的L→Pnew,但是有可能修改L→P映射之前,主机又在同一LBA处覆盖写了新的数据,写到了新的位置PBA new,也正在修改L→P映射,如果垃圾回收发起的L→P修改在主机发起的L→P修改之后生效,则最终L→P映射的P就是垃圾回收迁移后的位置,而这个位置是LBA处的老数据,而不是主机写的新数据。之后再次读该LBA的数据时,就会读到错误的数据了。
因此基于上述情况,需要解决垃圾回收与主机IO之间相互干扰的问题。
发明内容
有鉴于此,本发明的目的在于提出一种LBA处理方法、系统、存储介质及设备,用以解决现有技术中存储系统中对LBA的垃圾回收与主机IO之间相互干扰的问题。
基于上述目的,本发明提供了一种LBA处理方法,包括以下步骤:
响应于收到LBA处理请求,基于LBA处理请求发起加锁请求;
查找加锁请求对应的内存节点,且对内存节点加自旋锁,并判断内存节点中是否有空闲的用于存放加锁请求记录的地址;
响应于内存节点中有空闲的地址,判断是否有用于存放LBA处理请求的空闲内存块;
响应于有空闲内存块,将LBA处理请求存放至空闲内存块,且向空闲内存块对应的空闲的地址中添加加锁请求记录以得到加锁请求成功的结果,并将自旋锁解锁;
基于加锁请求成功的结果进行所述LBA处理。
在一些实施例中,方法还包括:
响应于内存节点中没有空闲的地址,判断是否有等待用于存放LBA处理请求的等待内存块;
响应于有等待内存块,将LBA处理请求加入等待队列中,并将自旋锁解锁;
响应于LBA处理请求从等待队列中移至等待内存块中,将等待内存块对应的地址中添加加锁请求记录以得到加锁请求成功的结果。
在一些实施例中,方法还包括:响应于没有等待内存块,将自旋锁解锁。
在一些实施例中,方法还包括:响应于没有空闲内存块,将自旋锁解锁。
在一些实施例中,查找加锁请求对应的内存节点包括:
基于加锁请求通过哈希算法计算出键值,并基于键值和内存节点的映射关系查找加锁请求对应的内存节点。
在一些实施例中,基于加锁请求成功的结果进行LBA处理包括:
将加锁请求成功的结果通过回调函数向发起LBA处理请求的请求者通知,并由请求者进行相应的LBA处理。
在一些实施例中,LBA处理请求包括对LBA进行垃圾回收的请求或者主机对LBA进行IO访问的请求。
本发明的另一方面,还提供了一种LBA处理系统,包括:
加锁请求模块,配置用于响应于收到LBA处理请求,基于LBA处理请求发起加锁请求;
地址判断模块,配置用于查找加锁请求对应的内存节点,且对内存节点加自旋锁,并判断内存节点中是否有空闲的用于存放加锁请求记录的地址;
空闲内存块判断模块,配置用于响应于内存节点中有空闲的地址,判断是否有用于存放LBA处理请求的空闲内存块;
加锁请求成功模块,配置用于响应于有空闲内存块,将LBA处理请求存放至空闲内存块,且向空闲内存块对应的空闲的地址中添加加锁请求记录以得到加锁请求成功的结果,并将自旋锁解锁;以及
LBA处理模块,配置用于基于加锁请求成功的结果进行LBA处理。
本发明的又一方面,还提供了一种计算机可读存储介质,存储有计算机程序指令,该计算机程序指令被执行时实现上述任意一项方法。
本发明的再一方面,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该计算机程序被处理器执行时执行上述任意一项方法。
本发明至少具有以下有益技术效果:
本发明通过基于LBA处理请求发起加锁请求,并对加锁请求对应的内存节点加自旋锁,以及基于对地址和内存块的占用情况判断并根据判断结果向地址中添加加锁请求记录,能够保证每次只有一个LBA处理请求(对LBA进行垃圾回收的请求或者主机对LBA进行IO访问的请求)对LBA进行处理,确保LBA相应的数据修改只能在同一时间由一个对象(主机或垃圾回收模块)来操作,实现了主机IO与垃圾回收互斥,有效避免了数据不一致问题的产生,进而减少了后期数据不一致问题定位的方向。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为根据本发明实施例提供的LBA处理方法的示意图;
图2为根据本发明实施例提供的LBA处理系统的示意图;
图3为根据本发明实施例提供的实现LBA处理方法的计算机可读存储介质的示意图;
图4为根据本发明实施例提供的执行LBA处理方法的计算机设备的硬件结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称的非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备固有的其他步骤或单元。
基于上述目的,本发明实施例的第一个方面,提出了一种LBA处理方法的实施例。图1示出的是本发明提供的LBA处理方法的实施例的示意图。如图1所示,本发明实施例包括如下步骤:
步骤S10、响应于收到LBA处理请求,基于LBA处理请求发起加锁请求;
步骤S20、查找加锁请求对应的内存节点,且对内存节点加自旋锁,并判断内存节点中是否有空闲的用于存放加锁请求记录的地址;
步骤S30、响应于内存节点中有空闲的地址,判断是否有用于存放LBA处理请求的空闲内存块;
步骤S40、响应于有空闲内存块,将LBA处理请求存放至空闲内存块,且向空闲内存块对应的空闲的地址中添加加锁请求记录以得到加锁请求成功的结果,并将自旋锁解锁;
步骤S50、基于加锁请求成功的结果进行LBA处理。
本实施例中,当把加锁请求记录存于地址中时,就表明加锁是成功的,因为会有相应的模块及时获取到地址中的加锁请求记录,然后就立即响应加锁请求。本实施例中的加锁可以是指加互斥锁。LBA表示写数据的操作。
互斥锁一般用于临界区持锁时间比较长的操作,例如临界区有IO操作或者临界区的竞争较激烈时,可以用互斥锁。自旋锁主要用在临界区持锁时间非常短且CPU资源不紧张的情况下。自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁。因为自旋锁不会引起调用者睡眠,所以自旋锁的效率会比互斥锁高。互斥锁的起始开销高于自旋锁,但是基本是一劳永逸,临界区持锁时间的大小并不会对互斥锁的开销造成影响;而自旋锁是死循环检测,加锁全程消耗CPU,起始开销虽然低于互斥锁,但是随着持锁时间,加锁的开销是线性增长。
本发明实施例通过基于LBA处理请求发起加锁请求,并对加锁请求对应的内存节点加自旋锁,以及基于对地址和内存块的占用情况判断并根据判断结果向地址中添加加锁请求记录,能够保证每次只有一个LBA处理请求(对LBA进行垃圾回收的请求或者主机对LBA进行IO访问的请求)对LBA进行处理,确保LBA相应的数据修改只能在同一时间由一个对象(主机或垃圾回收模块)来操作,实现了主机IO与垃圾回收互斥,有效避免了数据不一致问题的产生,进而减少了后期数据不一致问题定位的方向。
在一些实施例中,方法还包括:响应于内存节点中没有空闲的地址,判断是否有等待用于存放LBA处理请求的等待内存块;响应于有等待内存块,将LBA处理请求加入等待队列中,并将自旋锁解锁;响应于LBA处理请求从等待队列中移至等待内存块中,将等待内存块对应的地址中添加加锁请求记录以得到加锁请求成功的结果。本实施例中,得到加锁请求成功的结果后,基于加锁请求成功的结果进行LBA处理。内存节点中没有空闲的地址时,表明有LBA处理请求还没结束处理,加锁请求记录还保存在相应的地址中,等到LBA处理请求结束了,对应的等待内存块空了,地址也就空了,然后把等待内存块中存放入该LBA处理请求,地址中也可以添加加锁请求记录了。
在一些实施例中,方法还包括:响应于没有等待内存块,将自旋锁解锁。具体地,本实施例包括以下步骤:当收到LBA处理请求时,基于LBA处理请求发起加锁请求;查找加锁请求对应的内存节点,且对内存节点加自旋锁,并判断内存节点中是否有空闲的用于存放加锁请求记录的地址;若内存节点中没有空闲的地址,判断是否有等待用于存放LBA处理请求的等待内存块;若没有等待内存块,将自旋锁解锁,则加锁请求失败。本实施例中,当没有等待内存块时,则没有可供存放LBA处理请求的内存块了,加锁请求会失败,所以直接将自旋锁解锁。
在一些实施例中,方法还包括:响应于没有空闲内存块,将自旋锁解锁。具体地,本实施例包括以下步骤:当收到LBA处理请求时,基于LBA处理请求发起加锁请求;查找加锁请求对应的内存节点,且对内存节点加自旋锁,并判断内存节点中是否有空闲的用于存放加锁请求记录的地址;若内存节点中有空闲的地址,判断是否有用于存放LBA处理请求的空闲内存块;若没有空闲内存块,将自旋锁解锁,则加锁请求失败。本实施例中,若内存节点中有空闲的地址,但是没有空闲内存块,则不能存放LBA处理请求,加锁请求会失败,因而直接将内存节点的自旋锁解锁。
在一些实施例中,查找加锁请求对应的内存节点包括:基于加锁请求通过哈希算法计算出键值,并基于键值和内存节点的映射关系查找加锁请求对应的内存节点。本实施例中,通过采用哈希算法,可以直接算出键值(即关键字key的值),通过键值可以得到要存取的内存存储位置。每当有加锁请求时,通过hash算法计算出hash key值,通过key值获取对相应的bucket[id],其中,key值和id号(唯一身份识别号)相对应。如果此时有其它的关于主机对LBA进行IO访问的加锁请求或者对LBA进行垃圾回收的加锁请求,但访问的不是同一个bucket(即内存节点),则不用等待,可以并行进行相应处理。如果多个主机IO、垃圾回收加锁请求访问的是同一个bucket[id],则需要相互等待。
在一些实施例中,基于加锁请求成功的结果进行所述LBA处理包括:将加锁请求成功的结果通过回调函数向发起该LBA处理请求的请求者通知,并由请求者进行相应的LBA处理。在一些实施例中,LBA处理请求包括对LBA进行垃圾回收的请求或者主机对LBA进行IO访问的请求。本实施例中,请求者可以是主机或者垃圾回收模块。主机负责对LBA进行IO访问,垃圾回收模块(GC)负责对LBA进行垃圾回收。IO表示数据输入(Input)输出(Output)。
本发明实施例的第二个方面,还提供了一种LBA处理系统。图2示出的是本发明提供的LBA处理系统的实施例的示意图。如图2所示,一种LBA处理系统包括:加锁请求模块10,配置用于响应于收到LBA处理请求,基于LBA处理请求发起加锁请求;地址判断模块20,配置用于查找加锁请求对应的内存节点,且对内存节点加自旋锁,并判断内存节点中是否有空闲的用于存放加锁请求记录的地址;空闲内存块判断模块30,配置用于响应于内存节点中有空闲的地址,判断是否有用于存放LBA处理请求的空闲内存块;加锁请求成功模块40,配置用于响应于有空闲内存块,将LBA处理请求存放至空闲内存块,且向空闲内存块对应的空闲的地址中添加加锁请求记录以得到加锁请求成功的结果,并将自旋锁解锁;以及LBA处理模块50,配置用于基于加锁请求成功的结果进行LBA处理。
本实施例中的加锁可以是指加互斥锁。本发明实施例的LBA处理系统,通过基于LBA处理请求发起加锁请求,并对加锁请求对应的内存节点加自旋锁,以及基于对地址和内存块的占用情况判断并根据判断结果向地址中添加加锁请求记录,能够保证每次只有一个LBA处理请求(对LBA进行垃圾回收的请求或者主机对LBA进行IO访问的请求)对LBA进行处理,确保LBA相应的数据修改只能在同一时间由一个对象(主机或垃圾回收模块)来操作,实现了主机IO与垃圾回收互斥,有效避免了数据不一致问题的产生,进而减少了后期数据不一致问题定位的方向。
在一些实施例中,系统还包括等待模块,配置用于响应于内存节点中没有空闲的地址,判断是否有等待用于存放LBA处理请求的等待内存块;响应于有等待内存块,将LBA处理请求加入等待队列中,并将自旋锁解锁;响应于LBA处理请求从等待队列中移至等待内存块中,将等待内存块对应的地址中添加加锁请求记录以得到加锁请求成功的结果。
在一些实施例中,系统还包括第一解锁模块,配置用于响应于没有等待内存块,将自旋锁解锁。
在一些实施例中,系统还包括第二解锁模块,配置用于响应于没有空闲内存块,将自旋锁解锁。
在一些实施例中,地址判断模块20包括查找模块,配置用于基于加锁请求通过哈希算法计算出键值,并基于键值和内存节点的映射关系查找加锁请求对应的内存节点。
在一些实施例中,LBA处理模块50进一步配置用于将加锁请求成功的结果通过回调函数向发起LBA处理请求的请求者通知,并由请求者进行相应的LBA处理。
在一些实施例中,LBA处理请求包括对LBA进行垃圾回收的请求或者主机对LBA进行IO访问的请求。
本发明实施例的第三个方面,还提供了一种计算机可读存储介质,图3示出了根据本发明实施例提供的实现LBA处理方法的计算机可读存储介质的示意图。如图3所示,计算机可读存储介质3存储有计算机程序指令31,该计算机程序指令31被执行时实现如下步骤:
响应于收到LBA处理请求,基于LBA处理请求发起加锁请求;
查找加锁请求对应的内存节点,且对内存节点加自旋锁,并判断内存节点中是否有空闲的用于存放加锁请求记录的地址;
响应于内存节点中有空闲的地址,判断是否有用于存放LBA处理请求的空闲内存块;
响应于有空闲内存块,将LBA处理请求存放至空闲内存块,且向空闲内存块对应的空闲的地址中添加加锁请求记录以得到加锁请求成功的结果,并将自旋锁解锁;
基于加锁请求成功的结果进行LBA处理。
在一些实施例中,步骤还包括:响应于内存节点中没有空闲的地址,判断是否有等待用于存放LBA处理请求的等待内存块;响应于有等待内存块,将LBA处理请求加入等待队列中,并将自旋锁解锁;响应于LBA处理请求从等待队列中移至等待内存块中,将等待内存块对应的地址中添加加锁请求记录以得到加锁请求成功的结果。
在一些实施例中,步骤还包括:响应于没有等待内存块,将自旋锁解锁。
在一些实施例中,步骤还包括:响应于没有空闲内存块,将自旋锁解锁。
在一些实施例中,查找加锁请求对应的内存节点包括:基于加锁请求通过哈希算法计算出键值,并基于键值和内存节点的映射关系查找加锁请求对应的内存节点。
在一些实施例中,基于加锁请求成功的结果进行LBA处理包括:将加锁请求成功的结果通过回调函数向发起该LBA处理请求的请求者通知,并由请求者进行相应的LBA处理。
在一些实施例中,LBA处理请求包括对LBA进行垃圾回收的请求或者主机对LBA进行IO访问的请求。
应当理解,在相互不冲突的情况下,以上针对根据本发明的LBA处理方法阐述的所有实施方式、特征和优势同样地适用于根据本发明的LBA处理系统和存储介质。
本发明实施例的第四个方面,还提供了一种计算机设备,包括存储器402和处理器401,该存储器中存储有计算机程序,该计算机程序被该处理器执行时实现上述任意一项实施例的方法。
如图4所示,为本发明提供的执行LBA处理方法的计算机设备的一个实施例的硬件结构示意图。以如图4所示的计算机设备为例,在该计算机设备中包括一个处理器401以及一个存储器402,并还可以包括:输入装置403和输出装置404。处理器401、存储器402、输入装置403和输出装置404可以通过总线或者其他方式连接,图4中以通过总线连接为例。输入装置403可接收输入的数字或字符信息,以及产生与LBA处理系统的用户设置以及功能控制有关的键信号输入。输出装置404可包括显示屏等显示设备。
存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的LBA处理方法对应的程序指令/模块。存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储LBA处理方法的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器401通过运行存储在存储器402中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的LBA处理方法。
最后需要说明的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)或快闪存储器。易失性存储器可以包括随机存取存储器(RAM),该RAM可以充当外部高速缓存存储器。作为例子而非限制性的,RAM可以以多种形式获得,比如同步RAM(DRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDRSDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、以及直接Rambus RAM(DRRAM)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
结合这里的公开所描述的各种示例性逻辑块、模块和电路可以利用被设计成用于执行这里功能的下列部件来实现或执行:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。通用处理器可以是微处理器,但是可替换地,处理器可以是任何传统处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP和/或任何其它这种配置。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (5)
1.一种LBA处理方法,其特征在于,包括以下步骤:
响应于收到LBA处理请求,基于所述LBA处理请求发起加锁请求;
查找所述加锁请求对应的内存节点,且对所述内存节点加自旋锁,并判断所述内存节点中是否有空闲的用于存放加锁请求记录的地址;
响应于所述内存节点中有空闲的地址,判断是否有用于存放所述LBA处理请求的空闲内存块;
响应于有所述空闲内存块,将所述LBA处理请求存放至所述空闲内存块,且向所述空闲内存块对应的空闲的地址中添加加锁请求记录以得到加锁请求成功的结果,并将所述自旋锁解锁;
基于所述加锁请求成功的结果进行所述LBA处理;
响应于所述内存节点中没有所述空闲的地址,判断是否有等待用于存放所述LBA处理请求的等待内存块;
响应于没有所述等待内存块,将所述自旋锁解锁;
响应于有所述等待内存块,将所述LBA处理请求加入等待队列中,并将所述自旋锁解锁;
响应于所述LBA处理请求从等待队列中移至所述等待内存块中,将所述等待内存块对应的地址中添加加锁请求记录以得到加锁请求成功的结果;
响应于没有所述空闲内存块,将所述自旋锁解锁;
基于所述加锁请求成功的结果进行所述LBA处理包括:将所述加锁请求成功的结果通过回调函数向发起所述LBA处理请求的请求者通知,并由所述请求者进行相应的LBA处理;
所述LBA处理请求包括对LBA进行垃圾回收的请求或者主机对LBA进行IO访问的请求。
2.根据权利要求1所述的方法,其特征在于,查找所述加锁请求对应的内存节点包括:
基于所述加锁请求通过哈希算法计算出键值,并基于键值和内存节点的映射关系查找所述加锁请求对应的内存节点。
3.一种LBA处理系统,其特征在于,包括:
加锁请求模块,配置用于响应于收到LBA处理请求,基于所述LBA处理请求发起加锁请求;
地址判断模块,配置用于查找所述加锁请求对应的内存节点,且对所述内存节点加自旋锁,并判断所述内存节点中是否有空闲的用于存放加锁请求记录的地址;
空闲内存块判断模块,配置用于响应于所述内存节点中有空闲的地址,判断是否有用于存放所述LBA处理请求的空闲内存块;
加锁请求成功模块,配置用于响应于有所述空闲内存块,将所述LBA处理请求存放至所述空闲内存块,且向所述空闲内存块对应的空闲的地址中添加加锁请求记录以得到加锁请求成功的结果,并将所述自旋锁解锁;
LBA处理模块,配置用于基于所述加锁请求成功的结果进行所述LBA处理;
等待模块,配置用于响应于所述内存节点中没有所述空闲的地址,判断是否有等待用于存放所述LBA处理请求的等待内存块;响应于有所述等待内存块,将所述LBA处理请求加入等待队列中,并将所述自旋锁解锁;响应于所述LBA处理请求从等待队列中移至所述等待内存块中,将所述等待内存块对应的地址中添加加锁请求记录以得到加锁请求成功的结果;
第一解锁模块,配置用于响应于没有所述等待内存块,将所述自旋锁解锁;
第二解锁模块,配置用于响应于没有所述空闲内存块,将所述自旋锁解锁;
所述LBA处理模块进一步配置用于将所述加锁请求成功的结果通过回调函数向发起所述LBA处理请求的请求者通知,并由所述请求者进行相应的LBA处理;
所述LBA处理请求包括对LBA进行垃圾回收的请求或者主机对LBA进行IO访问的请求。
4.一种计算机可读存储介质,其特征在于,存储有计算机程序指令,所述计算机程序指令被执行时实现如权利要求1-2任意一项所述的方法。
5.一种计算机设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时执行如权利要求1-2任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110583108.8A CN113448878B (zh) | 2021-05-27 | 2021-05-27 | 一种lba处理方法、系统、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110583108.8A CN113448878B (zh) | 2021-05-27 | 2021-05-27 | 一种lba处理方法、系统、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113448878A CN113448878A (zh) | 2021-09-28 |
CN113448878B true CN113448878B (zh) | 2023-02-28 |
Family
ID=77810457
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110583108.8A Active CN113448878B (zh) | 2021-05-27 | 2021-05-27 | 一种lba处理方法、系统、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113448878B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102279810A (zh) * | 2011-08-11 | 2011-12-14 | 浪潮(北京)电子信息产业有限公司 | 一种网络存储服务器及其缓存数据的方法 |
CN110780814A (zh) * | 2019-10-10 | 2020-02-11 | 苏州浪潮智能科技有限公司 | 一种存储数据整理方法与装置 |
CN112463047A (zh) * | 2020-11-25 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种数据迁移回收方法及相关装置 |
WO2021062981A1 (zh) * | 2019-09-30 | 2021-04-08 | 深圳忆联信息系统有限公司 | Ssd数据存储节点管理方法、装置及计算机设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129391B (zh) * | 2011-03-14 | 2013-08-28 | 华中科技大学 | 一种数据库中自旋锁的实现方法 |
US9218281B2 (en) * | 2012-05-04 | 2015-12-22 | Seagate Technology Llc | Maintaining ordering via a multi-level map of a solid-state media |
CN107357648B (zh) * | 2017-05-25 | 2020-05-15 | 吕锦柏 | 一种多核cpu访问资源时自旋锁的实现方法 |
US11074179B2 (en) * | 2017-11-02 | 2021-07-27 | Hewlett Packard Enterprise Development Lp | Managing objects stored in memory |
-
2021
- 2021-05-27 CN CN202110583108.8A patent/CN113448878B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102279810A (zh) * | 2011-08-11 | 2011-12-14 | 浪潮(北京)电子信息产业有限公司 | 一种网络存储服务器及其缓存数据的方法 |
WO2021062981A1 (zh) * | 2019-09-30 | 2021-04-08 | 深圳忆联信息系统有限公司 | Ssd数据存储节点管理方法、装置及计算机设备 |
CN110780814A (zh) * | 2019-10-10 | 2020-02-11 | 苏州浪潮智能科技有限公司 | 一种存储数据整理方法与装置 |
CN112463047A (zh) * | 2020-11-25 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种数据迁移回收方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113448878A (zh) | 2021-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107273455B (zh) | 区块链数据访问方法和装置 | |
US8516021B2 (en) | Concurrent checkpointing and modifications in a transactional clustered file system | |
US8516211B2 (en) | Secure storage management system and method | |
JP2016517102A (ja) | データベースにおいて再実行データを処理するための方法および装置 | |
US20200073964A1 (en) | Transaction manager | |
CN114527942A (zh) | 一种基于固态硬盘的写数据方法、系统、存储介质及设备 | |
CN113448878B (zh) | 一种lba处理方法、系统、存储介质及设备 | |
CN113849317B (zh) | 一种内存池资源使用方法及相关装置 | |
CN114443223B (zh) | 一种裸机磁盘管理方法、装置及介质 | |
CN113626089B (zh) | 一种基于bios系统的数据操作方法、系统、介质及设备 | |
US11216439B2 (en) | Auto-expiring locks based on object stamping | |
CN111797120A (zh) | 数据获取方法、装置、计算机设备及可读存储介质 | |
US9575986B2 (en) | Method for managing design files shared by multiple users and system thereof | |
CN113971006B (zh) | 一种基于硬盘的数据写入方法、系统、存储介质及设备 | |
CN117056363B (zh) | 数据缓存方法、系统、设备以及存储介质 | |
CN116821058B (zh) | 元数据访问方法、装置、设备及存储介质 | |
Zhang et al. | Reducing aborts in distributed transactional systems through dependency detection | |
JP2848437B2 (ja) | マルチクラスタ排他制御装置 | |
JP2850857B2 (ja) | データ格納領域管理システム | |
CN113806388A (zh) | 基于分布式锁的业务处理方法及装置 | |
US8250575B2 (en) | Method and system for managing transactions utilizing a basis memory and a transaction memory | |
CN115033173A (zh) | 虚拟磁盘访问方法、系统、计算机设备和存储介质 | |
CN116881256A (zh) | 数据获取及更新方法、共享内存初始化方法及相关装置 | |
CN114090637A (zh) | 数据存取方法、装置、设备及存储介质 | |
CN117076416A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |