CN113805787A - 数据写入方法、装置、设备及存储介质 - Google Patents

数据写入方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN113805787A
CN113805787A CN202010529897.2A CN202010529897A CN113805787A CN 113805787 A CN113805787 A CN 113805787A CN 202010529897 A CN202010529897 A CN 202010529897A CN 113805787 A CN113805787 A CN 113805787A
Authority
CN
China
Prior art keywords
data
written
fingerprint information
fingerprint
flash memory
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
Application number
CN202010529897.2A
Other languages
English (en)
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.)
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
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 China Mobile Communications Group Co Ltd, China Mobile Suzhou Software Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN202010529897.2A priority Critical patent/CN113805787A/zh
Publication of CN113805787A publication Critical patent/CN113805787A/zh
Pending legal-status Critical Current

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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • 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/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

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)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据写入方法、装置、设备及存储介质,其中,所述方法包括:确定向闪存待写入数据;确定所述待写入数据的指纹信息;将所述待写入数据的指纹信息与指纹数据库中的指纹信息进行匹配,得到匹配结果;基于所述匹配结果,将所述待写入数据的相应部分写入所述闪存。这样,只写入元数据,不写入数据本身,可以达到减少后续重复数据的写入量,降低SSD存储介质的擦除次数,延长SSD存储介质的使用期少,进而延长闪存介质的使用寿命的效果。

Description

