CN107992269B - 一种基于去重ssd的事务写入方法 - Google Patents

一种基于去重ssd的事务写入方法 Download PDF

Info

Publication number
CN107992269B
CN107992269B CN201711295161.8A CN201711295161A CN107992269B CN 107992269 B CN107992269 B CN 107992269B CN 201711295161 A CN201711295161 A CN 201711295161A CN 107992269 B CN107992269 B CN 107992269B
Authority
CN
China
Prior art keywords
transaction
mapping
address
request
fingerprint
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
Application number
CN201711295161.8A
Other languages
English (en)
Other versions
CN107992269A (zh
Inventor
童薇
冯丹
刘景宁
姜越
陈劲龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN201711295161.8A priority Critical patent/CN107992269B/zh
Publication of CN107992269A publication Critical patent/CN107992269A/zh
Application granted granted Critical
Publication of CN107992269B publication Critical patent/CN107992269B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

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

本发明公开了一种基于去重SSD的事务写入方法,包括事务读写请求、提交请求、中止请求及事务恢复方法;事务写请求根据待写入数据计算指纹,并查找指纹库或事务表,若命中,则直接更新事务表,若均不命中,则分配新物理页写入数据并更新事务表;事务读请求根据逻辑地址查找事务表或地址映射表获得对应物理地址,若命中,则返回从物理地址读取到的数据,若均不命中,则返回错误信息;提交请求更新事务表中表项,并根据事务表更新地址映射表、反向映射表及指纹库;中止请求将新分配给被中止事务的物理页标记为垃圾页;事务恢复方法在系统崩溃后根据闪存中保存的事务表重建地址映射表等信息。本发明在去重SSD中实现了事务处理机制,保证了数据一致性。

Description

一种基于去重SSD的事务写入方法
技术领域
本发明属于SSD(Solid State Disk,固态硬盘,简称固态盘)存储控制领域,更具体地,涉及一种基于去重SSD的事务写入方法。
背景技术
出于性能、寿命和成本的考虑,许多SSD产品已采用数据去重技术来减少实际写入闪存芯片的数据。数据去重技术又称为重复数据删除,指在一个数据文件集合中,只保存唯一的数据单元,而将重复的数据删除。去重技术可以改善SSD在性能、寿命和成本方面的问题,但是也带来了更多数据一致性的问题。
对于未采用去重技术的普通SSD,已有一些基于事务的解决方案为其提供数据一致性的保障。这些方案一方面可以通过事务写入操作保证访问SSD时的数据一致性,另一方面,可以通过事务恢复策略提供异常情况发生后的数据一致性。采用环状提交协议的新型存储设备——事务性闪存(Transactional Flash,即TxFlash)、支持事务之间不同的隔离级别的轻量级事务性SSD(即LightTx)、针对嵌入式数据库软件SQLite的事务性闪存转换层(即X-FTL)等均提出了用于保证普通SSD数据一致性的事务处理机制,但是这些事务处理机制都无法应用于去重SSD以满足去重SSD对事务处理的要求。
发明内容
针对现有技术的缺陷和改进需求,本发明提出了一种基于去重SSD的事务写入方法,其目的在于,利用闪存的存储特性,实现SSD对事务处理的支持,同时利用数据去重技术减少SSD事务性写入操作对SSD的写入次数,从而在保证数据一致性的前提下,减少事务性写入操作的开销,提升SSD的使用寿命。
首先,每一个事务分配有一个事务号,用于唯一标识该事务;每一个事务对应多个逻辑页到物理页的映射项。其次,本发明中主要通过地址映射表、反向映射表、指纹库以及事务表的查询和更新完成去重SSD的事务写入。地址映射表用以保存所有已提交事务的逻辑地址到物理地址的映射关系,以及映射关系的状态(有效或无效);反向映射表中保存闪存中所有已提交事务的物理地址的信息,包括该物理地址对应的所有逻辑地址以及该物理地址的索引次数;指纹库用以保存所有已提交事务中,根据数据块内容计算所得指纹值与该数据块的物理地址的映射关系;事务表是在闪存转换层(Flash Translation Layer,即FTL)中新增的一种结构,用以保存尚未提交事务的所有映射项的映射关系,以及每个映射项的状态和对应的指纹,并在事务提交时作为更新地址映射表、反向映射表以及指纹库的依据,事务表中每个映射项包含的信息具体如下:该写请求所属事务的事务号Ti,要写入的逻辑地址L,对应的物理地址P,所要写入的数据块的指纹值h,该映射项的状态S(active,valid,committed或aborted)。当事务尚未提交或中止时,映射项的状态被标记为active;事务提交时,映射项的状态被标记为valid或committed;事务被中止时,映射项的状态被标记为aborted。
为实现上述目的,按照本发明的一个方面,提供了一种基于去重SSD的事务写入方法,具体包括如下操作步骤:
(1)判断系统是否处于正常运行的状态:若是,则转入步骤(2);否则,转入步骤(7);
(2)判断用户请求的类型,当用户请求为事务写请求Write(L,Ti)时转入步骤(3);当用户请求为事务读请求Read(L,Ti)时转入步骤(4);当用户请求为事务提交请求Commit(Ti)时转入步骤(5);当用户请求为事务中止请求Abort(Ti)时转入步骤(6);
(3)根据事务写请求Write(L,Ti)的事务号Ti和逻辑地址L对所要写入的数据进行去重写入,事务写请求Write(L,Ti)结束;
(4)根据事务读请求Read(L,Ti)的事务号Ti和逻辑地址L查找事务表或者地址映射表,读取相应物理地址中的数据,事务读请求Read(L,Ti)结束;
(5)根据事务提交请求Commit(Ti)的事务号Ti更新事务表中的映射项状态,同时根据映射项的信息更新反向映射表、地址映射表以及指纹库,再将事务表刷回闪存中,事务提交请求Commit(Ti)结束;
(6)根据事务中止请求Abort(Ti)的事务号Ti,将新分配的物理页标记为垃圾页,事务中止请求Abort(Ti)结束;
(7)根据闪存中存储的事务表,重建地址映射表、反向地址映射表以及指纹库,并将未完成的事务提交请求中已写入的物理页标记为垃圾页,事务恢复结束。
进一步地,步骤(3)中,根据事务写请求Write(L,Ti)的事务号Ti和逻辑地址L对所要写入的数据进行去重写入,具体包括如下步骤:
(3.1)根据数据内容计算指纹a;
(3.2)根据指纹a在指纹库中进行查找,若指纹库中存在指纹a到物理地址P的映射关系,则表明待写入的数据为重复数据,转入步骤(3.7);否则,转入步骤(3.3);
(3.3)在事务表中逐一查找事务Ti已记录的映射项的指纹,若存在与指纹a相等的指纹h,则表明该写入的数据为重复数据,转入步骤(3.4);否则,转入步骤(3.5);
(3.4)根据指纹h对应的映射项L1→P1得到物理地址P1,在事务表中新增事务写请求Write(L,Ti)的映射项L→P1,对应的状态标记为active,指纹标记为0,事务写请求Write(L,Ti)结束;
(3.5)为事务写请求Write(L,Ti)分配新的物理页P2,将数据内容写入物理页P2中;
(3.6)在事务表中新增映射项L→P2,对应的状态标记为active,指纹标记为a,事务写请求Write(L,Ti)结束;
(3.7)在事务表中新增映射项L→P,对应的状态标记为active,指纹标记为0,事务写请求Write(L,Ti)结束。
进一步地,步骤(4)中,根据事务读请求Read(L,Ti)的事务号Ti和逻辑地址L查找事务表或者地址映射表,读取相应物理地址中的数据,具体包括如下步骤:
(4.1)在事务表中逐一查找事务Ti的每个映射项,若存在映射项L→P,则转入步骤(4.2);否则,转入步骤(4.3);
(4.2)根据映射项L→P,获取物理地址,转入步骤(4.4);
(4.3)根据逻辑地址L查找地址映射表,若存在逻辑地址L到物理地址P1的映射关系F1,则根据映射关系F1获取物理地址,转入步骤(4.4);否则,转入步骤(4.5);
(4.4)根据获取到的物理地址,读取对应物理页中的数据并将其返回,事务读请求Read(L,Ti)结束;
(4.5)事务读请求Read(L,Ti)的逻辑地址L无效,返回错误,事务读请求Read(L,Ti)结束。
进一步地,步骤(5)中,根据事务提交请求Commit(Ti)的事务号Ti更新事务表中的映射项状态,同时根据映射项的信息更新反向映射表、地址映射表以及指纹库,再将事务表刷回闪存中,具体包括如下步骤:
(5.1)将事务Ti的最后一项映射项状态更新为committed,其余映射项状态更新为valid;
(5.2)对于映射项L→P,若指纹为0,则表明该映射项对应的数据是重复数据,转入步骤(5.3);否则,表明该映射项所对应的数据是新写入的数据,转入步骤(5.9);
(5.3)根据映射项L→P的逻辑地址L查找地址映射表,若地址映射表中存在逻辑地址L到物理地址P1的映射关系F1,则转入步骤(5.4);否则,转入步骤(5.7);
(5.4)比较物理地址P与物理地址P1,若物理地址P与物理地址P1相等,则转入步骤(5.15);否则,转入步骤(5.5);
(5.5)将映射关系F1的状态标记为无效;
(5.6)将反向映射表中物理地址P1的索引次数减1,并从物理地址P1对应的逻辑地址中删除逻辑地址L;
(5.7)根据映射项L→P,在地址映射表中新增逻辑地址L到物理地址P的映射关系F,并映射关系F的状态标记为有效;
(5.8)在反向映射表中向物理地址P的逻辑地址表中添加逻辑地址L,并将物理地址P的索引次数加1,转入步骤(5.15);
(5.9)根据映射项L→P的逻辑地址L查找地址映射表,若存在逻辑地址L到物理地址P2的映射关系F2,则转入步骤(5.10);否则,转入步骤(5.12);
(5.10)将地址映射表中的映射关系F2标记为无效;
(5.11)将反向映射表中物理地址P2的索引次数减1,并从物理地址P2对应的逻辑地址中删除逻辑地址L;
(5.12)根据映射项L→P,在地址映射表中新增逻辑地址L到物理地址P的映射关系F,并将映射关系F的状态标记为有效;
(5.13)根据事务表中映射项L→P的指纹h,向指纹库中添加指纹a到物理地址P的映射关系,指纹a的取值即为指纹h的取值;
(5.14)在反向映射表中向物理地址P对应的逻辑地址中添加逻辑地址L,并将物理地址P的索引次数标记为1;
(5.15)若映射项L→P的状态为committed,则转入步骤(5.16);否则,依次读取事务Ti的下一个映射项,转入步骤(5.2);
(5.16)将事务表中事务Ti的所有映射项写到闪存中,事务提交请求Commit(Ti)结束。
进一步地,步骤(6)中,根据事务中止请求Abort(Ti)的事务号Ti,将新分配的物理页标记为垃圾页,具体包括如下步骤:
(6.1)将事务表中事务Ti的所有映射项的状态标记为aborted;
(6.2)对于映射项L→P,读取对应的指纹h,若指纹h不为0,则表明该数据是新写入的数据,转入步骤(6.3);否则,表明该数据是重复数据,转入步骤(6.4);
(6.3)根据映射项L→P,将物理地址P对应的物理页标记为垃圾页,转入步骤(6.4);
(6.4)若事务Ti的所有映射项处理完成,则事务中止请求Abort(Ti)结束;否则,依次读取事务Ti的下一个映射项,转入步骤(6.2)。
进一步地,步骤(7)中,根据闪存中存储的事务表,重建地址映射表、反向地址映射表以及指纹库,并将未完成的事务新分配的物理页标记为垃圾页,具体包括如下步骤:
(7.1)对于事务Ti,读取闪存中保存的每个映射项的状态;
(7.2)若事务Ti的最后一项映射项的状态为committed,则事务Ti对应的事务提交请求已完成,转入步骤(7.3);否则,事务Ti对应的事务提交请求未完成,转入步骤(7.4);
(7.3)根据事务表中事务Ti的所有映射项的映射信息、状态信息以及指纹,重建地址映射表、反向映射表以及指纹库,转入步骤(7.5);
(7.4)根据事务表中事务Ti的所有映射项的指纹信息,将该事务新分配的所有物理页均标记为垃圾页,转入步骤(7.5);
(7.5)若事务表中所有事务均已恢复,则事务恢复结束;否则,依次读取事务表中的下一个事务,转入步骤(7.1)。
总体而言,通过本发明所构思的以上技术方案能够取得以下有益效果:
(1)通过在去重SSD中新增用于记录事务映射项及指纹信息的事务表,在去重SSD中实现了事务写请求、事务读请求、事务提交请求以及事务中止请求的事务处理机制,从而保证了去重SSD的数据一致性;
(2)对于未提交事务的映射信息和指纹信息,仅允许该事务的读写请求、中止请求或提交请求读取,保证了不同事务之间的相互隔离;
(3)提供了事务恢复方法,通过将事务表中的映射信息刷回闪存中保存,可以在系统异常崩溃后重建地址映射表、反向映射表以及指纹库,同时避免了对地址映射表进行额外的持久化操作,并针对映射信息持久化过程中发生的崩溃提出恢复策略,保证了去重SSD在系统异常崩溃后的数据一致性。
附图说明
图1是本发明提出的事务处理机制的流程图;
图2是本发明中事务写请求的处理流程图;
图3是本发明中事务读请求的处理流程图;
图4是本发明中事务提交请求的处理流程图;
图5是本发明中事务中止请求的处理流程图;
图6是本发明中事务恢复方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明提供的基于去重SSD的事务写入方法,如图1所示,具体包括如下操作步骤:
(1)判断系统是否处于正常运行的状态:若是则转入步骤(2);否则,转入步骤(7);
(2)判断用户请求的类型,当用户请求为事务写请求Write(L,Ti)时转入步骤(3);当用户请求为事务读请求Read(L,Ti)时转入步骤(4);当用户请求为事务提交请求Commit(Ti)时转入步骤(5);当用户请求为事务中止请求Abort(Ti)时转入步骤(6);
(3)根据事务写请求Write(L,Ti)的事务号Ti和逻辑地址L对所要写入的数据进行去重写入,事务写请求Write(L,Ti)结束;
(4)根据事务读请求Read(L,Ti)的事务号Ti和逻辑地址L查找事务表或者地址映射表,读取相应物理地址中的数据,事务读请求Read(L,Ti)结束;
(5)根据事务提交请求Commit(Ti)的事务号Ti更新事务表中的映射项状态,同时根据映射项的信息更新反向映射表、地址映射表以及指纹库,再将事务表刷回闪存中,事务提交请求Commit(Ti)结束;
(6)根据事务中止请求Abort(Ti)的事务号Ti,将新分配的物理页标记为垃圾页,事务中止请求Abort(Ti)结束;
(7)根据闪存中存储的事务表,重建地址映射表、反向地址映射表以及指纹库,并将未完成的事务提交请求中已写入的物理页标记为垃圾页,事务恢复结束。
如图2所示,步骤(3)中,根据事务写请求Write(L,Ti)的事务号Ti和逻辑地址L对所要写入的数据进行去重写入,具体包括如下步骤:
(3.1)根据数据内容计算指纹a;
(3.2)根据指纹a在指纹库中进行查找,若指纹库中存在指纹a到物理地址P的映射关系,则表明待写入的数据为重复数据,转入步骤(3.7);否则,转入步骤(3.3);
(3.3)在事务表中逐一查找事务Ti已记录的映射项的指纹,若存在与指纹a相等的指纹h,则表明待写入的数据为重复数据,转入步骤(3.4);否则,转入步骤(3.5);
(3.4)根据指纹h对应的映射项L1→P1得到物理地址P1,在事务表中新增事务写请求Write(L,Ti)的映射项L→P1,对应的状态标记为active,指纹标记为0,事务写请求Write(L,Ti)结束;
(3.5)为事务写请求Write(L,Ti)分配新的物理页P2,将数据内容写入物理页P2中;
(3.6)在事务表中新增映射项L→P2,对应的状态标记为active,指纹标记为a,事务写请求Write(L,Ti)结束;
(3.7)在事务表中新增映射项L→P,对应的状态标记为active,指纹标记为0,事务写请求Write(L,Ti)结束。
如图3所示,步骤(4)中,根据事务读请求Read(L,Ti)的事务号Ti和逻辑地址L查找事务表或者地址映射表,读取相应物理地址中的数据,具体包括如下步骤:
(4.1)在事务表中逐一查找事务Ti的每个映射项,若存在映射项L→P,则转入步骤(4.2);否则,转入步骤(4.3);
(4.2)根据映射项L→P,获取物理地址,转入步骤(4.4);
(4.3)根据逻辑地址L查找地址映射表,若存在逻辑地址L到物理地址P1的映射关系F1,则根据映射关系F1获取物理地址,转入步骤(4.4);否则,转入步骤(4.5);
(4.4)根据获取到的物理地址,读取对应物理页中的数据并将其返回,事务读请求Read(L,Ti)结束;
(4.5)事务读请求Read(L,Ti)的逻辑地址L无效,返回错误,事务读请求Read(L,Ti)结束。
如图4所示,步骤(5)中,根据事务提交请求Commit(Ti)的事务号Ti更新事务表中的映射项状态,同时根据映射项的信息更新反向映射表、地址映射表以及指纹库,再将事务表刷回闪存中,具体包括如下步骤:
(5.1)将事务Ti的最后一项映射项状态更新为committed,其余映射项状态更新为valid;
(5.2)对于映射项L→P,若指纹为0,则表明该映射项对应的数据是重复数据,转入步骤(5.3);否则,表明该映射项所对应的数据是新写入的数据,转入步骤(5.9);
(5.3)根据映射项L→P的逻辑地址L查找地址映射表,若地址映射表中存在逻辑地址L到物理地址P1的映射关系F1,则转入步骤(5.4);否则,转入步骤(5.7);
(5.4)比较物理地址P与物理地址P1,若物理地址P与物理地址P1相等,则转入步骤(5.15);否则,转入步骤(5.5);
(5.5)将映射关系F1的状态标记为无效;
(5.6)将反向映射表中物理地址P1的索引次数减1,并从物理地址P1对应的逻辑地址中删除逻辑地址L;
(5.7)根据映射项L→P,在地址映射表中新增逻辑地址L到物理地址P的映射关系F,并映射关系F的状态标记为有效;
(5.8)在反向映射表中向物理地址P对应的逻辑地址中添加逻辑地址L,并将物理地址P的索引次数加1,转入步骤(5.15);
(5.9)根据映射项L→P的逻辑地址L查找地址映射表,若存在逻辑地址L到物理地址P2的映射关系F2,则转入步骤(5.10);否则,转入步骤(5.12);
(5.10)将地址映射表中的映射关系F2标记为无效;
(5.11)将反向映射表中物理地址P2的索引次数减1,并从物理地址P2对应的逻辑地址中删除逻辑地址L;
(5.12)根据映射项L→P,在地址映射表中新增逻辑地址L到物理地址P的映射关系F,并将映射关系F的状态标记为有效;
(5.13)根据事务表中映射项L→P的指纹h,向指纹库中添加指纹h到物理地址P的映射关系;
(5.14)在反向映射表中向物理地址P对应的逻辑地址中添加逻辑地址L,并将物理地址P的索引次数标记为1;
(5.15)若映射项L→P的状态为committed,则转入步骤(5.16);否则,依次读取事务Ti的下一个映射项,转入步骤(5.2);
(5.16)将事务表中事务Ti的所有映射项写到闪存中,事务提交请求Commit(Ti)结束。
如图5所示,步骤(6)中,根据事务中止请求Abort(Ti)的事务号Ti,将新分配的物理页标记为垃圾页,具体包括如下步骤:
(6.1)将事务表中事务Ti的所有映射项的状态标记为aborted;
(6.2)对于映射项L→P,读取对应的指纹h,若指纹h不为0,则表明该数据是新写入的数据,转入步骤(6.3);否则,表明该数据是重复数据,转入步骤(6.4);
(6.3)根据映射项L→P,将物理地址P对应的物理页标记为垃圾页,转入步骤(6.4);
(6.4)若事务Ti的所有映射项处理完成,则事务中止请求Abort(Ti)结束;否则,依次读取事务Ti的下一个映射项,转入步骤(6.2)。
如图6所示,步骤(7)中,根据闪存中存储的事务表,重建地址映射表、反向地址映射表以及指纹库,并将未完成的事务提交请求中已写入的物理页标记为垃圾页,具体包括如下步骤:
(7.1)对于事务Ti,读取闪存中保存的每个映射项的状态;
(7.2)若事务Ti的最后一项映射项的状态为committed,则事务Ti对应的事务提交请求已完成,转入步骤(7.3);否则,事务Ti对应的事务提交请求未完成,转入步骤(7.4);
(7.3)根据事务表中事务Ti的所有映射项的映射信息、状态信息以及指纹,对事务Ti执行事务提交请求,以重建地址映射表、反向映射表以及指纹库,转入步骤(7.5);
(7.4)根据事务表中事务Ti的所有映射项的指纹信息,将每个映射项对应的物理页均标记为垃圾页,转入步骤(7.5);
(7.5)若事务表中所有事务均已恢复,则事务恢复结束;否则,依次读取事务表中的下一个事务,转入步骤(7.1)。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种基于去重SSD的事务写入方法,其特征在于,包括如下操作步骤:
(1)判断系统是否处于正常运行的状态,若是,则转入步骤(2);若否,则转入步骤(7);
(2)判断用户请求的类型,当用户请求为事务写请求Write(L,Ti)时转入步骤(3);当用户请求为事务读请求Read(L,Ti)时转入步骤(4);当用户请求为事务提交请求Commit(Ti)时转入步骤(5);当用户请求为事务中止请求Abort(Ti)时转入步骤(6);
(3)根据事务写请求Write(L,Ti)的事务号Ti和逻辑地址L对所要写入的数据进行去重写入,事务写请求Write(L,Ti)结束;
(4)根据事务读请求Read(L,Ti)的事务号Ti和逻辑地址L查找事务表或者地址映射表,读取相应物理地址中的数据,事务读请求Read(L,Ti)结束;
(5)根据事务提交请求Commit(Ti)的事务号Ti更新事务表中的映射项状态,同时根据映射项的信息更新反向映射表、地址映射表以及指纹库,再将事务表刷回闪存中,事务提交请求Commit(Ti)结束;
(6)根据事务中止请求Abort(Ti)的事务号Ti,将新分配的物理页标记为垃圾页,事务中止请求Abort(Ti)结束;
(7)根据闪存中存储的事务表,重建地址映射表、反向地址映射表以及指纹库,并将未完成的事务提交请求中已写入的物理页标记为垃圾页,事务恢复结束。
2.如权利要求1所述的基于去重SSD的事务写入方法,其特征在于,所述步骤(3)中,根据事务写请求Write(L,Ti)的事务号Ti和逻辑地址L对所要写入的数据进行去重写入,具体包括如下步骤:
(3.1)根据数据内容计算指纹a;
(3.2)根据指纹a在指纹库中进行查找,若指纹库中存在指纹a到物理地址P的映射关系,表明该数据为重复数据,则转入步骤(3.7);否则,转入步骤(3.3);
(3.3)在事务表中逐一查找事务Ti已记录的映射项的指纹值,若存在与指纹a相等的指纹h,表明该数据为重复数据,则转入步骤(3.4);否则,转入步骤(3.5);
(3.4)根据指纹h对应的映射项L1→P1得到物理地址P1,在事务表中新增事务写请求Write(L,Ti)的映射项L→P1,对应的状态标记为active,指纹值标记为0,事务写请求Write(L,Ti)结束;
(3.5)为事务写请求Write(L,Ti)分配新的物理页P2,将数据内容写入物理页P2中;
(3.6)在事务表中新增映射项L→P2,对应的状态标记为active,指纹标记为a,事务写请求Write(L,Ti)结束;
(3.7)在事务表中新增映射项L→P,对应的状态标记为active,指纹标记为0,事务写请求Write(L,Ti)结束;
所述事务表用于保存尚未提交事务的所有映射项的映射关系,其中每个映射项包含的信息具体为:写请求所属事务的事务号、要写入的逻辑地址、对应的物理地址、所要写入的数据块的指纹值以及该映射项的状态。
3.如权利要求1所述的基于去重SSD的事务写入方法,其特征在于,所述步骤(4)中,根据事务读请求Read(L,Ti)的事务号Ti和逻辑地址L查找事务表或者地址映射表,读取相应物理地址中的数据,具体包括如下步骤:
(4.1)在事务表中逐一查找事务Ti的每个映射项,若存在映射项L→P,则转入步骤(4.2);否则,转入步骤(4.3);
(4.2)根据映射项L→P,获取物理地址,转入步骤(4.4);
(4.3)根据逻辑地址L查找地址映射表,若存在逻辑地址L到物理地址P1的映射关系F1,则根据映射关系F1获取物理地址,转入步骤(4.4);否则,转入步骤(4.5);
(4.4)根据获取到的物理地址,读取对应物理页中的数据并将其返回,事务读请求Read(L,Ti)结束;
(4.5)事务读请求Read(L,Ti)的逻辑地址L无效,返回错误,事务读请求Read(L,Ti)结束。
4.如权利要求1所述的基于去重SSD的事务写入方法,其特征在于,所述步骤(5)中,根据事务提交请求Commit(Ti)的事务号Ti更新事务表中的映射项状态,同时根据映射项的信息更新反向映射表、地址映射表以及指纹库,再将事务表刷回闪存中,具体包括如下步骤:
(5.1)将事务表中事务Ti的最后一项映射项状态更新为committed,其余映射项状态更新为valid;
(5.2)对于映射项L→P,若指纹为0,则表明该映射项对应的数据是重复数据,转入步骤(5.3);否则,表明该映射项所对应的数据是新写入的数据,转入步骤(5.9);
(5.3)根据映射项L→P的逻辑地址L查找地址映射表,若地址映射表中存在逻辑地址L到物理地址P1的映射关系F1,则转入步骤(5.4);否则,转入步骤(5.7);
(5.4)比较物理地址P与物理地址P1,若物理地址P与物理地址P1相等,则转入步骤(5.15);否则,转入步骤(5.5);
(5.5)将映射关系F1的状态标记为无效;
(5.6)将反向映射表中物理地址P1的索引次数减1,并从物理地址P1对应的逻辑地址中删除逻辑地址L;
(5.7)根据映射项L→P,在地址映射表中新增逻辑地址L到物理地址P的映射关系F,并映射关系F的状态标记为有效;
(5.8)在反向映射表中向物理地址P对应的逻辑地址中添加逻辑地址L,并将物理地址P的索引次数加1,转入步骤(5.15);
(5.9)根据映射项L→P的逻辑地址L查找地址映射表,若存在逻辑地址L到物理地址P2的映射关系F2,则转入步骤(5.10);否则,转入步骤(5.12);
(5.10)将地址映射表中的映射关系F2标记为无效;
(5.11)将反向映射表中物理地址P2的索引次数减1,并从物理地址P2对应的逻辑地址中删除逻辑地址L;
(5.12)根据映射项L→P,在地址映射表中新增逻辑地址L到物理地址P的映射关系F,并将映射关系F的状态标记为有效;
(5.13)根据事务表中映射项L→P的指纹h,向指纹库中添加指纹h到物理地址P的映射关系;
(5.14)在反向映射表中向物理地址P对应的逻辑地址中添加逻辑地址L,并将物理地址P的索引次数标记为1;
(5.15)若映射项L→P的状态为committed,则转入步骤(5.16);否则,依次读取事务Ti的下一个映射项,转入步骤(5.2);
(5.16)将事务表中事务Ti的所有映射项写到闪存中,事务提交请求Commit(Ti)结束。
5.如权利要求1所述的基于去重SSD的事务写入方法,其特征在于,所述步骤(6)中,根据事务中止请求Abort(Ti)的事务号Ti,将为事务Ti新分配的物理页全部标记为垃圾页,具体包括如下步骤:
(6.1)将事务表中事务Ti的所有映射项的状态标记为aborted;
(6.2)对于映射项L→P,读取对应的指纹h,若指纹h不为0,说明为该映射项对应的写请求分配了新物理页,则转入步骤(6.3);否则,转入步骤(6.4);
(6.3)根据映射项L→P,将物理地址P对应的物理页标记为垃圾页,转入步骤(6.4);
(6.4)若事务Ti的所有映射项处理完成,则事务中止请求Abort(Ti)结束;否则,依次读取事务Ti的下一个映射项,转入步骤(6.2)。
6.如权利要求1所述的基于去重SSD的事务写入方法,其特征在于,所述步骤(7)中,根据闪存中存储的事务表,重建地址映射表、反向地址映射表以及指纹库,并将未完成的事务所分配的物理页标记为垃圾页,具体包括如下步骤:
(7.1)对于事务Ti,读取闪存中保存的每个映射项的状态;
(7.2)若事务Ti的最后一项映射项的状态为committed,则转入步骤(7.3);否则,转入步骤(7.4);
(7.3)根据事务表中事务Ti的所有映射项的映射信息、状态信息以及指纹,重建地址映射表、反向映射表以及指纹库,转入步骤(7.5);
(7.4)根据事务表中事务Ti的所有映射项的映射信息,将该事务新分配的所有物理页均标记为垃圾页,转入步骤(7.5);
(7.5)若事务表中所有事务均已恢复,则事务恢复结束;否则,依次读取事务表中的下一个事务,转入步骤(7.1)。
CN201711295161.8A 2017-12-08 2017-12-08 一种基于去重ssd的事务写入方法 Active CN107992269B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711295161.8A CN107992269B (zh) 2017-12-08 2017-12-08 一种基于去重ssd的事务写入方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711295161.8A CN107992269B (zh) 2017-12-08 2017-12-08 一种基于去重ssd的事务写入方法

Publications (2)

Publication Number Publication Date
CN107992269A CN107992269A (zh) 2018-05-04
CN107992269B true CN107992269B (zh) 2020-01-03

Family

ID=62036957

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711295161.8A Active CN107992269B (zh) 2017-12-08 2017-12-08 一种基于去重ssd的事务写入方法

Country Status (1)

Country Link
CN (1) CN107992269B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108762668B (zh) * 2018-05-07 2021-03-09 杭州宏杉科技股份有限公司 一种处理写入冲突的方法及装置
CN108763105B (zh) * 2018-05-28 2020-12-01 深圳忆联信息系统有限公司 提升固态存储设备写性能的方法、装置及计算机设备
CN109213450B (zh) * 2018-09-10 2021-08-31 郑州云海信息技术有限公司 一种基于闪存阵列的关联元数据删除方法、装置及设备
CN110187834B (zh) * 2019-05-24 2022-08-09 杭州宏杉科技股份有限公司 重删副本的数据处理方法、装置、电子设备
CN113778330B (zh) * 2021-08-05 2023-04-25 无锡融卡科技有限公司 一种基于Flash存储器的事务处理方法
CN114968103B (zh) * 2022-05-27 2024-06-18 厦门大学 一种基于持久性内存的指纹存储方法
CN115202590B (zh) * 2022-09-15 2022-12-16 中电云数智科技有限公司 一种对固态硬盘ssd重定向数据的处理方法及装置
CN115563026B (zh) * 2022-12-07 2023-04-14 合肥康芯威存储技术有限公司 一种映射表的重建方法及数据存储设备
CN116126591B (zh) * 2022-12-23 2023-12-15 北京熵核科技有限公司 一种嵌入式系统的事务机制

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110055471A1 (en) * 2009-08-28 2011-03-03 Jonathan Thatcher Apparatus, system, and method for improved data deduplication
US8880476B2 (en) * 2012-06-28 2014-11-04 International Business Machines Corporation Low-overhead enhancement of reliability of journaled file system using solid state storage and de-duplication

Also Published As

Publication number Publication date
CN107992269A (zh) 2018-05-04

Similar Documents

Publication Publication Date Title
CN107992269B (zh) 一种基于去重ssd的事务写入方法
WO2017190604A1 (zh) 数据库系统中事务恢复的方法与数据库管理系统
US11360863B2 (en) Key-value store on persistent memory
US10176190B2 (en) Data integrity and loss resistance in high performance and high capacity storage deduplication
US7856522B2 (en) Flash-aware storage optimized for mobile and embedded DBMS on NAND flash memory
US9146877B2 (en) Storage system capable of managing a plurality of snapshot families and method of snapshot family based read
US9043334B2 (en) Method and system for accessing files on a storage system
Levandoski et al. LLAMA: A cache/storage subsystem for modern hardware
CN111026329B (zh) 基于主机管理瓦记录磁盘的键值存储系统及数据处理方法
WO2013174305A1 (zh) 基于SSD的Key-Value型本地存储方法及系统
CN110196818B (zh) 缓存数据的方法、缓存设备和存储系统
CN113515501B (zh) 非易失性内存数据库管理系统恢复方法、装置和电子设备
CN110597663A (zh) 一种事务处理方法及装置
US20220129420A1 (en) Method for facilitating recovery from crash of solid-state storage device, method of data synchronization, computer system, and solid-state storage device
US20120290547A1 (en) Transaction processing device, transaction processing method, and transaction processing program
US20180074917A1 (en) Cache recovery for failed database instances
CN106970937B (zh) 一种基于本地缓存快速建立索引的方法及系统
CN111443874B (zh) 基于内容感知的固态盘内存缓存管理方法、设备及固态盘
CN109002400A (zh) 一种内容感知型计算机缓存管理系统及方法
CN110659305B (zh) 基于非易失存储系统的高性能关系型数据库服务系统
US20120317384A1 (en) Data storage method
KR101419428B1 (ko) 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법
US10452496B2 (en) System and method for managing storage transaction requests
CN114816224A (zh) 数据管理方法和数据管理装置
CN115437550A (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