CN109739443B - 一种ssd混合读写的方法、装置、设备及存储介质 - Google Patents
一种ssd混合读写的方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN109739443B CN109739443B CN201910016888.0A CN201910016888A CN109739443B CN 109739443 B CN109739443 B CN 109739443B CN 201910016888 A CN201910016888 A CN 201910016888A CN 109739443 B CN109739443 B CN 109739443B
- Authority
- CN
- China
- Prior art keywords
- lock
- read
- write
- ssd
- 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
- 238000000034 method Methods 0.000 title claims abstract description 68
- 239000007787 solid Substances 0.000 title description 3
- 238000012545 processing Methods 0.000 claims abstract description 15
- 238000004590 computer program Methods 0.000 claims description 9
- 238000013461 design Methods 0.000 description 2
- 238000012005 ligant binding assay Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种SSD混合读写的方法、装置、设备及存储介质,该方法包括:接收到写请求时,通过锁管理器进行加锁处理;接收到读请求时,向锁管理器申请锁,当申请到锁时进行读操作,当申请不到锁时挂到待处理列表上。本申请采用专门的锁管理器进行读写锁的管理,可以实现IO过程中的读写加解锁,保证混合读写中写的原子性,并保证混合读写时的数据正确性,另外由于使用专门的锁管理器进行管理,能够降低IO延迟。
Description
技术领域
本发明涉及存储技术领域,特别是涉及一种SSD混合读写的方法、装置、设备及存储介质。
背景技术
固态硬盘(Solid State Drives,SSD)作为一种存储设备,其最基本的功能就是完成数据的读写和存储操作,在SSD运行过程中,经常会遇到读写混合并且读写落到同一段逻辑块地址(Logical Block Address,LBA)的情况,在这种情况下,需要进行处理以保证每个读到的数据都是正确的数据。
目前,现有的做法通常是当写的时候,往逻辑物理映射表(L2P table)中写入锁定位(lock bit),然后当读到来时,首先判断此bit是否被lock,被lock时则不去读,不被lock时才能完成正常的读操作。此种方案某次读写都需要有两次对自己核内的L2P的操作,浪费本核处理IO时间。并且在正常的IO过程中,如果不能保证写的原子性,那么一旦有读插入,就会发生读数据错误。
因此,如何实现写的原子性,保证读写时的数据正确性,是本领域技术人员亟待解决的技术问题。
发明内容
有鉴于此,本发明的目的在于提供一种SSD混合读写的方法、装置、设备及存储介质,可以实现IO过程中的读写加解锁,保证混合读写中写的原子性,并保证混合读写时的数据正确性,还可以降低IO延迟。其具体方案如下:
一种SSD混合读写的方法,包括:
接收到写请求时,通过锁管理器进行加锁处理;
接收到读请求时,向所述锁管理器申请锁,当申请到锁时进行读操作,当申请不到锁时挂到待处理列表上。
优选地,在本发明实施例提供的上述SSD混合读写的方法中,接收到写请求时,通过锁管理器进行加锁处理,具体包括:
接收到写请求时,发送消息给锁管理器;所述消息包含起始的逻辑块地址和所述逻辑块地址的个数;
通过所述锁管理器对所述逻辑块地址的范围进行判断,并对判断后的所述范围对应的逻辑块地址进行加锁处理。
优选地,在本发明实施例提供的上述SSD混合读写的方法中,在执行写请求的过程中,对于同一个逻辑块地址,后一个写请求的完成顺序要晚于前一个写请求的完成。
优选地,在本发明实施例提供的上述SSD混合读写的方法中,接收到读请求时,向所述锁管理器申请锁,当申请到锁时进行读操作,当申请不到锁时挂到待处理列表上,具体包括:
接收到读请求时,向所述锁管理器申请锁;
当申请到锁时,进行正常的读数据操作;
当申请不到锁时,将所述读请求的上下文保存到待处理列表中等待锁释放后触发所述待处理列表的处理。
优选地,在本发明实施例提供的上述SSD混合读写的方法中,还包括:
在写请求完成后,释放锁;
轮询所述待处理列表,判断是否为空;
若否,则顺序取出所述读请求的上下文进行读处理。
本发明实施例还提供了一种SSD混合读写的装置,包括:
写请求模块,用于接收到写请求时,通过锁管理器进行加锁处理;
读请求模块,用于接收到读请求时,向所述锁管理器申请锁,当申请到锁时进行读操作,当申请不到锁时挂到待处理列表上。
优选地,在本发明实施例提供的上述SSD混合读写的装置中,所述写请求模块,具体用于接收到写请求时,发送消息给锁管理器;所述消息包含起始的逻辑块地址和所述逻辑块地址的个数;通过所述锁管理器对所述逻辑块地址的范围进行判断,并对判断后的所述范围对应的逻辑块地址进行加锁处理。
优选地,在本发明实施例提供的上述SSD混合读写的装置中,所述读请求模块,具体用于接收到读请求时,向所述锁管理器申请锁;当申请到锁时,进行正常的读数据操作;当申请不到锁时,将所述读请求的上下文保存到待处理列表中等待锁释放后触发所述待处理列表的处理。
本发明实施例还提供了一种SSD混合读写的设备,包括处理器和存储器,其中,所述处理器执行所述存储器中保存的计算机程序时实现如本发明实施例提供的上述SSD混合读写的方法。
本发明实施例还提供了一种计算机可读存储介质,用于存储计算机程序,其中,所述计算机程序被处理器执行时实现如本发明实施例提供的上述SSD混合读写的方法。
从上述技术方案可以看出,本发明所提供的一种SSD混合读写的方法、装置、设备及存储介质,该方法包括:接收到写请求时,通过锁管理器进行加锁处理;接收到读请求时,向锁管理器申请锁,当申请到锁时进行读操作,当申请不到锁时挂到待处理列表上。
本发明采用专门的锁管理器进行读写锁的管理,可以实现IO过程中的读写加解锁,保证混合读写中写的原子性,并保证混合读写时的数据正确性,另外由于使用专门的锁管理器进行管理,能够降低IO延迟。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的SSD混合读写的方法的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种SSD混合读写的方法,如图1所示,包括以下步骤:
S101、接收到写请求时,通过锁管理器(lock manager)进行加锁处理;
该lock manager负责对所有写过程进行加锁处理;
S102、接收到读请求时,向锁管理器申请锁,当申请到锁时进行读操作,当申请不到锁时挂到待处理列表(pending list)上;
当读请求到来时,先去lock manager申请锁,申请到了才可以进行读,申请不到就挂入list。
在本发明实施例提供的上述SSD混合读写的方法中,首先接收到写请求时,通过锁管理器进行加锁处理;然后接收到读请求时,向锁管理器申请锁,当申请到锁时进行读操作,当申请不到锁时挂到待处理列表上。这样采用专门的锁管理器进行读写锁的管理,可以实现IO过程中的读写加解锁,保证混合读写中写的原子性,并保证混合读写时的数据正确性,另外由于使用专门的锁管理器进行管理,能够降低IO延迟(latency)。
在具体实施时,在本发明实施例提供的上述SSD混合读写的方法中,步骤S101接收到写请求时,通过锁管理器进行加锁处理,具体可以包括:接收到写请求时,发送消息给锁管理器;该消息中包含起始的逻辑块地址(LBA)和LBA的个数;通过锁管理器对LBA的范围进行判断,并对判断后的该范围对应的LBA进行加锁处理。通过这些步骤能够实现对连续LBA的写。需要说明的是,该锁管理器的设计除了保证能够实现对判断后的该范围对应的LBA进行加锁处理,还可以保证能够实现对判断后的该范围对应的LBA进行解锁处理。
进一步地,在具体实施时,在本发明实施例提供的上述SSD混合读写的方法中,在执行写请求的过程中,无需判断锁,但要保证对于同一个LBA的写的顺序性,即对于同一个LBA,后一个写请求的完成顺序要晚于前一个写请求的完成。
在具体实施时,在本发明实施例提供的上述SSD混合读写的方法中,步骤S102接收到读请求时,向锁管理器申请锁,当申请到锁时进行读操作,当申请不到锁时挂到待处理列表上,具体可以包括:接收到读请求时,向锁管理器申请锁;当申请到锁时,进行正常的读数据操作;当申请不到锁时,将读请求的上下文保存到待处理列表中等待锁释放后触发待处理列表的处理。
进一步地,在具体实施时,在本发明实施例提供的上述SSD混合读写的方法中,还可以包括:在写请求完成后,释放锁;然后轮询待处理列表,判断是否为空;若否,则顺序取出读请求的上下文进行读处理。此时可以重新执行步骤S102,以继续正常的读lock申请流程。
基于同一发明构思,本发明实施例还提供了一种SSD混合读写的装置,由于该SSD混合读写的装置解决问题的原理与前述一种SSD混合读写的方法相似,因此该SSD混合读写的装置的实施可以参见SSD混合读写的方法的实施,重复之处不再赘述。
在具体实施时,本发明实施例提供的SSD混合读写的装置,具体包括:
写请求模块,用于接收到写请求时,通过锁管理器进行加锁处理;
读请求模块,用于接收到读请求时,向锁管理器申请锁,当申请到锁时进行读操作,当申请不到锁时挂到待处理列表上。
在本发明实施例提供的上述SSD混合读写的装置中,可以通过上述两个模块的相互作用,使用专门的锁管理器实现IO过程中的读写加解锁,降低IO延迟,保证混合读写中写的原子性,并保证混合读写时的数据正确性。
进一步地,在具体实施时,在本发明实施例提供的上述SSD混合读写的装置中,上述写请求模块,具体可以用于接收到写请求时,发送消息给锁管理器;消息包含起始的逻辑块地址和逻辑块地址的个数;通过锁管理器对逻辑块地址的范围进行判断,并对判断后的范围对应的逻辑块地址进行加锁处理。
进一步地,在具体实施时,在本发明实施例提供的上述SSD混合读写的装置中,上述读请求模块,具体可以用于接收到读请求时,向锁管理器申请锁;当申请到锁时,进行正常的读数据操作;当申请不到锁时,将读请求的上下文保存到待处理列表中等待锁释放后触发待处理列表的处理。
关于上述各个模块更加具体的工作过程可以参考前述实施例公开的相应内容,在此不再进行赘述。
相应的,本发明实施例还公开了一种SSD混合读写的设备,包括处理器和存储器;其中,处理器执行存储器中保存的计算机程序时实现前述实施例公开的SSD混合读写的方法。
关于上述方法更加具体的过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
进一步的,本发明还公开了一种计算机可读存储介质,用于存储计算机程序;计算机程序被处理器执行时实现前述公开的SSD混合读写的方法。
关于上述方法更加具体的过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置、设备、存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
综上,本发明实施例提供的一种SSD混合读写的方法、装置、设备及存储介质,该方法包括:接收到写请求时,通过锁管理器进行加锁处理;接收到读请求时,向锁管理器申请锁,当申请到锁时进行读操作,当申请不到锁时挂到待处理列表上。由于采用专门的锁管理器进行读写锁的管理,可以实现IO过程中的读写加解锁,保证混合读写中写的原子性,并保证混合读写时的数据正确性,另外还可以降低IO延迟。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的SSD混合读写的方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (7)
1.一种SSD混合读写的方法,其特征在于,包括:
接收到写请求时,通过锁管理器进行加锁处理;
接收到读请求时,向所述锁管理器申请锁;
当申请到锁时,进行正常的读数据操作;
当申请不到锁时,将所述读请求的上下文保存到待处理列表中等待锁释放后触发所述待处理列表的处理;
在写请求完成后,释放锁;
轮询所述待处理列表,判断是否为空;
若否,则顺序取出所述读请求的上下文进行读处理。
2.根据权利要求1所述的SSD混合读写的方法,其特征在于,接收到写请求时,通过锁管理器进行加锁处理,具体包括:
接收到写请求时,发送消息给锁管理器;所述消息包含起始的逻辑块地址和所述逻辑块地址的个数;
通过所述锁管理器对所述逻辑块地址的范围进行判断,并对判断后的所述范围对应的逻辑块地址进行加锁处理。
3.根据权利要求2所述的SSD混合读写的方法,其特征在于,在执行写请求的过程中,对于同一个逻辑块地址,后一个写请求的完成顺序要晚于前一个写请求的完成。
4.一种SSD混合读写的装置,其特征在于,包括:
写请求模块,用于接收到写请求时,通过锁管理器进行加锁处理;
读请求模块,用于接收到读请求时,向所述锁管理器申请锁;当申请到锁时,进行正常的读数据操作;当申请不到锁时,将所述读请求的上下文保存到待处理列表中等待锁释放后触发所述待处理列表的处理;还用于在写请求完成后,释放锁;轮询所述待处理列表,判断是否为空;若否,则顺序取出所述读请求的上下文进行读处理。
5.根据权利要求4所述的SSD混合读写的装置,其特征在于,所述写请求模块,具体用于接收到写请求时,发送消息给锁管理器;所述消息包含起始的逻辑块地址和所述逻辑块地址的个数;通过所述锁管理器对所述逻辑块地址的范围进行判断,并对判断后的所述范围对应的逻辑块地址进行加锁处理。
6.一种SSD混合读写的设备,其特征在于,包括处理器和存储器,其中,所述处理器执行所述存储器中保存的计算机程序时实现如权利要求1至3任一项所述的SSD混合读写的方法。
7.一种计算机可读存储介质,其特征在于,用于存储计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至3任一项所述的SSD混合读写的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910016888.0A CN109739443B (zh) | 2019-01-08 | 2019-01-08 | 一种ssd混合读写的方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910016888.0A CN109739443B (zh) | 2019-01-08 | 2019-01-08 | 一种ssd混合读写的方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109739443A CN109739443A (zh) | 2019-05-10 |
CN109739443B true CN109739443B (zh) | 2022-02-18 |
Family
ID=66363932
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910016888.0A Active CN109739443B (zh) | 2019-01-08 | 2019-01-08 | 一种ssd混合读写的方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109739443B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110390969B (zh) * | 2019-06-28 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种实现原子写的方法和系统 |
US10860388B1 (en) * | 2019-07-09 | 2020-12-08 | Micron Technology, Inc. | Lock management for memory subsystems |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103135945A (zh) * | 2013-03-25 | 2013-06-05 | 中国人民解放军国防科学技术大学 | 用于ssd的多通道动态读写调度方法 |
CN103207841A (zh) * | 2013-03-06 | 2013-07-17 | 青岛海信传媒网络技术有限公司 | 基于键值对缓存的数据读写方法及装置 |
CN104063331A (zh) * | 2014-07-03 | 2014-09-24 | 龙芯中科技术有限公司 | 处理器、共享存储区域访问方法和锁管理器 |
CN106933491A (zh) * | 2015-12-29 | 2017-07-07 | 伊姆西公司 | 用于管理数据访问的方法及装置 |
CN107209733A (zh) * | 2015-12-31 | 2017-09-26 | 华为技术有限公司 | 写数据方法和装置以及系统 |
CN107305477A (zh) * | 2016-04-25 | 2017-10-31 | 中国科学院微电子研究所 | 一种flashcache混合存储系统的缓存读写操作方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9075720B2 (en) * | 2010-10-04 | 2015-07-07 | International Business Machines Corporation | Locking a cache line for write operations on a bus |
US20130232310A1 (en) * | 2012-03-05 | 2013-09-05 | Nec Laboratories America, Inc. | Energy efficiency in a distributed storage system |
-
2019
- 2019-01-08 CN CN201910016888.0A patent/CN109739443B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103207841A (zh) * | 2013-03-06 | 2013-07-17 | 青岛海信传媒网络技术有限公司 | 基于键值对缓存的数据读写方法及装置 |
CN103135945A (zh) * | 2013-03-25 | 2013-06-05 | 中国人民解放军国防科学技术大学 | 用于ssd的多通道动态读写调度方法 |
CN104063331A (zh) * | 2014-07-03 | 2014-09-24 | 龙芯中科技术有限公司 | 处理器、共享存储区域访问方法和锁管理器 |
CN106933491A (zh) * | 2015-12-29 | 2017-07-07 | 伊姆西公司 | 用于管理数据访问的方法及装置 |
CN107209733A (zh) * | 2015-12-31 | 2017-09-26 | 华为技术有限公司 | 写数据方法和装置以及系统 |
CN107305477A (zh) * | 2016-04-25 | 2017-10-31 | 中国科学院微电子研究所 | 一种flashcache混合存储系统的缓存读写操作方法及系统 |
Non-Patent Citations (4)
Title |
---|
"基于Linux的混合存储系统Bcache的研究与改进";唐华敏;《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》;20170315(第3期);全文 * |
H. Kishida ; H. Yamazaki."SSDLM: architecture of a distributed lock manager with high degree of locality for clustered file systems".《2003 IEEE Pacific Rim Conference on Communications Computers and Signal Processing (PACRIM 2003)》.2003, * |
Myoungwon Oh ; Jugwan Eom ; Jungyeon Yoon ; Jae Yeun Yun等."Performance Optimization for All Flash Scale-Out Storage".《2016 IEEE International Conference on Cluster Computing (CLUSTER)》.2016, * |
Tae Yong Kim ; Dong Hyun Kang ; Young Ik Eom." Improving Performance of I/O Virtualization Framework based on Multi-queue SSD".《Journal of KIISE》.2016, * |
Also Published As
Publication number | Publication date |
---|---|
CN109739443A (zh) | 2019-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5425286B2 (ja) | データ処理システムのメモリ使用状況を追跡する方法 | |
US8904067B2 (en) | Adaptive multi-threaded buffer | |
CN107066498B (zh) | 键值kv存储方法和装置 | |
US9128615B2 (en) | Storage systems that create snapshot queues | |
US20140351547A1 (en) | Linked list for lock-free memory allocation | |
US20130262426A1 (en) | Method and apparatus for accessing database and database application system | |
CN109739443B (zh) | 一种ssd混合读写的方法、装置、设备及存储介质 | |
CN108572876B (zh) | 一种读写锁的实现方法及装置 | |
US20080069361A1 (en) | Methods of managing a key cache | |
US20120311300A1 (en) | Multiprocessor synchronization using region locks | |
KR20200023757A (ko) | 메모리 시스템 | |
US10313477B2 (en) | System and method for use of a non-blocking process with a resource pool in a computing environment | |
US20130262472A1 (en) | Data existence judging device and data existence judging method | |
CN105068817B (zh) | 将数据写入存储设备的方法及存储设备 | |
US9483395B2 (en) | Asynchronous bad block management in NAND flash memory | |
US8745350B2 (en) | Temporary VTOC locking during defragmentation | |
CN107391041B (zh) | 一种数据访问方法及装置 | |
CN109508150B (zh) | 一种存储空间分配的方法和装置 | |
CN110795031A (zh) | 一种基于全闪存储的数据重删方法、装置和系统 | |
CN110390969B (zh) | 一种实现原子写的方法和系统 | |
CN111261206B (zh) | 一种读写方法、装置和电子设备及可读存储介质 | |
CN109840217B (zh) | 一种缓存资源分配和装置 | |
CN109976672B (zh) | 一种读写冲突优化方法、装置、电子设备及可读存储介质 | |
US20080244335A1 (en) | Protecting memory operations involving zero byte allocations | |
CN112650445B (zh) | 一种固态硬盘执行Trim的方法和设备 |
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 |