数据写入方法、装置、设备及存储介质
技术领域
本申请涉及电子技术领域,涉及但不限于一种数据写入方法、装置、设备 及存储介质。
背景技术
随着云计算的火热,分布式存储解决方案得到了越来越广泛地应用;企业 在选用分布式存储时,比较关注存储集群成本以及存储集群性能两个方面的问 题,使用低成本的硬盘驱动器(Hard Disk Drive,HDD),成本较低,但性能较 差,使用高成本的固态硬盘(Solid State Disk,SSD),性能较好,但成本较高。 如何均衡存储集群的性能与成本是企业选用分布式存储解决方案后急需解决的 一个难题。
当前,企业通常会选用一种折中方案,即使用缓存技术,在服务器节点上 将少量的SSD设备与大量的HDD设备进行逻辑绑定,形成多个逻辑设备,这 些逻辑设备可以将SSD作为HDD的缓存使用,将频繁访问的少量数据存储在 SSD设备中,将较少访问的大量数据存储在HDD设备中,并能够依据数据的 访问频度,完成数据在SSD与HDD设备中的在线智能迁移。
SSD存储介质由于其闪存颗粒需要先擦除后写入,而总体的擦写次数又存 在上限,因此,SSD中频繁的数据更新,对SSD的寿命损耗影响较大。
发明内容
有鉴于此,本申请实施例为解决现有技术中存在的至少一个问题而提供一 种数据写入方法、装置、设备及存储介质,至少解决了SSD存储介质由于其闪 存颗粒需要先擦除后写入,而总体的擦写次数又存在上限,因此,SSD中频繁 的数据更新,对SSD的寿命损耗影响较大的问题。
本申请的技术方案是这样实现的:
第一方面,本申请提供一种数据写入方法,包括:确定向闪存待写入数据; 确定所述待写入数据的指纹信息;将所述待写入数据的指纹信息与指纹数据库 中的指纹信息进行匹配,得到匹配结果;基于所述匹配结果,将所述待写入数 据的相应部分写入所述闪存。
第二方面,本申请提供一种数据写入装置,包括:
第一确定模块,用于确定向闪存待写入数据;
第二确定模块,用于确定所述待写入数据的指纹信息;
得到模块,用于将所述待写入数据的指纹信息与指纹数据库中的指纹信息 进行匹配,得到匹配结果;
写入模块,用于基于所述匹配结果,将所述待写入数据的相应部分写入所 述闪存。
第三方面,本申请提供一种数据写入设备,包括:存储器和处理器,所述 存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实 现权利要求所述跌倒检测方法中的步骤。
第四方面,本申请提供一种存储介质,存储有可执行指令,用于引起处理 器执行时,实现上述的数据写入方法。
本申请提供一种数据写入方法、装置、设备及存储介质,需要建立数据指 纹库用于比对待写入数据的指纹,当有数据需要写入闪存时,先根据规则生成 指纹信息。使用待写入数据库的指纹信息与纹数据库中的指纹信息匹配:匹配 上时,将待写入数据的元数据写入所述闪存;这样,只写入元数据,不写入数 据本身,可以达到减少后续重复数据的写入量,降低SSD存储介质的擦除次数, 延长SSD存储介质的使用期少,进而延长闪存介质的使用寿命的效果。
附图说明
图1为本申请实施例提供的一种数据写入方法的实现流程示意图;
图2A为本申请实施例提供的另一种数据写入方法的实现流程示意图;
图2B为本申请实施例提供的又一种数据写入方法的实现流程示意图;
图2C为本申请实施例提供的平衡搜索树数据结构管理数据指纹数据库示 意图;
图2D为本申请实施例提供的跳跃表形式结构管理数据指纹数据库示意图;
图2E为本申请实施例提供的再一种数据写入方法的实现流程示意图;
图3A为本申请实施例提供的待写入数据在地址空间上与已存储数据前半 部分覆盖的示意图;
图3B为本申请实施例提供的待写入数据在地址空间上与已存储数据中间 部分覆盖的示意图;
图3C为本申请实施例提供的待写入数据在地址空间上与已存储数据后半 部分覆盖的示意图;
图3D为本申请实施例提供的待写入数据在地址空间上全部覆盖已存储数 据示意图;
图3E为本申请实施例提供的再一种数据写入方法的实现流程示意图;
图3F为本申请实施例提供的再一种数据写入方法的实现流程示意图;
图4A为本申请实施例提供的引入数据指纹库之后的元数据布局示意图;
图4B为本申请实施例提供的再一种数据写入方法的实现流程示意图;
图4C为本申请实施例提供的一种数据回刷方法的实现流程示意图;
图5为本申请实施例提供的数据写入装置的组成结构示意图;
图6为本申请实施例提供的数据写入设备的一种硬件实体示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清 楚、完整地描述。
应当理解,此处所描述的一些实施例仅用以解释本申请的技术方案,并不 用于限定本申请的技术范围。
实施例一
本实施例提供一种数据写入方法。图1为本申请实施例提供的一种数据写 入方法的实现流程示意图,如图1所示,该方法包括:
步骤S101、确定向闪存待写入数据;
这里的闪存是指基于闪存的SSD,采用闪存(FLASH)芯片作为存储介质, 这也是通常所说的SSD。固态硬盘的外观可以被制作成多种模样,例如:笔记 本硬盘、微硬盘、存储卡、U盘等样式。这种SSD固态硬盘最大的优点就是可 以移动,而且数据保护不受电源控制,能适应于各种环境,适合于个人用户使 用。固态硬盘具有传统机械硬盘不具备的快速读写、质量轻、能耗低以及体积 小等特点。采用闪存作为存储介质,读取速度相对机械硬盘更快。但同时,固 态硬盘闪存具有擦写次数限制的问题,由于其闪存颗粒需要先擦除后写入,而 总体的擦写次数又存在上限,因此,SSD中频繁的数据更新,对SSD的寿命损 耗影响较大。
系统确定向闪存写入的待写入数据。
步骤S102、确定所述待写入数据的指纹信息;
指纹信息是待写入的每条数据根据一定规则编辑生成的一串只针对该数据 的校验码,指纹信息计算常见的校验算法,如循环冗余校验32(Cyclic Redundancy Check 32,CRC32)、循环冗余校验64(Cyclic Redundancy Check 64, CRC64)、MD5信息摘要算法(Message-Digest Algorithm)等。指纹信息当需 要写入数据时,根据待写入的数据生成的一个唯一串码,如32位/64位的字符 串(由字母、数字组成,如8bba9df07451f01abf0de6af1ef24a76)。确定向闪存写 入的待写入数据后,需要根据规则获得待写入数据的指纹信息。
步骤S103、将所述待写入数据的指纹信息与指纹数据库中的指纹信息进行 匹配,得到匹配结果;
在SSD中设置有指纹数据库,指纹数据库用于存放已写入SSD的数据的 指纹信息。每次确定待写入数据时,需要先使用待写入数据的指纹与指纹数据 库中的指纹进行匹配,得到匹配结果。
步骤S104、基于所述匹配结果,将所述待写入数据的相应部分写入所述闪 存;
当待写入数据的指纹与指纹数据库的匹配结果为待写入的数据指纹在指纹 数据库中时,不需要在SSD中写入数据,只写入待写入数据的元数据就可以, 以达到不写入数据本身减少重复数据写入量的效果。
本申请实施例提供一种数据写入的方法,需要建立数据指纹库用于比对待 写入数据的指纹信息;当有数据需要写入闪存时,先根据规则生成指纹信息。 使用待写入数据库的指纹信息与纹数据库中的指纹信息匹配:匹配上时,将待 写入数据的元数据写入所述闪存;这样,只写入元数据,不写入数据本身,可 以达到减少后续重复数据的写入量,降低SSD存储介质的擦除次数,延长SSD 存储介质的使用期少,进而延长闪存介质的使用寿命的效果。
实施例二
本实施例提供一种数据写入方法。图2A为本申请实施例提供的另一种数 据写入方法的实现流程示意图,如图2A所示,该方法包括:
步骤S201、确定向闪存待写入数据;
步骤S202、确定所述待写入数据的指纹信息;
步骤S203、将所述待写入数据的指纹信息与指纹数据库中的指纹信息进行 匹配,得到匹配结果;
步骤S204、如果所述匹配结果表明所述待写入数据的指纹信息与所述指纹 数据库中的指纹信息不匹配时,将所述待写入数据和所述待写入数据的元数据 写入所述闪存。
当待写入数据的指纹与指纹数据库的匹配结果为待写入的数据指纹不在指 纹数据库中时,需要同时写入待写入数据和待写入数据的元数据。
步骤S205、不匹配时,将所述待写入数据的指纹信息的引用次数置为初始 值;
不匹配时,就是新数据写入,因此该数据的指纹只有该数据块进行了引用, 将指纹信息的引用次数设置为初始值。所有新写入的数据都从初始值开始计数, 这里的初始值可以设置,例如在一些实施例中初始值可以为0,也可以为1。
步骤S206、将所述待写入数据的指纹信息存入所述指纹数据库;
不匹配时,因为指纹数据库中没有待写入数据的指纹信息,需要将待写入 数据的指纹信息存入指纹数据库。
步骤S207、将所述待写入数据的元数据的指针指向所述待写入数据的存放 地址。
不匹配时,需要将待写入数据的元数据的指针指向待写入数据的存放地址。
本申请实施例中,当待写入数据的指纹与指纹数据库中的指纹不匹配时, 就是新数据写入,将指纹的引用次数计数值设置为初始值。并将待写入数据的 指纹信息存入指纹数据库,同时将待写入数据的元数据的指针指向待写入数据 的存放地址。这样,如果下一个数据为本次待写入数据的重复数据,需要写入 闪存,因为指纹数据库中存放了所有数据对应的指纹信息,所以可以与新增的 指纹进行匹配,匹配上时,可以有效减少重复数据的写入量,增加闪存的使用 寿命。
实施例三
本实施例提供一种数据写入方法。图2B为本申请实施例提供的又一种数 据写入方法的实现流程示意图,如图2B所示,该方法包括:
步骤S211、确定向闪存待写入数据;
步骤S212、确定所述待写入数据的指纹信息;
步骤S213、将所述待写入数据的指纹信息与指纹数据库中的指纹信息进行 匹配,得到匹配结果;
步骤S214、如果所述匹配结果表明所述待写入数据的指纹信息与所述指纹 数据库中的指纹信息匹配时,将所述待写入数据的元数据写入所述闪存;
步骤S215、将与所述待写入数据的指纹信息匹配的所述指纹数据库中的指 纹信息,作为被引用的指纹信息;
当待写入数据的指纹信息匹配上指纹数据库中的指纹信息,将匹配上的指 纹信息作为被引用的指纹信息。数据的指纹信息包括数据在SSD中存储的偏移 地址、数据的长度、数据的校验信息。
例如记录数据指纹的数据结构如下:
Fingerprint{
data_SSD_offset;
data_lenth;
data_digest;
data_count;
}
其中:data_SSD_offset用于记录数据在SSD中的偏移地址(在data bucket 中的存储地址);data_lenth用于记录数据的长度;data_digest记录数据的校验 信息,即,数据的指纹校验信息;data_count记录该数据被重复引用的次数。
步骤S216、根据所述被引用的指纹信息,确定重复数据的存放地址;
从被应用的指纹信息中,可以确定重复数据的存放地址。例如:因为记录 数据指纹的数据结果包含data_SSD_offset,而data_SSD_offset是用于记录数据 在SSD中的偏移地址(在data bucket中的存储地址),所以根据被引用的指纹 信息,可以确定重复数据的存放地址。
步骤S217、将所述待写入数据的元数据中的指针指向所述重复数据的存放 地址;
元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data aboutdata),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历 史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到 编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检 索的目的。因为待写入数据的指纹信息与指纹数据库匹配上,所以只需要在SSD 中写入待写入数据的元数据,元数据中的指针指向重复数据的存放地址是为了 在使用数据时能根据存放地址找到元数据对应的数据。
步骤S218、将所述被引用的指纹信息的引用次数加1。
每次待写入的数据指纹与数据指纹库匹配上时,需要将被引用的指纹信息 的引用次数加1。记录指纹引用次数的效果是当数据存在覆盖的时候,可以减 少计数,当计数降为0之后,说明该数据已无引用,可以进行空间释放。
本申请实施例中,当指纹信息与指纹数据库中的指纹匹配上时,根据引用 的指纹信息,确定重复数据的存放地址,同时将所述被引用的指纹信息的引用 次数加1。这样在使用重复数据时,可以根据指纹数据结构中的地址找到对应 的数据存放地址,在不影响数据使用的前提下,有效减少了重复数据的写入量。 记录指纹引用次数的效果是当数据存在覆盖的时候,可以减少计数,当计数降 为0之后,说明该数据已无引用,可以进行空间释放,同时通过指纹引用次数 可以有效计算出通过减少具体次数的重复数据写入量增加的具体闪存寿命。
实施例四
图2C为本申请实施例提供的平衡搜索树(b-tree)数据结构管理数据指纹 数据库示意图,如图2C所示,该平衡搜索树上层节点由关键字(key)201和 指针(point,p)202组成,底层的叶节点指针为空在图中没有画出。在一个 N阶的b-tree中,每个节点中保存N个fingerprint信息,以fingerprint.data_digest 作为关键字进行排序,由于b-tree是一棵平衡搜索树,可保证对各个指纹信息 的查询最差时间复杂度为O(log(n))。
图2D为本申请实施例提供的跳跃表形式结构管理数据指纹数据库示意图, 如图2D所示,该跳跃表包括跳表头(infinmum,-INF)211和关键字(key) 212。-INF211是指针链表头,作为链表起始,本身不保存数据。以 fingerprint.data_digest作为关键字进行链表排序,建立多级跳跃索引,在有序链 表间进行多级索引查询,实现二分查找,最差时间复杂度为O(log(n))。
本实施例提供一种数据写入方法。图2E为本申请实施例提供的另一种数 据写入方法的实现流程示意图,如图2E所示,该方法包括:
步骤S221、确定向闪存待写入数据;
步骤S222、确定所述待写入数据的指纹信息;
步骤S223、将所述待写入数据的指纹信息与指纹数据库中的指纹信息进行 匹配,得到匹配结果;
步骤S224、如果所述匹配结果表明所述待写入数据的指纹信息与所述指纹 数据库中的指纹信息匹配时,将所述待写入数据的元数据写入所述闪存;
步骤S225、将与所述待写入数据的指纹信息匹配的所述指纹数据库中的指 纹信息,作为被引用的指纹信息;
步骤S226、根据所述被引用的指纹信息,确定重复数据的存放地址;
步骤S227、将所述待写入数据的元数据中的指针指向所述重复数据的存放 地址;
步骤S228、将所述被引用的指纹信息的引用次数加1;
步骤S229、将所述待写入数据的指纹信息和所述待写入数据的存放地址, 存放在记录指纹的数据结构中;
记录指纹的数据结构中包括待写入数据的指纹信息和待写入数据的存放地 址。例如记录数据指纹的数据结构如下:
Fingerprint{
data_SSD_offset;
data_lenth;
data_digest;
data_count;
}
其中:data_SSD_offset用于记录数据在SSD中的偏移地址(在data bucket 中的存储地址),即数据的存放地址;data_digest记录数据的校验信息,即,数 据的指纹校验信息。
这里,待写入数据的指纹信息与指纹数据库中的指纹匹配或未匹配上,都 需要将待写入数据的指纹信息和待写入数据的存放地址,存放在记录指纹的数 据结构中。
步骤S230、在所述指纹数据库中,采用平衡搜索树方式或者跳跃表方式对 所述数据结构进行管理。
可以使用如图2C的平衡搜索树方法管理指纹数据库,在进行指纹匹配时 可保证对各个指纹信息的查询最差时间复杂度为O(log(n))。
也可以使用如图2D的跳跃表形式结构管理数据指纹数据库,以fingerprint.data_digest作为key值进行链表排序,建立多级跳跃索引,在有序链 表间进行多级索引查询,实现二分查找,最差时间复杂度为O(log(n))。
本申请实施例中,使用平衡搜索树或者跳跃表形式对数据指纹信息进行索 引,提高了指纹信息的检索查询效率。
实施例五
若待写入数据在地址空间上与闪存中已存储数据存在重合,则会产生数据 的覆盖现象,应以待写入数据为准,依据覆盖范围,可分为以下四种场景:
场景1)如图3A所示,其中301是已存储数据的地址位置,302是待写入 数据的地址位置,303和304是新生成的两个待写入数据的地址位置;
场景2)如图3B所示,其中311是已存储数据的地址位置,312是待写入 数据的地址位置,313、314和315是新生成的三个待写入数据的地址位置;
场景3)如图3C所示,其中321是已存储数据的地址位置,322是待写入 数据的地址位置,323和324是新生成的两个待写入数据的地址位置;
场景4)如图3D所示,其中331是已存储数据的地址位置,332是待写入 数据的地址位置,333是新生成的一个待写入数据的地址位置。
本实施例提供一种数据写入方法。图3E为本申请实施例提供的再一种数 据写入方法的实现流程示意图,如图3E所示,该方法包括:
步骤S301、确定向闪存待写入数据;
步骤S302、确定所述待写入数据的指纹信息;
步骤S303、将所述待写入数据的指纹信息与指纹数据库中的指纹信息进行 匹配,得到匹配结果;
步骤S304、如果所述匹配结果表明所述待写入数据的指纹信息与所述指纹 数据库中的指纹信息不匹配时,将所述待写入数据和所述待写入数据的元数据 写入所述闪存;
步骤S305、当所述待写入数据的地址空间与所述闪存中已存储数据的地址 空间存在重合时,将所述已存储数据的指纹信息的引用次数减1;
当所述待写入数据的地址空间与所述闪存中已存储数据的地址空间存在重 合时,地址上被覆盖的已存储数据不存在指纹引用关系,所以需要将已存储数 据的指纹引用数减1。
步骤S306、将重合产生的新数据确定为待写入数据,以写入闪存;
若待写入数据在地址空间上与原闪存中已存储的数据地址存在重合,则会 产生数据的覆盖现象,应以待写入的数据为准,依据覆盖范围,可分为以下四 种场景:
前半部分闪存中已存储的数据地址被覆盖(参见图3A)以及后半部分闪存 中已存储的数据地址被覆盖(参见图3C)场景,原闪存中已存储的数据地址被 覆盖,新分割出两个数据。分割得到的两个新数据分别按照新待写入数据,以 写入闪存;
中间部分闪存中已存储的数据地址被(参见图3B)场景,原闪存中已存储 的数据地址被覆盖,新分割出三个数据。分割得到的三个新数据分别按照新待 写入数据,以写入闪存;
全部闪存中已存储的数据地址被覆盖(参见图3D)场景,原闪存中已存储 的数据地址被覆盖,新产生一个数据;分割得到新数据按照新待写入数据,以 写入闪存。
步骤S307、当所述已存储数据的指纹信息的引用次数为0时,从所述闪存 删除所述已存储数据和所述已存储数据的元数据。
当已存储数据的指纹信息引用次数为0时,说明该数据已不再被引用,即 为无效数据,可以从闪存删除已存储数据和所述已存储数据的元数据。
本申请实施例中,主要描述待写入数据与指纹数据库中的指纹未匹配上, 且待写入数据与已存储数据存在地址覆盖关系时,如何处理待写入数据。因为 已存储数据的地址已经被覆盖,需要将指纹引用数减1,然后根据覆盖情况划 分的新数据重新当作待写入数据处理。当指纹引用数减到0时,说明该数据已 不再被引用,即为无效数据,可以从闪存删除已存储数据和所述已存储数据的 元数据。这样,可以根据指纹引用数即使清理不需要的数据,达到高效使用闪 存的目的。
实施例六
本实施例提供一种数据写入方法。图3F为本申请实施例提供的再一种数据 写入方法的实现流程示意图,如图3F所示,该方法包括:
步骤S311、确定向闪存待写入数据;
步骤S312、确定所述待写入数据的指纹信息;
步骤S313、将所述待写入数据的指纹信息与指纹数据库中的指纹信息进行 匹配,得到匹配结果;
步骤S314、如果所述匹配结果表明所述待写入数据的指纹信息与所述指纹 数据库中的指纹信息匹配时,将所述待写入数据的元数据写入所述闪存;
步骤S315、当所述闪存上存储的数据需要回刷到磁盘时,从需要回刷的数 据的元数据获取所述回刷数据的校验信息;
数据回刷是一种数据迁移策略,高速的SSD设备空间有限,不可能长时间 保存数据,因此需要进行回刷,回刷通常有两种策略:时间策略,指数据在SSD 中超过指定时限;空间策略,指数据在SSD中超过了特定空间水位线阈值。
后台SSD向HDD回刷数据的流程需要在SSD中进行数据读取,向HDD 中进行数据写入,同时在SSD的元数据中记录该数据块已经写入了HDD中。
当所述闪存上存储的数据需要回刷到磁盘时,从需要回刷的数据的元数据 获取所述回刷数据的校验信息。
步骤S316、在所述指纹数据库中,获取与所述校验信息对应的要回刷的指 纹信息;
回刷每一数据时,需要在所述指纹数据库中,获取与所述校验信息对应的 要回刷的指纹信息。
步骤S317、向所述磁盘回刷一次所述需要回刷的数据时,将所述要回刷的 指纹信息的引用次数减1;
例如记录数据指纹的数据结构如下:
Fingerprint{
data_SSD_offset;
data_lenth;
data_digest;
data_count;
}
其中:data_count记录该数据被重复引用的次数。
向所述磁盘回刷一次所述需要回刷的数据时,将所述要回刷的指纹信息的 引用次数减1,即data_count记录该数据被重复引用的次数减1。
步骤S318、当所述要回刷的指纹信息的引用次数为0时,从所述闪存删除 所述需要回刷的数据和所述需要回刷的数据的元数据。
指纹引用数减到0,说明该数据已经回刷到磁盘中,且没有引用价值,可 以从闪存删除所述需要回刷的数据和需要回刷的数据的元数据。
本实施例中,在数据需要从闪存回刷到磁盘时,使用指纹引用数确定是否 删除数据和数据的元数据,达到安全删除数据,不会出现误删除数据的效果。
实施例七
块缓存(Block cache,Bcache)由谷歌团队开发并进行了开源,它能够在 linux内核块设备层实现将SSD为HDD功能(即数据以回写方式写入SSD后, IO请求返回;后续写入的数据异步从SSD回刷到HDD设备),并从Linux 3.10 版本开始进入内核主线分支,Bcache已成为应用较为广泛的缓存方案。
Bcache缓存方案虽然对SSD闪存介质在使用上有一定的优化,比如亲和 SSD特性,按照SSD擦除块的大小进行bcache逻辑桶单元的分配,但是在优 化SSD延长使用寿命方面效果仍然不够显著,需要引入更好的技术来提升SSD 寿命。
本发明提出一种基于数据写入技术来减少bcache向SSD的数据写入量, 进而延长SSD闪存介质使用寿命的方法,该方法通过记录当前已写入数据的指 纹信息,减少后续重复数据的写入量,降低SSD存储介质的擦除次数,延长 SSD存储介质的使用期限。
图4A为本申请实施例提供的引入数据指纹库之后的元数据布局示意图, 如图4A左图所示:未引入数据指纹库之前,bcache存放数据/元数据的基本单 元bucket按用途可分为以下6类:超级块桶(Superblock bucket)401,存放bcache 的元数据,用于bcache设备的重建;日志桶(Journal buckt)402,用于加速IO 元数据的更新;平衡树搜索桶(Btreebucket)403,用于管理IO元数据,便于 索引;优先级桶(Prio bucket)404,管理bucket的优先级;通用唯一识别码桶 (Uuid bucket)405,管理bcache的通用唯一识别码(uuid)信息;数据桶(Data bucket)406是最终SSD所缓存的数据存放位置。其中,superblock bucket、journal bucket从SSD设备头部开始按顺序依次排布;其余4类bucket随机排布。
如图4A右图所示,本申请实施例引入第7类指纹桶(fingerprint bucket) 407(图4A右),用于存放data bucket中缓存数据的指纹信息,fingerprint bucket 依照次序排列在journal bucket之后。对于每一份写入data bucket的数据均计算 指纹,之后向fingerprint bucket进行记录。
图4B为本申请实施例提供的再一种数据写入方法的实现流程示意图,如 图4B示,工作流程描述如下:
步骤S400、开始;
开始向SSD写入IO数据。
步骤S401、新IO数据到达SSD,计算指纹;
根据IO数据获得数据指纹信息,数据的指纹信息包括数据在SSD中存储 的偏移地址;数据的长度;数据的校验信息;该数据被重复引用的次数。
记录数据指纹的数据结构如下:
Fingerprint{
data_SSD_offset;
data_lenth;
data_digest;
data_count;
}
其中:data_SSD_offset用于记录数据在SSD中的偏移地址(在data bucket 中的存储地址);data_lenth用于记录数据的长度;data_digest记录数据的校验 信息,即,数据的指纹校验信息;data_count记录该数据被重复引用的次数。
常见的指纹计算校验算法,如CRC32、CRC64、MD5等。根据输入的IO 数据进行指纹计算,生成的一个唯一串码,如32位/64位的字符串,即,根据 IO数据获得数据指纹信息。指纹信息由字母、数字组成,例如 8bba9df07451f01abf0de6af1ef24a76。
步骤S402、在指纹数据库中进行匹配;
将数据指纹信息与指纹数据库中的指纹信息进行匹配,如果匹配成功转到 步骤S403,如果匹配不成功转到步骤S406;
将获取到的指纹信息与指纹数据库中的指纹信息进行匹配。例如:某一数 据块计算出其指纹信息为8bba9df07451f01abf0de6af1ef24a76,根据该指纹信息 与存在的指纹库进行对比,查看是否存在相同的指纹信息。
可以使用如图2C的平衡搜索树方法管理指纹数据库,在进行指纹匹配时 可保证对各个指纹信息的查询最差时间复杂度为O(log(n))。
也可以使用如图2D的跳跃表形式结构管理数据指纹数据库,以fingerprint.data_digest作为key值进行链表排序,建立多级跳跃索引,在有序链 表间进行多级索引查询,实现二分查找,最差时间复杂度为O(log(n))。
如果指纹数据库有相同的指纹信息表示该指纹信息匹配成功,转到步骤 S403;如果指纹数据库没有相同的指纹信息表示该指纹信息没有匹配成功,转 到步骤S406。
步骤403、写入元数据;
写入IO数据的元数据,元数据(Metadata),又称中介数据、中继数据, 为描述数据的数据(data about data),主要是描述数据属性(property)的信息, 用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
元数据的布局如图4A所示:图4A左图,未引入数据指纹库之前,bcache 存放数据/元数据的基本单元bucket按用途可分为以下6类:超级块桶 (Superblock bucket)401,存放bcache的元数据,用于bcache设备的重建;日 志桶(Journal buckt)402,用于加速IO元数据的更新;平衡搜索树桶(Btree bucket) 403,用于管理IO的元数据,便于索引;优先级桶(Prio bucket)404,管理bucket 的优先级;通用唯一识别码桶(Uuid bucket)405,管理bcache的通用唯一识 别码(uuid)信息;数据桶(Data bucket)406是最终SSD所缓存的数据存放 位置。其中,superblock bucket、journal bucket从SSD设备头部开始按顺序依 次排布;其余4类bucket随机排布。
图4A右图,本申请实施例引入第7类指纹桶(fingerprint bucket)407(图 1右),用于存放data bucket中缓存数据的指纹信息,fingerprint bucket依照次 序排列在journal bucket之后。对于每一份写入data bucket的数据均计算指纹, 之后向fingerprint bucket进行记录。
IO数据的元数据关键数据结构如下:
Metadata{
data_lenth;
data_digest;
data_ssd_offset;
data_hdd;
data_hdd_offset;
}
其中:data_lenth记录IO数据的长度信息;data_digest记录IO数据内容的 校验信息,即,IO数据的指纹校验信息;data_ssd_offset记录IO数据在SSD 设备中的存放位置;data_hdd记录IO数据对应的bcache绑定的后端设备的信 息;data_hdd_offset记录IO数据在后端设备中的存放地址。
由此元数据结构可以看出,数据结构(Metadata)可以有效记录数据在SSD 设备及HDD设备之间的映射关系。
如果输入SSD的新IO数据指纹信息与指纹数据库匹配上,只需要对SSD 写入该新IO数据的元数据,不需要写入数据。这样可以实现数据写入,减少向 SSD的数据写入量,进而延长SSD闪存介质使用寿命。
步骤S404、将元数据中指针指向重复数据的存放地址;
指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(pointsto)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元, 可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通 过它能找到以它为地址的内存单元。
由于新IO数据与指纹数据库匹配上,只在SSD中写入了元数据,所以需 要将元数据中指针指向重复数据的存放地址,方便使用该元数据能够找到对应 的重复数据。
步骤S405、将指纹数据库中该数据指纹信息的引用计数加1;
匹配上指纹信息的IO数据,说明该IO数据被引用,所以需要将指纹数据 库中该数据指纹信息的引用计数加1,这样方便统计该指纹信息对应的数据的 引用次数。
所有新写入的IO数据都从1开始计数;记录引用的效果是当数据存在覆盖 的时候,可以减少计数,当计数降为0之后,进行空间释放。
步骤S406、写入IO数据的数据及元数据;
如果IO数据的指纹信息没有与指纹数据库匹配上,说明SSD中没有相同 的数据,需要同时写入IO数据和IO数据的元数据。
步骤S407、判断IO数据是否存在覆盖;
根据写入IO数据的数据确定数据是否存在覆盖,如果不存在覆盖转到步骤 S408,如果存在覆盖转到步骤S411;
如果新写入的IO数据没有覆盖当前SSD中的数据,转到步骤S408;如果 新写入的数据与当前SSD中的数据存在覆盖关系,转到步骤S411。
步骤S408、将元数据中指针指向数据新写入地址;
同时将新IO数据和IO数据的元数据写入SSD,需要将元数据中指针指向 IO数据新写入地址。
步骤S409、向指纹数据库插入新数据指纹信息;
根据记录数据指纹的数据结构,对新的数据增加指纹信息,并将新IO数据 的指纹信息加入指纹数据库。
步骤S410、指纹引用数置为1;
将新IO数据指纹引用数设置为1,因为新IO数据存入SSD并被引用,将 新IO数据指纹引用数设置为1。
步骤S411、按照覆盖情况,处理数据块分割;
若新到来的IO数据在地址空间上与之前写入的IO数据存在重合,则会产 生数据的覆盖现象,应以新到来的IO数据为准,依据覆盖范围,可分为以下四 种场景:
前半原IO数据的数据地址被覆盖(参见图3A)以及后半部分原IO数据的 数据地址被覆盖(参见图3C)场景,原闪存中已存储的IO数据地址被覆盖, 新分割出两个IO数据。分割得到的两个IO新数据分别按照新待写入IO数据 进行指纹处理;
中间部分原IO数据的数据地址被(参见图3B)场景,原闪存中已存储的 数据地址被覆盖,新分割出三个IO数据。分割得到的三个IO新数据分别按照 新待写入数据进行指纹处理;
全部原IO数据的数据地址被覆盖(参见图3D)场景,原IO数据的数据地 址被覆盖,新产生一个IO数据。分割得到新IO数据按照新待写入数据进行指 纹处理。
步骤S412、对于被覆盖的原数据,在指纹数据库中对其引用减1;
如果某一地址起始的定长数据被覆盖,说明这个地址空间的数据已更新, 原来的数据失效,不会再被访问要求进行读取(只能读出最后写入的新数据), 因此原来数据的引用需要减1。
步骤S413、判断指纹引用数是否为0;
确定指纹引用数是否为0,是转到步骤414,不是转到步骤415;
确定减1之后的指纹引用数是否为0,如果指纹引用数是0转到步骤414, 指纹引用数不为0转到步骤415。
步骤S414、删除该指纹元数据,同步删除对应数据;
由于该指纹引用数为0,说明该数据已经没有用了。可以删除该指纹元数 据,同步删除对应数据。及时清理SSD空间,使SSD使用更高效。
步骤S415、对经分割新生成的数据,将其作为新IO数据来处理,以1个 或多个IO形式,重新进入流程开始位置。
如果指纹引用数不为0,说明该数据还有存在的必要,只对经分割新生成 的数据做处理。
前半部分IO数据覆盖(参见图3A)以及后半部分IO数据覆盖(参见图 3C)场景,原IO数据失效,新分割出两个数据。分割得到的两个新IO数据分 别按照新IO数据进行指纹处理;
中间部分IO数据覆盖(参见图3B)场景,原IO数据失效,新分割出三个 数据。分割得到的三个新IO数据分别按照新IO数据进行指纹处理;
全部IO数据覆盖(参见图3D)场景,原IO数据块失效,新产生一个数据。 分割得到新数据按照新IO数据进行指纹处理。
步骤S416、结束。
实施例八
数据回刷是bcahce的策略,bcache作为缓存设备,高速的SSD设备空间 有限,不可能长时间保存数据,因此需要进行回刷,回刷通常有两种策略:时 间策略,指数据在SSD中超过指定时限;空间策略,指数据在SSD中超过了 特定空间水位线阈值。
后台SSD向HDD回刷数据的流程需要在SSD中进行数据读取,向HDD 中进行数据写入,同时在SSD的元数据中记录该数据块已经写入了HDD中。
图4C为本申请实施例提供的一种数据回刷方法的实现流程示意图,如图 4C示,工作流程描述如下:
步骤S420、开始;
步骤S421、写回策略启动,对数据进行回刷;
回刷就是将SSD中的IO数据写入HDD中。
步骤S422、找到数据对应的元数据信息,获取data_digest数值;
在SSD中找到IO数据对应的元数据信息,获取data_digest数值。
步骤S423、在指纹数据库中,获取data_digest数值对应的指纹信息;
在SSD的指纹数据库中,获取data_digest数值对应的指纹信息。
步骤S424、将该数据指纹信息引用数减1;
由于SDD中的数据已经回刷到HDD,SDD中元数据需要删除,这时需要 经该数据指纹信息引用数减1。
步骤S425、指纹引用数是否为0;
确定指纹引用数为0,转到步骤426,不为0,转到步骤427。
步骤S426、删除指纹及所缓存的数据;
指纹引用数减到0,说明该数据已经回刷到HDD中,且没有引用价值,可 以删除指纹及所缓存数据。
步骤S427、删除该数据的元数据信息;
指纹引用数没有到0,说明该数据还有引用价值,将该数据的元数据信息 删除,等待下一次该指纹对应的元数据删除流程,再做指纹引用数减1,直到 指纹引用数为0,可以删除指纹及所缓存数据。
步骤S428、结束。
实施例九
基于前述的实施例,本申请实施例提供一种数据写入装置,该装置包括所 包括的各模块,可以通过数据写入设备(例如计算机、手机等具有信息处理能 力的电子设备)中的处理器来实现;当然也可通过具体的逻辑电路实现;在实 施的过程中,处理器可以为中央处理器(CPU)、微处理器(MPU)、数字信号 处理器(DSP)或现场可编程门阵列(FPGA)等。
图5为本申请实施例提供的数据写入装置的组成结构示意图,如图5所示, 所述装置500包括第一确定模块501、第二确定模块502、得到模块503和写入 模块,其中:
第一确定模块501,用于确定向闪存待写入数据;
第二确定模块502,用于确定所述待写入数据的指纹信息;
得到模块503,用于将所述待写入数据的指纹信息与指纹数据库中的指纹 信息进行匹配,得到匹配结果;
写入模块504,用于基于所述匹配结果,将所述待写入数据的相应部分写 入所述闪存。
基于前述的实施例,本申请实施例提供一种数据写入装置,所述装置包括: 第一确定模块、第二确定模块、得到模块、第一写入子模块和第二写入子模块, 其中:
第一确定模块,用于确定向闪存待写入数据;
第二确定模块,用于确定所述待写入数据的指纹信息;
得到模块,用于将所述待写入数据的指纹信息与指纹数据库中的指纹信息 进行匹配,得到匹配结果;
第一写入子模块,用于如果所述匹配结果表明所述待写入数据的指纹信息 与所述指纹数据库中的指纹信息匹配时,将所述待写入数据的元数据写入所述 闪存;
第二写入子模块,用于如果所述匹配结果表明所述待写入数据的指纹信息 与所述指纹数据库中的指纹信息不匹配时,将所述待写入数据和所述待写入数 据的元数据写入所述闪存。
基于前述的实施例,本申请实施例提供一种数据写入装置,所述装置包括: 第一确定模块、第二确定模块、得到模块和第一写入子模块、作为子模块、第 一确定子模块、第一指向子模块、加1子模块,其中:
第一确定模块,用于确定向闪存待写入数据;
第二确定模块,用于确定所述待写入数据的指纹信息;
得到模块,用于将所述待写入数据的指纹信息与指纹数据库中的指纹信息 进行匹配,得到匹配结果;
第一写入子模块,用于如果所述匹配结果表明所述待写入数据的指纹信息 与所述指纹数据库中的指纹信息匹配时,将所述待写入数据的元数据写入所述 闪存;
作为子模块,将与所述待写入数据的指纹信息匹配的所述指纹数据库中的 指纹信息,作为被引用的指纹信息;
第一确定子模块,用于根据所述被引用的指纹信息,确定重复数据的存放 地址;
第一指向子模块,用于将所述待写入数据的元数据中的指针指向所述重复 数据的存放地址;
加1子模块,用于将所述被引用的指纹信息的引用次数加1。
基于前述的实施例,本申请实施例提供一种数据写入装置,所述装置包括: 第一确定模块、第二确定模块、得到模块和第一写子入模块、第一确定子模块、 第一指向子模块、加1子模块、存放子模块、管理子模块,其中:
第一确定模块,用于确定向闪存待写入数据;
第二确定模块,用于确定所述待写入数据的指纹信息;
得到模块,用于将所述待写入数据的指纹信息与指纹数据库中的指纹信息 进行匹配,得到匹配结果;
第一写入子模块,用于如果所述匹配结果表明所述待写入数据的指纹信息 与所述指纹数据库中的指纹信息匹配时,将所述待写入数据的元数据写入所述 闪存;
作为子模块,将与所述待写入数据的指纹信息匹配的所述指纹数据库中的 指纹信息,作为被引用的指纹信息;
第一确定子模块,用于根据所述被引用的指纹信息,确定重复数据的存放 地址;
第一指向子模块,用于将所述待写入数据的元数据中的指针指向所述重复 数据的存放地址;
加1子模块,用于将所述被引用的指纹信息的引用次数加1;
存放子模块,用于将所述待写入数据的指纹信息和所述待写入数据的存放 地址,存放在记录指纹的数据结构中;
管理子模块,用于在所述指纹数据库中,采用平衡搜索树方式或者跳跃表 方式对所述数据结构进行管理。
基于前述的实施例,本申请实施例提供一种数据写入装置,所述装置包括: 第一确定模块、第二确定模块、得到模块、第一写子入模块、第二写子入模块、 置为模块、存入模块和指向模块,其中:
第一确定模块,用于确定向闪存待写入数据;
第二确定模块,用于确定所述待写入数据的指纹信息;
得到模块,用于将所述待写入数据的指纹信息与指纹数据库中的指纹信息 进行匹配,得到匹配结果;
第一写入子模块,用于如果所述匹配结果表明所述待写入数据的指纹信息 与所述指纹数据库中的指纹信息匹配时,将所述待写入数据的元数据写入所述 闪存;
第二写入子模块,用于如果所述匹配结果表明所述待写入数据的指纹信息 与所述指纹数据库中的指纹信息不匹配时,将所述待写入数据和所述待写入数 据的元数据写入所述闪存;
置为模块,用于不匹配时,将所述待写入数据的指纹信息的引用次数置为 初始值;
存入模块,用于将所述待写入数据的指纹信息存入所述指纹数据库;
第二指向模块,用于将所述待写入数据的元数据的指针指向所述待写入数 据的存放地址。
基于前述的实施例,本申请实施例提供一种数据写入装置,所述装置包括: 第一确定模块、第二确定模块、得到模块、第一写入子模块、第二写入子模块、 第一减1模块和第三确定模块,其中:
第一确定模块,用于确定向闪存待写入数据;
第二确定模块,用于确定所述待写入数据的指纹信息;
得到模块,用于将所述待写入数据的指纹信息与指纹数据库中的指纹信息 进行匹配,得到匹配结果;
第一写入子模块,用于如果所述匹配结果表明所述待写入数据的指纹信息 与所述指纹数据库中的指纹信息匹配时,将所述待写入数据的元数据写入所述 闪存;
第二写入子模块,用于如果所述匹配结果表明所述待写入数据的指纹信息 与所述指纹数据库中的指纹信息不匹配时,将所述待写入数据和所述待写入数 据的元数据写入所述闪存;
第一减1模块,用于所述待写入数据的地址空间与所述闪存中已存储数据 的地址空间存在重合时,将所述已存储数据的指纹信息的引用次数减1;
第三确定模块,用于将重合产生的新数据确定为待写入数据,以写入闪存。
基于前述的实施例,本申请实施例提供一种数据写入装置,所述装置包括: 第一确定模块、第二确定模块、得到模块、第一写入子模块、第二写入子模块、 减1模块、第三确定模块和第一删除模块,其中:
第一确定模块,用于确定向闪存待写入数据;
第二确定模块,用于确定所述待写入数据的指纹信息;
得到模块,用于将所述待写入数据的指纹信息与指纹数据库中的指纹信息 进行匹配,得到匹配结果;
第一写入子模块,用于如果所述匹配结果表明所述待写入数据的指纹信息 与所述指纹数据库中的指纹信息匹配时,将所述待写入数据的元数据写入所述 闪存;
第二写入子模块,用于如果所述匹配结果表明所述待写入数据的指纹信息 与所述指纹数据库中的指纹信息不匹配时,将所述待写入数据和所述待写入数 据的元数据写入所述闪存;
减1模块,用于所述待写入数据的地址空间与所述闪存中已存储数据的地 址空间存在重合时,将所述已存储数据的指纹信息的引用次数减1;
第三确定模块,用于将重合产生的新数据确定为待写入数据,以写入闪存。
第一删除模块,用于当所述已存储数据的指纹信息引用次数为0时,从所 述闪存删除所述已存储数据和所述已存储数据的元数据。
基于前述的实施例,本申请实施例提供一种数据写入装置,所述装置包括: 第一确定模块、第二确定模块、得到模块、第一写入子模块、第二写入子模块、 第一获取模块、第二获取模块和第二减1模块,其中:
第一确定模块,用于确定向闪存待写入数据;
第二确定模块,用于确定所述待写入数据的指纹信息;
得到模块,用于将所述待写入数据的指纹信息与指纹数据库中的指纹信息 进行匹配,得到匹配结果;
第一写入子模块,用于如果所述匹配结果表明所述待写入数据的指纹信息 与所述指纹数据库中的指纹信息匹配时,将所述待写入数据的元数据写入所述 闪存;
第二写入子模块,用于如果所述匹配结果表明所述待写入数据的指纹信息 与所述指纹数据库中的指纹信息不匹配时,将所述待写入数据和所述待写入数 据的元数据写入所述闪存;
第一获取模块,用于当所述闪存上存储的数据需要回刷到磁盘时,从需要 回刷的数据的元数据获取所述回刷数据的校验信息;
第二获取模块,用于在所述指纹数据库中,获取与所述校验信息对应的要 回刷的指纹信息;
第二减1模块,用于向所述磁盘回刷一次所述需要回刷的数据时,将所述 要回刷的指纹信息的引用次数减1。
基于前述的实施例,本申请实施例提供一种数据写入装置,所述装置包括: 第一确定模块、第二确定模块、得到模块、第一写入子模块、第二写入子模块、 第一获取模块、第二获取模块、第二减1模块和第二删除模块,其中:
第一确定模块,用于确定向闪存待写入数据;
第二确定模块,用于确定所述待写入数据的指纹信息;
得到模块,用于将所述待写入数据的指纹信息与指纹数据库中的指纹信息 进行匹配,得到匹配结果;
第一写入子模块,用于如果所述匹配结果表明所述待写入数据的指纹信息 与所述指纹数据库中的指纹信息匹配时,将所述待写入数据的元数据写入所述 闪存;
第二写入子模块,用于如果所述匹配结果表明所述待写入数据的指纹信息 与所述指纹数据库中的指纹信息不匹配时,将所述待写入数据和所述待写入数 据的元数据写入所述闪存;
第一获取模块,用于当所述闪存上存储的数据需要回刷到磁盘时,从需要 回刷的数据的元数据获取所述回刷数据的校验信息;
第二获取模块,用于在所述指纹数据库中,获取与所述校验信息对应的要 回刷的指纹信息;
第二减1模块,用于向所述磁盘回刷一次所述需要回刷的数据时,将所述 要回刷的指纹信息的引用次数减1;
第二删除模块,用于当所述要回刷的指纹信息的引用次数为0时,从所述 闪存删除所述需要回刷的数据和所述需要回刷的数据的元数据。
所以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方 法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参 照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的 数据写入方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可 读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对 相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品 存储在一个存储介质中,包括若干指令用以使得电子设备(可以是手机、平板 电脑、笔记本电脑、台式计算机、机器人、无人机等)执行本申请各个实施例 所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储 器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介 质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
对应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机 程序,该计算机程序被处理器执行时实现上述实施例中提供的客户端侧的或服 务端侧的数据写入方法中的步骤。
对应地,本申请实施例提供一种数据写入设备,图6为本申请实施提供的 数据写入设备的一种硬件实体示意图,如图6所示,该设备600的硬件实体包 括:包括存储器601和处理器602,所述存储器601存储有可在处理器602上 运行的计算机程序,所述处理器602执行所述程序时实现上述实施例中提供的 数据写入方法中的步骤。
存储器601配置为存储由处理器602可执行的指令和应用,还可以缓存待 处理器602以及数据写入设备600中各模块待处理或已经处理的数据(例如, 图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random AccessMemory,RAM)实现。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施 例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质 和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实 施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此, 在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指 相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合 在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序 号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻 辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例 序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意 在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装 置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为 这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由 语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物 品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可 以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所 述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式, 如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽 略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦 合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可 以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为 单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可 以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来 实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中, 也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一 个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软 件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可 以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储 介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介 质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者 光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立 的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样 的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可 以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包 括若干指令用以使得数据写入设备(可以是手机、平板电脑、笔记本电脑、台 式计算机、机器人、无人机等)执行本申请各个实施例所述方法的全部或部分。 而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储 程序代码的介质。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可 以任意组合,得到新的方法实施例。
本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可 以任意组合,得到新的产品实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情 况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化 或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所 述权利要求的保护范围为准。

