CN118092799A - 基于重复数据删除的闪存性能和可靠性提升方法及系统 - Google Patents
基于重复数据删除的闪存性能和可靠性提升方法及系统 Download PDFInfo
- Publication number
- CN118092799A CN118092799A CN202410224135.XA CN202410224135A CN118092799A CN 118092799 A CN118092799 A CN 118092799A CN 202410224135 A CN202410224135 A CN 202410224135A CN 118092799 A CN118092799 A CN 118092799A
- Authority
- CN
- China
- Prior art keywords
- data
- request
- flash memory
- read
- write
- 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
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000012217 deletion Methods 0.000 title claims abstract description 9
- 230000037430 deletion Effects 0.000 title claims abstract description 9
- 230000007334 memory performance Effects 0.000 title abstract description 3
- 238000012545 processing Methods 0.000 claims description 34
- 238000013507 mapping Methods 0.000 claims description 24
- 238000009826 distribution Methods 0.000 claims description 19
- 238000011084 recovery Methods 0.000 claims description 14
- 230000003068 static effect Effects 0.000 claims description 5
- 238000005516 engineering process Methods 0.000 abstract description 13
- 230000006870 function Effects 0.000 abstract description 13
- 238000010586 diagram Methods 0.000 description 11
- 238000003860 storage Methods 0.000 description 7
- 239000007787 solid Substances 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 230000002708 enhancing effect Effects 0.000 description 3
- 101100353051 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) epp-1 gene Proteins 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 101150034591 PPN1 gene Proteins 0.000 description 1
- -1 PPN4 Proteins 0.000 description 1
- 101001122833 Paramecium tetraurelia Serine/threonine-protein phosphatase PP2A catalytic subunit 2 Proteins 0.000 description 1
- 101001122827 Paramecium tetraurelia Serine/threonine-protein phosphatase PP2A catalytic subunit 3 Proteins 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- 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/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- 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
- 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/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明一种基于重复数据删除的闪存性能和可靠性提升方法及系统,在固态盘上设置闪存重复数据删除系统的指纹索引表、重复数据删除功能、读写干扰检测功能、读请求位置重定向功能和数据恢复功能;当服务写入请求的时候,通过检测索引表来判断该请求是否需要删除,如果写请求的引用次数达到阈值需要将该数据进行备份;当服务读请求的时候,通过读写干扰模块检测数据读取的过程中是否被正在执行的写请求干扰,如果确定被写请求干扰则通过读请求位置重定向功能访问备份数据的位置。本发明在减少闪存空间开销的基础上,优化了因闪存读写干扰而带来的闪存性能下降问题,同时优化了因重复数据删除技术而导致的数据可靠性问题。
Description
技术领域
本发明涉及计算机存储领域,具体涉及一种基于重复数据删除的闪存性能和可靠性提升方法及系统。
背景技术
在当今数字化时代,随着全球信息存储量的不断增加,对存储系统的需求也越来越高。因此,存储技术的发展变得尤为重要,尤其是闪存存储器(Solid-State Drive,SSD)技术,在计算机存储发展中极具重要性,已经产生了深远的影响,并在多个方面推动了存储技术的进步。闪存具备高存储密度,使得用户可以获得更大容量的存储空间,而且物理体积更小;具有更快的读写速度和更低的访问延迟,在计算机系统、处理大规模数据、运行复杂应用程序和启动操作系统方面表现尤为明显;不包含运动部件,具有较高的耐用性,较少受到震动和冲击的影响,因此更耐用,更不容易出现硬件故障,相对于机械硬盘而言寿命更长。所以闪存的存储设备已成为传统机械硬盘(HDD)强有力的替代品。闪存的应用场景非常广泛,不仅可以运用于日常的智能手机、平板电脑、便携式音频播放器、数字相机和摄像机等移动设备中,也可以运用于企业级服务器,计算机和人工智能等诸多领域。
存储市场上有许多不同类型的闪存芯片。早期的单级单元(SLC)闪存芯片在每个单元(即单个浮栅晶体管)中存储一位数据。每个晶体管可以设置为固定电压范围内的特定阈值电压。通过对晶体管进行充电和放电操作来进行数据擦除及写入。SLC闪存芯片将这个固定范围分为两个电压窗口,一个窗口代表位值0,另一个窗口代表位值1,也就是只有0、1两种电压变化。之后MLC闪存芯片将电压范围被分为四个电压窗口,分别代表每个可能的2位值(00、01、10和11)。依此类推,TLC闪存芯片可以存储3位值,QLC闪存芯片可以存储4位值。
从SLC到QLC,闪存芯片不仅提供了更高的密度,也提供了更低的成本,但是代价是更低的性能和耐久性。因为随着密度增大的同时会导致不同电压状态变多且越难控制,需要实现对闪存设备的浮动门的精确分配电荷,所以会设置一个更复杂、更耗时的编程算法,写入所用的时间变长,读写延迟之间的差距越来越大。在读写混合的并行工作负载的条件下,当读请求正在执行中占用闪存资源的时候,会阻碍读请求访问数据,读写延迟的差距越大,读写干扰的问题就越严重,闪存性能下降,用户读取数据需要等待的时间就会越长。
另一方面,重复数据删除技术已经广泛应用于基于闪存存储的商品中,目的是通过删除冗余写数据来提高闪存的可靠性和空间效率。但是重复数据删除技术只保存唯一数据,当关键数据块产生错误或丢失,就无法恢复数据而造成系统错误。有研究表明,Google数据中心6年生产使用中数百万种不同闪存型号,26-60%的闪存驱动器遇到无法纠正的错误,每1,000个驱动器日中有26个遇到不可纠正的错误。因此保障数据的可靠性是至关重要的。
发明内容
针对上述提到的技术问题,本申请的实施例的目的在于提出了一种基于重复数据删除的闪存性能和可靠性提升方法及系统,基于重复数据删除技术,建立闪存数据的元数据索引表存放数据的引用次数,通过重复数据删除技术删除计划外的冗余写请求,只保留引用技术较高的数据的冗余写请求,并且构建固态盘阵列,通过检查其余数据和奇偶校验信息,来重新创建丢失数据的信息,加强数据的可靠性。
本发明的技术方案如下。
一方面,一种基于重复数据删除的闪存性能和可靠性提升方法,包括:
请求类型判断步骤S1,获取请求数据,判断请求类型,如果是写请求,转入写请求处理步骤;如果是读请求,转入读请求处理步骤;如果是数据丢失或故障请求,转入数据丢失或故障请求处理步骤;
写请求处理步骤S2,查找指纹索引表判断是否是冗余的写请求数据,如果该写请求是初次写入,更新指纹索引表,使用静态分配和动态分配结合的方式给写请求分配物理地址,同时更新闪存地址映射表;如果该写请求数据的指纹能够在指纹索引表中找到,则判断引用次数是否等于阈值的倍数且倍数小于等于2,如果不是,删除该写请求,如果是,使用动态分配的方式给写请求分配物理地址,同时更新副本表和闪存地址映射表;最后写入闪存;
读请求处理步骤S3,根据读请求的逻辑地址号查找闪存地址映射表获取原数据物理地址号;判断读请求将要访问的闪存总线和闪存芯片是否正在服务写请求;如果是,则查看索引表是否存在副本数据,如果副本数据所在的闪存总线和闪存芯片处于空闲状态,修改读请求的物理地址为副本所在的物理地址,读请求转向访问副本数据;如果副本数据所在的闪存总线和芯片处于忙碌状态,比较原数据所处的通道请求队列和副本数据所处通道的请求队列的数量,将读请求的物理地址修改为请求数量较少的队列;最后等待进入闪存芯片,将数据从页中读取到平面中的数据寄存器中,将数据返回;
数据丢失或故障请求处理步骤S4,根据数据是否有冗余来确定恢复数据的方法;创建子读请求,根据读取到的数据恢复被损坏的数据。
优选的,所述写请求处理步骤S2,具体包括:
S20,通过写请求的指纹值,查看指纹索引表中对应的引用计数,如果引用计数大于1,转入S21;如果没有查找到对应指纹,转入S22;
S21,在指纹索引表中指纹对应的引用计数加1,转入S23;
S22,在指纹索引表中添加写请求的指纹值及逻辑地址号,对应的索引表引用计数设置为1,转入S24;
S23,查找索引表指纹对应的引用计数,判断写子请求的引用计数是不是阈值的倍数;如果是,转入S24;如果不是,转入S25;其中,阈值是一个平衡闪存空间和备份缓解读写冲突的阈值,且该倍数小于等于2;
S24,创建子写请求,对写请求的大小进行分割,分割大小与闪存芯片中页的大小相同,创建一个页大小的子写请求,每次写入一个页的数据信息,转入S26;
S25,删除写请求,将子写请求从请求队列中进行删除;
S26,判断子写请求是否冗余,如果不是冗余转入S27,如果是冗余转入S28;
S27,将固定大小的子写请求写入固态盘阵列的闪存芯片,写入的数据受奇偶校验保护;同时更新闪存地址映射表;
S28,将固定大小的子写请求写入闪存芯片中,写入的位置与第一次写入的相同数据的位置处于不同的通道;同时更新副本表和闪存地址映射表。
优选的,所述读请求处理步骤S3,具体包括:
S30,创建子读请求,对读请求进行分割,分割大小与闪存芯片中页的大小相同,创建一个页大小的子读请求,每次读取一个页的数据信息;
S31,判断读写请求冲突,获取子读请求需要访问的闪存芯片号,查看当前闪存芯片是否正在服务写请求,如果正在服务写请求,转入S32;如果不在服务写请求,转入S35;
S32,判断是否有备份数据,子读请求需要访问的闪存芯片号正在服务写请求,查找索引表中是否有相同数据的其他地址信息;如果存在其他可访问的地址信息,查找到索引表中存在备份数据的物理地址,转入S33,如果不存在其他可访问的地址信息,转入S34;
S33,有可访问的备份数据,从固态盘阵列闪存芯片中读取可访问的备份数据,返回给用户;
S34,没有可访问的备份数据,转入S31,等待原本访问的闪存芯片结束写请求的服务,或者等待有可访问的备份数据;
S35,如果访问的闪存芯片不处于写请求的服务中,直接访问固态盘阵列的闪存芯片,并读取数据,返回给用户。
优选的,所述数据丢失或故障请求处理步骤S4,具体包括:
S40,判断数据是否存在副本,没有冗余转入S41;有冗余,则转入S42;
S41,奇偶校验恢复数据,通过检查其余数据和奇偶校验信息,来重新创建丢失数据的信息,转入S43;
S42,查找索引表备份数据,根据损坏数据块的指纹查找索引表中备份的其他数据地址的信息,转入S43;
S43,创建子读请求:若使用奇偶校验恢复数据,需创建子读请求以读取奇偶校验组中的其他数据和校验信息;若使用备份数据恢复数据,需创建子读请求以读取备份数据,转入S44;
S44,判断读写请求冲突,获取子读请求需要访问的闪存芯片号,查看当前闪存芯片是否正在服务写请求,如果正在服务写请求,转入S45;如果不在服务写请求,转入S48;
S45,判断是否有备份数据,子读请求需要访问的闪存芯片号正在服务写请求,查找索引表中是否有相同数据的其他地址信息;如果存在其他可访问的地址信息,查找到索引表中存在备份数据的物理地址,转入S46,如果不存在其他可访问的地址信息,转入S47;
S46,有可访问的备份数据,从固态盘阵列闪存芯片中读取可访问的备份数据,转入S50;
S47,没有可访问的备份数据,转入S44,等待原本访问的闪存芯片结束写请求的服务,或者等待有可访问的备份数据;
S48,如果访问的闪存芯片不处于写请求的服务中,直接访问固态盘阵列的闪存芯片,并读取数据,转入S49;
S49,从备份数据或读取数据中获取被损坏的数据块的恢复信息,进行数据恢复。
另一方面,一种基于重复数据删除的闪存性能和可靠性提升系统,包括:
请求类型判断模块,用于获取请求数据,判断请求类型,如果是写请求,转入写请求处理模块;如果是读请求,转入读请求处理模块;如果是数据丢失或故障请求,转入数据丢失或故障请求处理模块;
写请求处理模块,用于查找指纹索引表判断是否是冗余的写请求数据,如果该写请求是初次写入,更新指纹索引表,使用静态分配和动态分配结合的方式给写请求分配物理地址,同时更新闪存地址映射表;如果该写请求数据的指纹能够在指纹索引表中找到,则判断引用次数是否等于阈值的倍数且倍数小于等于2,如果不是,删除该写请求,如果是,使用动态分配的方式给写请求分配物理地址,同时更新副本表和闪存地址映射表;最后写入闪存;
读请求处理模块,用于根据读请求的逻辑地址号查找闪存地址映射表获取原数据物理地址号;判断读请求将要访问的闪存总线和闪存芯片是否正在服务写请求;如果是,则查看索引表是否存在副本数据,如果副本数据所在的闪存总线和闪存芯片处于空闲状态,修改读请求的物理地址为副本所在的物理地址,读请求转向访问副本数据;如果副本数据所在的闪存总线和芯片处于忙碌状态,比较原数据所处的通道请求队列和副本数据所处通道的请求队列的数量,将读请求的物理地址修改为请求数量较少的队列;最后等待进入闪存芯片,将数据从页中读取到平面中的数据寄存器中,将数据返回;
数据丢失或故障请求处理模块,用于根据数据是否有冗余来确定恢复数据的方法;创建子读请求,根据读取到的数据恢复被损坏的数据。
相比于现有技术,本发明具有以下有益效果:
(1)本发明基于重复数据删除技术的方式缓解了闪存的读写请求相互干扰的问题。以往解决闪存读写干扰问题的研究中通常是在闪存中创建数据块副本存储在不同的闪存芯片中,当读请求访问数据块的时候,读请求需要的闪存资源正在被写请求占用的时候,通过访问数据副本的方式来获取数据,从而缓解读写冲突问题。这种解决方式不仅给闪存芯片引入了额外的存储成本,而且加快了闪存的使用寿命。本发明在维护数据副本的基础上,使用重复数据删除技术来缓解副本所造成的存储成本问题,通过重复数据删除技术来删除计划之外的冗余写操作,对产生冲突的读请求数据进行备份的方式来缓解读写冲突问题,有选择性地保留副本,强有力地减少了闪存地占用空间。
(2)本发明采用在闪存中构建固态盘阵列和备份数据的方式保障了数据的安全性,增强了闪存的可靠性。重复数据删除技术会删除冗余的数据,只保留唯一的数据块,但是当唯一数据块产生错误或丢失的时候,无法对数据进行恢复。综上,本发明使用两种方式来恢复被损坏的数据块。第一种方式是将闪存构建成RAID5固态盘阵列,通过检查其余数据和奇偶校验信息,来重新创建丢失数据的信息,加强数据的可靠性。第二种方式是访问索引表中备份数据块的地址信息,通过备份数据对被损坏数据进行恢复。通过比较两种方式的成本来选择使用哪一种方式恢复数据,从而增强数据的可靠性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为发明实施例的方法实现框架示意图;
图2为本发明实施例的指纹索引表、副本表和闪存地址映射表示意图;
图3为本发明的实施例的逻辑地址号(LPN)空间分布图;
图4为本发明实施例的支持通道级RAID的闪存物理地址号(PPN)空间分布图;
图5为本发明实施例的写操作过程的示意图;
图6为本发明实施例的读操作和数据恢复操作过程的示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
参见图1所示,为本发明方法的实现框架示意图。所有功能部件都在固态硬盘的FTL层进行创建,除示意图中的功能部件外,FTL层中还有别的部件,比如地址映射,传输调度,垃圾回收等固有的功能部件,未在示意图中展示。附图中展示了重复数据删除功能、冗余检测功能、冲突检测功能、选择备份数据位置功能和数据恢复功能。其中,重复数据删除功能用于实现:如果冗余检测器发现用户写请求存在冗余数据,在索引列表中将该数据的引用计数加一,并记录写请求的元数据信息;同时在请求队列中删除该写请求。冗余检测功能用于实现:对用户写请求进行检测,查看是否存在闪存已经存在相同数据。读写冲突检测器用于实现:当用户读请求在访问数据时,判断访问的闪存芯片是否正在服务于写请求。选择备份位置用于实现:如果读写冲突检测器现实存在冲突,访问索引列表,转向访问备份数据。数据恢复用于实现:当数据发生错误或丢失,利用剩下奇偶校验信息去重建此磁盘上的数据,来保持RAID-5的高可靠性,或者访问索引列表指示的备份数据来进行恢复。
具体的,一种基于重复数据删除的闪存性能和可靠性提升方法,包括如下步骤。
(1)获取请求数据。如果是写请求,转入(2);如果是读请求(11);如果是数据丢失或故障请求,转入(18)。
处理写请求的操作步骤,每条写请求包括请求到达的时间time1,写入的数据大小size1,写入数据的指纹值fingerprint1,写入数据的逻辑地址lsn1。
(2)写请求判断冗余:如果获取的是写请求,通过写请求的指纹值fingerprint1,查看指纹索引表中对应的引用计数Count1,如果引用计数Count1大于1,转入(3);如果没有查找到对应指纹fingerprint1,转入(4)。
(3)写请求是冗余请求,在指纹索引表中指纹fingerprint1对应的引用计数Count1加一,转入(5)。
(4)写请求不是冗余请求,在索引表中新建写请求的指纹值fingerprin1,对应的索引表引用计数Count1设置为一,转入(6)。
(5)查找索引表指纹对应的引用计数Count1,判断写子请求的引用计数Count1是否是阈值的倍数且该倍数小于等于2。如果是,转入(6);如果不是,转入(7)。
(6)创建子写请求:对写请求的大小size1进行分割,分割大小与闪存芯片中页的大小相同,创建一个页大小的子写请求,每次写入一个页的数据信息。假设在闪存芯片中一个页的大小是4kb,写请求的大小size1是16kb,那么就会创建4个大小是4kb的子写请求。
(7)删除写请求:不符合(5)的判断条件,将该子写请求从请求队列中进行删除。转入(21)。
(8)判断子写请求是否冗余,如果不是冗余请求转入(9),如果是冗余请求转入(10)。
(9)写入固态盘阵列闪存芯片:将4kb大小的子写请求写入固态盘阵列的闪存芯片,这种情况写入的数据都受奇偶校验保护。同时更新闪存地址映射表信息。
(10)写入闪存芯片:将4kb大小的子写请求写入闪存芯片中,写入的位置与第一次写入的数据(相同数据)位置处于不同的通道。同时更新副本表和闪存地址映射表。
处理读请求的操作步骤,每条读请求包括请求到达的时间time2,读取的数据大小size2,读取数据的指纹值fingerprint2,写入数据的逻辑地址lsn2。
(11)创建子读请求:对读请求进行分割,分割大小与闪存芯片中页的大小相同,创建一个页大小的子读请求,每次读取一个页的数据信息。假设在闪存芯片中一个页的大小是4kb,写请求的大小size2是16kb,那么就会创建4个大小是4kb的子写请求。
(12)判断读写请求冲突:获取读请求需要访问的闪存芯片号chip0,查看当前闪存芯片chip0是否正在服务写请求,如果正在服务写请求,转入(13);如果不在服务写请求,转入(16)。
(13)判断是否有备份数据:读请求需要访问的闪存芯片号chip1正在服务写请求,查找索引表中是否有相同数据的其他地址信息。如果存在其他可访问的地址信息,比如说原来是访问chip1中的ppn1,查找到索引表中存在备份数据的地址是chip2中的ppn2,转入(14),如果不存在其他可访问的地址信息,转入(15)。
(14)有可访问的备份数据:从固态盘阵列闪存芯片chip2中读取可访问的备份数据,返回给用户。
(15)没有可访问的备份数据:转入(12),等待原本访问的闪存芯片chip0结束写请求的服务,或者等待有可访问的备份数据。
(16)读取数据:如果访问的闪存芯片chip0不处于写请求的服务中,直接访问固态盘阵列的闪存芯片chip0,读取数据。
(17)判断是否用户数据恢复:读取数据用于数据恢复,转入(22),如果不用于数据恢复,则返回给用户,转入(23)。
处理数据丢失或故障请求的操作步骤。
(18)查看数据是否有副本:判断数据是否存在副本,没有冗余转入(19);有冗余,则转入(20)。
(19)奇偶校验恢复数据:通过检查其余数据和奇偶校验信息,来重新创建丢失数据的信息。转入(21)。
(20)查找索引表备份数据:根据损坏数据块的指纹查找索引表中备份的其他数据地址的信息。转入(21)。
(21)创建子读请求:如果是通过奇偶校验恢复数据,需要创建访问奇偶校验组中其他数据的子读请求和访问奇偶校验信息的子读请求。如果是通过查找备份数据来恢复损坏数据块,需要创建备份数据的子读请求。转入(10)。
(22)数据恢复:从(17)中获取被损坏的数据块的恢复信息,进行数据恢复。
(23)结束进程。
进一步的,图2所示为本发明的指纹索引表、副本表和闪存地址映射表。其中,指纹索引表中记录了闪存数据块中所有数据的指纹,第一次写入该数据的逻辑地址号(LPN)以及指纹的引用次数是指有多少个写入相同数据的写请求。副本表中包含两个物理地址号,当指纹索引表中的引用次数达到阈值,那么就会创建一个新的副本(物理地址号1);当指纹索引表中的引用次数达到阈值的两倍,那么会创建第二个副本(物理地址号2)。新的副本并不是先读出原来存储的数据,而是对引用计数到达阈值和阈值的两倍的写入请求不进行重复数据删除操作。如果写请求查询指纹索引表之后发现,将要写入的数据已经存在并且引用计数达到阈值,那么该写请求不会被删除,而是写入闪存,同时将物理地址记入副本表。闪存地址映射表包含逻辑地址号和物理地址号。其中记录这闪存中数据首次写入的逻辑地址号和物理地址号。
图3所示为本发明的逻辑地址号(LPN)空间分布图。在不同通道(channel)中具有相同偏移量的逻辑地址号(LPN)以及它们的奇偶校验码构成了与传统RAID-5中一样的RAID条带。图3中,位于通道0的逻辑地址号0,位于通道1的逻辑地址号1,位于通道2的逻辑地址号2和位于通道3的奇偶校验码P0构成条带0。注意,图2中,副本表中的物理地址和数据首次被写入的物理地址在指纹索引表中共用同一个逻辑地址号。
图4为本发明支持通道级RAID的闪存物理地址号空间分布图:其中条带由物理地址号(PPN0,PPN1,PPN2)/(PPN3,PPN4,PPN5)代表的数据块和奇偶校验块P0/P1组成(由实线连接)。其中数据块R0和R0’是数据块PPN0的副本,其中副本数据和首次写入的数据存放在不同的通道(channel),PPN0连着两个数据块R0和R0’代表着数据块PPN0被引用的次数达到了阈值的两倍。当读请求访问产生读写干扰的时候,可以通过查询副本表来获取其他副本的位置,从而转向读取其他位置的副本数据。
图5为本发明实施例的写操作流程图。首先从主机端获取用户写请求信息,然后查找索引表判断是否是冗余的写请求数据,如果该写请求是初次写入(索引表中未有对应的指纹),更新指纹索引表,使用静态分配和动态分配结合的方式给写请求分配物理地址,同时更新闪存地址映射表;如果该写请求数据的指纹可以在指纹索引表中找到,那么判断引用次数是不是等于阈值的倍数且倍数小于等于2,如果不满足这个条件,删除该写请求,如果满足这个条件,使用动态分配的方式给写请求分配物理地址,同时更新副本表和闪存地址映射表。最后写入闪存,结束流程。
图6为本发明读操作和数据恢复操作过程的示意图。首先从主机端获取读请求,根据读请求的逻辑地址号查找闪存地址映射表获取原数据物理地址号。然后判断读请求将要访问的闪存总线和闪存芯片是否正在服务写请求(读写干扰),如果是读写干扰,则查看索引表是否存在副本数据,如果副本数据所在的闪存总线和闪存芯片处于空闲状态,就修改读请求的物理地址为副本所在的物理地址,读请求转向访问副本数据。如果副本数据所在的闪存总线和芯片处于忙碌状态,就比较原数据所处的通道请求队列和副本数据所处通道的请求队列的数量,将读请求的物理地址修改为请求数量较少的队列。最后等待进入闪存芯片,将数据从页中读取到平面中的数据寄存器中,将数据返回给主机。如果最开始获取的信息是数据丢失或故障的信息,那么根据奇偶校验恢复数据的开销和查找数据备份所需的开销的比较,来确定恢复数据的方法,然后根据读取到的数据恢复被损坏的数据,最后结束进程。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (5)
1.一种基于重复数据删除的闪存性能和可靠性提升方法,其特征在于,包括:
请求类型判断步骤S1,获取请求数据,判断请求类型,如果是写请求,转入写请求处理步骤;如果是读请求,转入读请求处理步骤;如果是数据丢失或故障请求,转入数据丢失或故障请求处理步骤;
写请求处理步骤S2,查找指纹索引表判断是否是冗余的写请求数据,如果该写请求是初次写入,更新指纹索引表,使用静态分配和动态分配结合的方式给写请求分配物理地址,同时更新闪存地址映射表;如果该写请求数据的指纹能够在指纹索引表中找到,则判断引用次数是否等于阈值的倍数且倍数小于等于2,如果不是,删除该写请求,如果是,使用动态分配的方式给写请求分配物理地址,同时更新副本表和闪存地址映射表;最后写入闪存;
读请求处理步骤S3,根据读请求的逻辑地址号查找闪存地址映射表获取原数据物理地址号;判断读请求将要访问的闪存总线和闪存芯片是否正在服务写请求;如果是,则查看索引表是否存在副本数据,如果副本数据所在的闪存总线和闪存芯片处于空闲状态,修改读请求的物理地址为副本所在的物理地址,读请求转向访问副本数据;如果副本数据所在的闪存总线和芯片处于忙碌状态,比较原数据所处的通道请求队列和副本数据所处通道的请求队列的数量,将读请求的物理地址修改为请求数量较少的队列;最后等待进入闪存芯片,将数据从页中读取到平面中的数据寄存器中,将数据返回;
数据丢失或故障请求处理步骤S4,根据数据是否有冗余来确定恢复数据的方法;创建子读请求,根据读取到的数据恢复被损坏的数据。
2.根据权利要求1所述的基于重复数据删除的闪存性能和可靠性提升方法,其特征在于,所述写请求处理步骤S2,具体包括:
S20,通过写请求的指纹值,查看指纹索引表中对应的引用计数,如果引用计数大于1,转入S21;如果没有查找到对应指纹,转入S22;
S21,在指纹索引表中指纹对应的引用计数加1,转入S23;
S22,在指纹索引表中添加写请求的指纹值及逻辑地址号,对应的索引表引用计数设置为1,转入S24;
S23,查找索引表指纹对应的引用计数,判断写子请求的引用计数是不是阈值的倍数;如果是,转入S24;如果不是,转入S25;其中,阈值是一个平衡闪存空间和备份缓解读写冲突的阈值,且该倍数小于等于2;
S24,创建子写请求,对写请求的大小进行分割,分割大小与闪存芯片中页的大小相同,创建一个页大小的子写请求,每次写入一个页的数据信息,转入S26;
S25,删除写请求,将子写请求从请求队列中进行删除;
S26,判断子写请求是否冗余,如果不是冗余转入S27,如果是冗余转入S28;
S27,将固定大小的子写请求写入固态盘阵列的闪存芯片,写入的数据受奇偶校验保护;同时更新闪存地址映射表;
S28,将固定大小的子写请求写入闪存芯片中,写入的位置与第一次写入的相同数据的位置处于不同的通道;同时更新副本表和闪存地址映射表。
3.根据权利要求1所述的基于重复数据删除的闪存性能和可靠性提升方法,其特征在于,所述读请求处理步骤S3,具体包括:
S30,创建子读请求,对读请求进行分割,分割大小与闪存芯片中页的大小相同,创建一个页大小的子读请求,每次读取一个页的数据信息;
S31,判断读写请求冲突,获取子读请求需要访问的闪存芯片号,查看当前闪存芯片是否正在服务写请求,如果正在服务写请求,转入S32;如果不在服务写请求,转入S35;
S32,判断是否有备份数据,子读请求需要访问的闪存芯片号正在服务写请求,查找索引表中是否有相同数据的其他地址信息;如果存在其他可访问的地址信息,查找到索引表中存在备份数据的物理地址,转入S33,如果不存在其他可访问的地址信息,转入S34;
S33,有可访问的备份数据,从固态盘阵列闪存芯片中读取可访问的备份数据,返回给用户;
S34,没有可访问的备份数据,转入S31,等待原本访问的闪存芯片结束写请求的服务,或者等待有可访问的备份数据;
S35,如果访问的闪存芯片不处于写请求的服务中,直接访问固态盘阵列的闪存芯片,并读取数据,返回给用户。
4.根据权利要求1所述的基于重复数据删除的闪存性能和可靠性提升方法,其特征在于,所述数据丢失或故障请求处理步骤S4,具体包括:
S40,判断数据是否存在副本,没有冗余转入S41;有冗余,则转入S42;
S41,奇偶校验恢复数据,通过检查其余数据和奇偶校验信息,来重新创建丢失数据的信息,转入S43;
S42,查找索引表备份数据,根据损坏数据块的指纹查找索引表中备份的其他数据地址的信息,转入S43;
S43,创建子读请求:若使用奇偶校验恢复数据,需创建子读请求以读取奇偶校验组中的其他数据和校验信息;若使用备份数据恢复数据,需创建子读请求以读取备份数据,转入S44;
S44,判断读写请求冲突,获取子读请求需要访问的闪存芯片号,查看当前闪存芯片是否正在服务写请求,如果正在服务写请求,转入S45;如果不在服务写请求,转入S48;
S45,判断是否有备份数据,子读请求需要访问的闪存芯片号正在服务写请求,查找索引表中是否有相同数据的其他地址信息;如果存在其他可访问的地址信息,查找到索引表中存在备份数据的物理地址,转入S46,如果不存在其他可访问的地址信息,转入S47;
S46,有可访问的备份数据,从固态盘阵列闪存芯片中读取可访问的备份数据,转入S50;
S47,没有可访问的备份数据,转入S44,等待原本访问的闪存芯片结束写请求的服务,或者等待有可访问的备份数据;
S48,如果访问的闪存芯片不处于写请求的服务中,直接访问固态盘阵列的闪存芯片,并读取数据,转入S49;
S49,从备份数据或读取数据中获取被损坏的数据块的恢复信息,进行数据恢复。
5.一种基于重复数据删除的闪存性能和可靠性提升系统,其特征在于,包括:
请求类型判断模块,用于获取请求数据,判断请求类型,如果是写请求,转入写请求处理模块;如果是读请求,转入读请求处理模块;如果是数据丢失或故障请求,转入数据丢失或故障请求处理模块;
写请求处理模块,用于查找指纹索引表判断是否是冗余的写请求数据,如果该写请求是初次写入,更新指纹索引表,使用静态分配和动态分配结合的方式给写请求分配物理地址,同时更新闪存地址映射表;如果该写请求数据的指纹能够在指纹索引表中找到,则判断引用次数是否等于阈值的倍数且倍数小于等于2,如果不是,删除该写请求,如果是,使用动态分配的方式给写请求分配物理地址,同时更新副本表和闪存地址映射表;最后写入闪存;
读请求处理模块,用于根据读请求的逻辑地址号查找闪存地址映射表获取原数据物理地址号;判断读请求将要访问的闪存总线和闪存芯片是否正在服务写请求;如果是,则查看索引表是否存在副本数据,如果副本数据所在的闪存总线和闪存芯片处于空闲状态,修改读请求的物理地址为副本所在的物理地址,读请求转向访问副本数据;如果副本数据所在的闪存总线和芯片处于忙碌状态,比较原数据所处的通道请求队列和副本数据所处通道的请求队列的数量,将读请求的物理地址修改为请求数量较少的队列;最后等待进入闪存芯片,将数据从页中读取到平面中的数据寄存器中,将数据返回;
数据丢失或故障请求处理模块,用于根据数据是否有冗余来确定恢复数据的方法;创建子读请求,根据读取到的数据恢复被损坏的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410224135.XA CN118092799A (zh) | 2024-02-29 | 2024-02-29 | 基于重复数据删除的闪存性能和可靠性提升方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410224135.XA CN118092799A (zh) | 2024-02-29 | 2024-02-29 | 基于重复数据删除的闪存性能和可靠性提升方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118092799A true CN118092799A (zh) | 2024-05-28 |
Family
ID=91154334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410224135.XA Pending CN118092799A (zh) | 2024-02-29 | 2024-02-29 | 基于重复数据删除的闪存性能和可靠性提升方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118092799A (zh) |
-
2024
- 2024-02-29 CN CN202410224135.XA patent/CN118092799A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8788876B2 (en) | Stripe-based memory operation | |
TWI599946B (zh) | 記憶體中之條紋映射 | |
KR101491943B1 (ko) | 트랜잭션 로그 복구 | |
KR102533389B1 (ko) | 장치 수명을 향상시키는 데이터 저장 장치 및 이를 포함하는 raid 시스템 | |
KR101447786B1 (ko) | 파워 인터럽트 관리 | |
US20130227346A1 (en) | Controlling nonvolatile memory device and nonvolatile memory system | |
US8938641B2 (en) | Method and apparatus for synchronizing storage volumes | |
US11093339B2 (en) | Storage utilizing a distributed cache chain and a checkpoint drive in response to a data drive corruption | |
CN112119380B (zh) | 带有旁路的奇偶校验记录 | |
CN118092799A (zh) | 基于重复数据删除的闪存性能和可靠性提升方法及系统 | |
US11221773B2 (en) | Method and apparatus for performing mapping information management regarding redundant array of independent disks | |
Cui et al. | Exploiting disturbance-aware read redirection for performance improvement in 3D flash memory | |
CN117234430B (zh) | 一种缓存框架、数据处理方法、装置、设备和存储介质 | |
US20210406169A1 (en) | Self-adaptive wear leveling method and algorithm | |
CN118382893A (zh) | 存储系统和存储系统的操作方法 | |
CN117953942A (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 |