Claims (12)

1.一种数据写入方法,其特征在于,所述方法包括:
确定向闪存待写入数据;
确定所述待写入数据的指纹信息;
将所述待写入数据的指纹信息与指纹数据库中的指纹信息进行匹配,得到匹配结果;
基于所述匹配结果,将所述待写入数据的相应部分写入所述闪存。
2.根据权利要求1所述的方法,其特征在于,所述基于所述匹配结果,将所述待写入数据的相应部分写入所述闪存,所述方法包括:
如果所述匹配结果表明所述待写入数据的指纹信息与所述指纹数据库中的指纹信息不匹配时,将所述待写入数据和所述待写入数据的元数据写入所述闪存;
如果所述匹配结果表明所述待写入数据的指纹信息与所述指纹数据库中的指纹信息匹配时,将所述待写入数据的元数据写入所述闪存。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
将与所述待写入数据的指纹信息匹配的所述指纹数据库中的指纹信息,作为被引用的指纹信息;
根据所述被引用的指纹信息,确定重复数据的存放地址;
将所述待写入数据的元数据中的指针指向所述重复数据的存放地址;
将所述被引用的指纹信息的引用次数加1。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
将所述待写入数据的指纹信息和所述待写入数据的存放地址,存放在记录指纹的数据结构中;
在所述指纹数据库中,采用平衡搜索树方式或者跳跃表方式对所述数据结构进行管理。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当所述待写入数据的地址空间与所述闪存中已存储数据的地址空间不存在重合时,将所述待写入数据的指纹信息的引用次数置为初始值;
将所述待写入数据的指纹信息存入所述指纹数据库;
将所述待写入数据的元数据的指针指向所述待写入数据的存放地址。
6.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当所述待写入数据的地址空间与所述闪存中已存储数据的地址空间存在重合时,将所述已存储数据的指纹信息的引用次数减1;
将重合产生的新数据确定为待写入数据,以写入闪存。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当所述已存储数据的指纹信息的引用次数为0时,从所述闪存删除所述已存储数据和所述已存储数据的元数据。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述方法还包括:
当所述闪存上存储的数据需要回刷到磁盘时,从需要回刷的数据的元数据获取所述回刷数据的校验信息;
在所述指纹数据库中,获取与所述校验信息对应的要回刷的指纹信息;
向所述磁盘回刷一次所述需要回刷的数据时,将所述要回刷的指纹信息的引用次数减1。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
当所述要回刷的指纹信息的引用次数为0时,从所述闪存删除所述需要回刷的数据和所述需要回刷的数据的元数据。
10.一种数据写入装置,其特征在于,包括:
第一确定模块,用于确定向闪存待写入数据;
第二确定模块,用于确定所述待写入数据的指纹信息;
得到模块,用于将所述待写入数据的指纹信息与指纹数据库中的指纹信息进行匹配,得到匹配结果;
写入模块,用于基于所述匹配结果,将所述待写入数据的相应部分写入所述闪存。
11.一种数据写入设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至9任一项所述数据写入方法中的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至9任一项所述数据写入方法中的步骤。
CN202010529897.2A 2020-06-11 2020-06-11 数据写入方法、装置、设备及存储介质 Pending CN113805787A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010529897.2A CN113805787A (zh) 2020-06-11 2020-06-11 数据写入方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010529897.2A CN113805787A (zh) 2020-06-11 2020-06-11 数据写入方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN113805787A true CN113805787A (zh) 2021-12-17

Family

ID=78891954

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010529897.2A Pending CN113805787A (zh) 2020-06-11 2020-06-11 数据写入方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN113805787A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114896620A (zh) * 2022-07-07 2022-08-12 安徽华典大数据科技有限公司 一种基于量子加密数据库索引方法、设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102646069A (zh) * 2012-02-23 2012-08-22 华中科技大学 一种延长固态盘使用寿命的方法
CN105511802A (zh) * 2015-11-24 2016-04-20 北京达沃时代科技有限公司 写缓存的方法和装置以及磁盘缓存区的同步方法和装置
CN108280229A (zh) * 2018-02-26 2018-07-13 腾讯科技(深圳)有限公司 内存数据读写方法和装置
CN108415669A (zh) * 2018-03-15 2018-08-17 深信服科技股份有限公司 存储系统的数据去重方法及装置、计算机装置及存储介质
CN108763287A (zh) * 2018-04-13 2018-11-06 同济大学 大规模可通行区域驾驶地图的构建方法及其无人驾驶应用方法
CN109062505A (zh) * 2018-07-13 2018-12-21 南瑞集团有限公司 一种缓存策略写入分层硬件架构下的写性能优化方法
CN110413624A (zh) * 2019-08-07 2019-11-05 南京录信软件技术有限公司 一种基于列存的多列联合存储的方法
US10503717B1 (en) * 2014-12-30 2019-12-10 EMC IP Holding Company LLC Method for locating data on a deduplicated storage system using a SSD cache index
CN111104066A (zh) * 2019-12-17 2020-05-05 华中科技大学 数据写入方法、装置及存储服务器和计算机可读存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102646069A (zh) * 2012-02-23 2012-08-22 华中科技大学 一种延长固态盘使用寿命的方法
US10503717B1 (en) * 2014-12-30 2019-12-10 EMC IP Holding Company LLC Method for locating data on a deduplicated storage system using a SSD cache index
CN105511802A (zh) * 2015-11-24 2016-04-20 北京达沃时代科技有限公司 写缓存的方法和装置以及磁盘缓存区的同步方法和装置
CN108280229A (zh) * 2018-02-26 2018-07-13 腾讯科技(深圳)有限公司 内存数据读写方法和装置
CN108415669A (zh) * 2018-03-15 2018-08-17 深信服科技股份有限公司 存储系统的数据去重方法及装置、计算机装置及存储介质
CN108763287A (zh) * 2018-04-13 2018-11-06 同济大学 大规模可通行区域驾驶地图的构建方法及其无人驾驶应用方法
CN109062505A (zh) * 2018-07-13 2018-12-21 南瑞集团有限公司 一种缓存策略写入分层硬件架构下的写性能优化方法
CN110413624A (zh) * 2019-08-07 2019-11-05 南京录信软件技术有限公司 一种基于列存的多列联合存储的方法
CN111104066A (zh) * 2019-12-17 2020-05-05 华中科技大学 数据写入方法、装置及存储服务器和计算机可读存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114896620A (zh) * 2022-07-07 2022-08-12 安徽华典大数据科技有限公司 一种基于量子加密数据库索引方法、设备及存储介质

Similar Documents

Publication Publication Date Title
US11474972B2 (en) Metadata query method and apparatus
US11853549B2 (en) Index storage in shingled magnetic recording (SMR) storage system with non-shingled region
US10120869B2 (en) Method and apparatus for fault-tolerant memory management
WO2018064962A1 (zh) 数据存储方法、电子设备和计算机非易失性存储介质
CN109558084B (zh) 一种数据处理方法以及相关设备
JP2005267600A5 (zh)
CN107122130B (zh) 一种数据重删方法及装置
CN103902623A (zh) 用于在存储系统上存取文件的方法和系统
CN110888837B (zh) 对象存储小文件归并方法及装置
CN113535670B (zh) 一种虚拟化资源镜像存储系统及其实现方法
CN109407985B (zh) 一种数据管理的方法以及相关装置
CN112148217B (zh) 全闪存储系统的重删元数据的缓存方法、装置及介质
CN111914020A (zh) 数据同步方法及装置、数据查询方法及装置
CN107846327A (zh) 一种网管性能数据的处理方法及装置
CN117369731B (zh) 一种数据的缩减处理方法、装置、设备及介质
CN114647658A (zh) 一种数据检索方法、装置、设备及机器可读存储介质
US20180011897A1 (en) Data processing method having structure of cache index specified to transaction in mobile environment dbms
CN113805787A (zh) 数据写入方法、装置、设备及存储介质
CN116991761A (zh) 一种数据处理方法、装置、计算机设备及存储介质
CN116610636A (zh) 一种文件系统的数据处理方法、装置、电子设备及存储介质
CN112394876A (zh) 大文件存储/读取方法、存储/读取装置和计算机设备
CN114281242B (zh) 存储器负载均衡的方法、装置和设备
CN112269947B (zh) 空间文本数据的缓存方法、装置、电子设备及存储介质
CN114416676A (zh) 数据处理方法、装置、设备和存储介质
CN104298614A (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