CN112035065B - 一种数据写入方法、装置、设备及计算机可读存储介质 - Google Patents

一种数据写入方法、装置、设备及计算机可读存储介质 Download PDF

Info

Publication number
CN112035065B
CN112035065B CN202010887373.0A CN202010887373A CN112035065B CN 112035065 B CN112035065 B CN 112035065B CN 202010887373 A CN202010887373 A CN 202010887373A CN 112035065 B CN112035065 B CN 112035065B
Authority
CN
China
Prior art keywords
data
metadata
writing
linked list
lower case
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
CN202010887373.0A
Other languages
English (en)
Other versions
CN112035065A (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.)
Beijing Inspur Data Technology Co Ltd
Original Assignee
Beijing Inspur Data 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 Beijing Inspur Data Technology Co Ltd filed Critical Beijing Inspur Data Technology Co Ltd
Priority to CN202010887373.0A priority Critical patent/CN112035065B/zh
Publication of CN112035065A publication Critical patent/CN112035065A/zh
Application granted granted Critical
Publication of CN112035065B publication Critical patent/CN112035065B/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/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请公开了一种数据写入方法、装置、设备及计算机可读存储介质,方法包括:接收写数据,判断写数据的长度是否大于预设长度;若否,则确定写数据为小写数据,并根据小写数据生成对应的元数据;若是,则确定写数据为大写数据,并根据大写数据生成对应的元数据;将小写数据、小写数据对应的元数据、大写数据对应的元数据写入SCM阵列中,并将大写数据写入SSD阵列中。本申请公开的上述技术方案,将数据长度比较大的数据写入到SSD阵列中,并将数据长度比较小的数据写入到SCM阵列中,以缓解SSD阵列中的SSD所存在的写放大问题,从而提高SSD的性能,并减少对SSD寿命的影响。

Description

一种数据写入方法、装置、设备及计算机可读存储介质
技术领域
本申请涉及数据存储技术领域,更具体地说,涉及一种数据写入方法、装置、设备及计算机可读存储介质。
背景技术
随着基于闪存的SSD(Solid state drive,固态盘)容量的扩展和成本的降低,具有高性能和低能耗的SSD被越来越广泛地应用在存储系统中,且将常SSD组成阵列来进行使用。
在SSD中,其基本的读写单位是页面(page),而擦除(或者说垃圾回收)的基本单位是块(block),且一个块通常是由整数个页面组成,当对SSD中的一个页面进行更新或页面内的数据无效而需要写入新数据时,就需要对该页面所在的整个块进行读取、擦除,然后,再将数据写入到页面中,而这就造成SSD的写放大,且写数据越小写放大现象越严重,另外,由于在写密集情况下垃圾回收时会引起大量的数据迁移,因此,则会造成SSD性能的下降,与此同时,由于SSD寿命有限,因此,频繁的擦除会减少SSD的寿命。
综上所述,如何缓解写放大问题,以提高SSD的性能,并减少对SSD寿命的影响,是目前本领域技术人员亟待解决的技术问题。
发明内容
有鉴于此,本申请的目的是提供一种数据写入方法、装置、设备及计算机可读存储介质,用于缓解写放大问题,以提高SSD的性能,并减少对SSD寿命的影响。
为了实现上述目的,本申请提供如下技术方案:
一种数据写入方法,包括:
接收写数据,判断所述写数据的长度是否大于预设长度;
若否,则确定所述写数据为小写数据,并根据所述小写数据生成对应的元数据;
若是,则确定所述写数据为大写数据,并根据所述大写数据生成对应的元数据;
将所述小写数据、所述小写数据对应的元数据、所述大写数据对应的元数据写入SCM阵列中,并将所述大写数据写入SSD阵列中。
优选的,在将所述小写数据、所述小写数据对应的元数据、所述大写数据对应的元数据写入SCM阵列中,并将所述大写数据写入SSD阵列中之前,还包括:
将所述小写数据对应的元数据写入小写链表,将所述大写数据对应的元数据写入大写链表;其中,所述小写链表及所述大写链表均位于内存中预先划分出的元数据区中;
将所述小写数据及所述大写数据写入所述内存中预先划分出的数据区;
相应地,将所述小写数据、所述小写数据对应的元数据、所述大写数据对应的元数据写入SCM阵列中,并将所述大写数据写入SSD阵列中,包括:
当所述数据区的空间使用率大于预设值时,将所述小写链表中的元数据对应的小写数据、所述小写链表中的元数据、所述大写链表中的元数据写入所述SCM阵列,并将所述大写链表中的元数据对应的大写数据写入所述SSD阵列中。
优选的,所述小写链表为小写LRU链表,所述大写链表为大写LRU链表;
相应地,将所述小写数据对应的元数据写入小写链表,将所述大写数据对应的元数据写入大写链表,包括:
将所述小写数据对应的元数据写入所述小写LRU链表的首端,并将所述大写数据对应的元数据写入所述大写LRU链表的首端;
将所述小写链表中的元数据对应的小写数据、所述小写链表中的元数据、所述大写链表中的元数据写入所述SCM阵列,并将所述大写链表中的元数据对应的大写数据写入所述SSD阵列中,包括:
将与所述小写LRU链表中位于末端的元数据对应的小写数据、所述小写LRU链表中位于末端的元数据、所述大写LRU链表中位于末端的元数据写入所述SCM阵列,并将与所述大写LRU链表中位于末端的元数据对应的大写数据写入所述SSD阵列中,直至所述数据区的空间使用率不大于所述预设值为止。
优选的,还包括:
当接收到读请求时,判断所述元数据区中是否存储有与所述读请求对应的元数据;
若所述元数据区存储有所述元数据,则从所述元数据区中获取所述元数据,将所述元数据写入对应的链表的首端,并判断所述内存的数据区中是否存储有与所述读请求对应的数据,若存储有与所述读请求对应的数据,则从所述内存的数据区中读取与所述读请求对应的数据,若未存储有与所述读请求对应的数据,则根据所述元数据从对应的阵列中获取与所述元数据对应的数据,且将获取到的数据写入所述内存的数据区中;
若所述元数据区未存储有所述元数据,则从所述SCM阵列中获取所述元数据,将所述元数据写入对应的链表的首端,并根据所述元数据从对应的阵列中获取与所述元数据对应的数据,且将获取到的数据写入所述内存的数据区中。
优选的,在将获取到的数据写入所述内存的数据区中之后,还包括:
判断所述数据区的空间使用率是否大于所述预设值,若是,则执行所述将所述小写LRU链表中位于末端的元数据对应的小写数据、所述小写链表中位于末端的元数据、所述大写链表中位于末端的元数据写入所述SCM阵列,并将所述大写LRU链表中位于末端的元数据对应的大写数据写入所述SSD阵列中的步骤,直至所述数据区的空间使用率不大于所述预设值为止。
一种数据写入装置,包括:
接收模块,用于接收写数据,判断所述写数据的长度是否大于预设长度;
第一确定模块,用于若所述写数据的长度不大于所述预设长度,则确定所述写数据为小写数据,并根据所述小写数据生成对应的元数据;
第二确定模块,用于若所述写数据的长度大于所述预设长度,则确定所述写数据为大写数据,并根据所述大写数据生成对应的元数据;
第一写入模块,用于将所述小写数据、所述小写数据对应的元数据、所述大写数据对应的元数据写入SCM阵列中,并将所述大写数据写入SSD阵列中。
优选的,还包括:
第二写入模块,用于在将所述小写数据、所述小写数据对应的元数据、所述大写数据对应的元数据写入SCM阵列中,并将所述大写数据写入SSD阵列中之前,将所述小写数据对应的元数据写入小写链表,将所述大写数据对应的元数据写入大写链表;其中,所述小写链表及所述大写链表均位于内存中预先划分出的元数据区中;
第三写入模块,用于将所述小写数据及所述大写数据写入所述内存中预先划分出的数据区;
相应地,所述第一写入模块包括:
第一写入单元,用于当所述数据区的空间使用率大于预设值时,将所述小写链表中的元数据对应的小写数据、所述小写链表中的元数据、所述大写链表中的元数据写入所述SCM阵列,并将所述大写链表中的元数据对应的大写数据写入所述SSD阵列中。
优选的,所述小写链表为小写LRU链表,所述大写链表为大写LRU链表;
相应地,所述第二写入模块包括:
第二写入单元,用于将所述小写数据对应的元数据写入所述小写LRU链表的首端,并将所述大写数据对应的元数据写入所述大写LRU链表的首端;
相应地,所述第一写入单元包括:
写入子单元,用于将与所述小写LRU链表中位于末端的元数据对应的小写数据、所述小写LRU链表中位于末端的元数据、所述大写LRU链表中位于末端的元数据写入所述SCM阵列,并将与所述大写LRU链表中位于末端的元数据对应的大写数据写入所述SSD阵列中,直至所述数据区的空间使用率不大于所述预设值为止。
一种数据写入设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述任一项所述的数据写入方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的数据写入方法的步骤。
本申请提供了一种数据写入方法、装置、设备及计算机可读存储介质,其中,该方法包括:接收写数据,判断写数据的长度是否大于预设长度;若否,则确定写数据为小写数据,并根据小写数据生成对应的元数据;若是,则确定写数据为大写数据,并根据大写数据生成对应的元数据;将小写数据、小写数据对应的元数据、大写数据对应的元数据写入SCM阵列中,并将大写数据写入SSD阵列中。
本申请公开的上述技术方案,在接收到写数据之后,根据写数据的长度确定其为小写数据还是大写数据,并根据小写数据生成对应的元数据,根据大写数据生成对应的元数据,然后,将小写数据、小写数据对应的元数据、大写数据对应的元数据写入SCM阵列中,并将大写数据写入SSD阵列中,以实现写数据的分流,并通过将写数据中数据长度比较小的写数据写入SCM阵列而使得对数据长度比较小的写数据的更新、重写入等操作不会对SSD阵列造成影响,从而缓解SSD阵列中的SSD所存在的写放大问题,以提高SSD的性能,并减少对SSD寿命的影响,且通过将数据长度比较小的数据写入SCM阵列而充分利用SCM的高性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种数据写入方法的流程图;
图2为本申请实施例提供的另一种数据写入方法的流程图;
图3为本申请实施例提供的一种数据写入装置的结构示意图;
图4为本申请实施例提供的一种数据写入设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1,其示出了本申请实施例提供的一种数据写入方法的流程图,本申请实施例提供的一种数据写入方法,可以包括:
S11:接收写数据,判断写数据的长度是否大于预设长度;若否,则执行步骤S12;若是,则执行步骤S13。
当用户访问存储系统并向存储系统发送写数据时,可以在接收到写数据之后判断写数据的长度是否大于预设长度,若确定写数据的长度不大于预设长度,则执行步骤S12,若确定写数据的长度大于预设长度,则执行步骤13,其中,预设长度的具体大小可以根据SSD中页面的大小和块的大小进行设置,具体地,可以将预设长度的大小设置为256KB,当然,也可以根据需要而对预设长度的大小进行调整。
S12:确定写数据为小写数据,并根据小写数据生成对应的元数据。
若确定写数据的长度不大于预设长度,则将其确定为小写数据,也即本申请所提及的小写数据为数据长度小于预设长度的写数据。
在确定写数据为小写数据之后,可以根据小写数据的逻辑地址、数据长度、读写访问类型等信息生成与小写数据对应的元数据。
S13:确定写数据为大写数据,并根据大写数据生成对应的元数据。
若确定写数据的长度大于预设长度,则将其确定为大写数据,也即本申请所提及的大写数据为数据长度大于预设长度的写数据。
在确定写数据为大写数据之后,可以根据大写数据的逻辑地址、数据长度、读写访问类型等信息生成与大写数据对应的元数据。
S14:将小写数据、小写数据对应的元数据、大写数据对应的元数据写入SCM阵列中,并将大写数据写入SSD阵列中。
在进行数据写入时,可以预先将存储系统中的SCM(Storage class memory,存储级内存)组成SCM阵列,并将SSD组成SSD阵列,以便于提高数据存储性能和数据的可靠性。其中,SCM是一类新型存储介质,具有高性能、非易失、字节级修改的特点,且克服了闪存的寿命限制,更利于运输局和小写数据的存储和访问。
在执行完步骤S12及步骤S13之后,考虑到元数据的数据长度也比较小,则可以将小写数据、小写数据对应的元数据、大写数据生成对应的元数据写入SCM阵列中,并将大写数据写入SSD阵列中,以实现对写数据的分流,而不将全部的写数据都写入到SSD阵列中,具体而言,仅将数据长度比较大的数据(即大写数据)写入到SSD阵列中,而将数据长度比较小的数据(即小写数据、小写数据对应的元数据、大写数据生成对应的元数据)写入到SCM阵列中,以使得仅在对数据长度比较大的数据进行操作时才需要读取、擦除、迁移SSD中该数据所在的块,而对数据长度比较小的数据的更新、重新写入等操作可以直接在SCM阵列中进行,从而缓解SSD阵列中SSD的写放大问题,进而在一定程度上提高SSD的性能,并延长SSD的使用寿命,另外,还可以通过将数据长度比较小的数据写入到SCM阵列中而充分发挥SCM的高性能优势,以便于提高存储系统的存储性能。
需要说明的是,在将小写数据写入SCM阵列中时,可以获取小写数据在SCM阵列中的存储位置,并将存储位置写入与小写数据对应的元数据中,并且在将大写数据写入SSD阵列中时,可以获取大写数据在SSD阵列中的存储位置,并将存储位置写入与大写数据对应的元数据中。
本申请公开的上述技术方案,在接收到写数据之后,根据写数据的长度确定其为小写数据还是大写数据,并根据小写数据生成对应的元数据,根据大写数据生成对应的元数据,然后,将小写数据、小写数据对应的元数据、大写数据对应的元数据写入SCM阵列中,并将大写数据写入SSD阵列中,以实现写数据的分流,并通过将写数据中数据长度比较小的写数据写入SCM阵列而使得对数据长度比较小的写数据的更新、重写入等操作不会对SSD阵列造成影响,从而缓解SSD阵列中的SSD所存在的写放大问题,以提高SSD的性能,并减少对SSD寿命的影响,且通过将数据长度比较小的数据写入SCM阵列而充分利用SCM的高性能。
参见图2,其示出了本申请实施例提供的另一种数据写入方法的流程图。本申请实施例提供的一种数据写入方法,在将小写数据、小写数据对应的元数据、大写数据对应的元数据写入SCM阵列中,并将大写数据写入SSD阵列中之前,还可以包括:
将小写数据对应的元数据写入小写链表,将大写数据对应的元数据写入大写链表;其中,小写链表及大写链表均位于内存中预先划分出的元数据区中;
将小写数据及大写数据写入内存中预先划分出的数据区;
相应地,将小写数据、小写数据对应的元数据、大写数据对应的元数据写入SCM阵列中,并将大写数据写入SSD阵列中,可以包括:
当数据区的空间使用率大于预设值时,将小写链表中的元数据对应的小写数据、小写链表中的元数据、大写链表中的元数据写入SCM阵列,并将大写链表中的元数据对应的大写数据写入SSD阵列中。
在本申请中,可以预先在存储系统的内存中划分出元数据区和数据区,并可以在内存中的元数据区分别初始化一个小写链表和大写链表,其中,小写链表与小写数据对应,大写链表与大写数据对应。
相应地,在将数据对应写入SCM阵列和SSD阵列中之前,可以将小写数据对应的元数据写入小写链表,并将大写数据对应的元数据写入大写链表,且可以将小写数据及大写数据写入内存中的数据区,即先将小写数据及大写数据暂存在内存的用户数据区中,以使得用户在近期需要读取这些数据时可以直接从内存进行读取,以缩短数据读取时间,提高数据读取效率。
在将小写数据及大写数据写入内存中的数据区中时,可以实时判断数据区的空间使用率是否大于预设值,若数据区的空间使用率不大于预设值,则继续执行将小写数据对应的元数据写入小写链表,将大写数据对应的元数据写入大写链表,并将小写数据及大写数据写入内存中预先划分出的数据区的步骤,若数据区的空间使用率大于预设值,则可以启动数据下刷流程,即可以将小写链表中的元数据对应的小写数据、小写链表中的元数据、大写链表中的元数据写入SCM阵列,并将大写链表中的元数据对应的大写数据写入SSD阵列中,以避免数据区中数据过多而对内存的使用造成影响。
需要说明的是,预设值的大小可以根据内存的性能进行设置,具体可以设置为90%,当然,也可以根据实际需要而对其进行调整。另外,在进行数据下刷时,小写链表中的元数据、大写链表中的元数据可以在写入SCM阵列的同时而不在内存的元数据区中进行保留,即在下刷元数据时对应删除元数据区中的元数据,以避免占用过多的内存资源,同样地,小写数据、大写数据在写入对应阵列时也不会在数据区中进行保留,以避免写数据区数据过多而占用过多的内存资源。
本申请实施例提供的一种数据写入方法,小写链表为小写LRU链表,大写链表为大写LRU链表;
相应地,将小写数据对应的元数据写入小写链表,将大写数据对应的元数据写入大写链表,可以包括:
将小写数据对应的元数据写入小写LRU链表的首端,并将大写数据对应的元数据写入大写LRU链表的首端;
将小写链表中的元数据对应的小写数据、小写链表中的元数据、大写链表中的元数据写入SCM阵列,并将大写链表中的元数据对应的大写数据写入SSD阵列中,可以包括:
将与小写LRU链表中位于末端的元数据对应的小写数据、小写LRU链表中位于末端的元数据、大写LRU链表中位于末端的元数据写入SCM阵列,并将与大写LRU链表中位于末端的元数据对应的大写数据写入SSD阵列中,直至数据区的空间使用率不大于预设值为止。
在本申请中,所用链表具体可以为LRU(Least recently used,最近最少使用)链表,即小写链表具体可以为小写LRU链表,大写链表可以为大写LRU链表,则在进行元数据写入时,可以将小写数据对应的元数据写入小写LRU链表的首端,并将大写数据对应的元数据写入大写LRU链表的首端,以使得LRU链表中位于末端的元数据代表最近最少使用的写数据对应的元数据。
相应地,在将写数据写入对应的阵列中时,可以将与小写LRU链表中位于末端的元数据对应的小写数据、小写LRU链表中位于末端的元数据、大写LRU链表中位于末端的元数据写入SCM阵列,即将最近最少使用的小写数据、最近最少使用的小写数据对应的元数据、最近最少使用的大写数据对应的元数据写入SCM阵列中,并将与大写LRU链表中位于末端的元数据对应的大写数据写入SSD阵列中,即将最近最少使用的大写数据写入SSD阵列中,也即将用户最近最少访问的写数据写入对应的阵列中。
在将相应的最近最少使用的数据写入对应的阵列中的同时,可以实时判断内存中的数据区的空间使用率是否大于预设值,若不大于预设值,则停止将数据写入对应的阵列中,若大于预设值,则执行将与小写LRU链表中位于末端的元数据对应的小写数据、小写LRU链表中位于末端的元数据、大写LRU链表中位于末端的元数据写入SCM阵列,并将与大写LRU链表中位于末端的元数据对应的大写数据写入SSD阵列中的步骤,直至数据区的空间使用率不大于预设值为止。
本申请实施例提供的一种数据写入方法,还可以包括:
当接收到读请求时,判断元数据区中是否存储有与读请求对应的元数据;
若元数据区存储有元数据,则从元数据区中获取所述元数据,将元数据写入对应的链表的首端,并判断内存的数据区中是否存储有与读请求对应的数据,若存储有与读请求对应的数据,则从内存的数据区中读取与读请求对应的数据,若未存储有与读请求对应的数据,则根据元数据从对应的阵列中获取与元数据对应的数据,且将获取到的数据写入内存的数据区中;
若元数据区未存储有元数据,则从SCM阵列中获取元数据,将元数据写入对应的链表的首端,并根据元数据从对应的阵列中获取与元数据对应的数据,且将获取到的数据写入内存的数据区中。
在本申请中,当接收到用户发送的读请求时,可以根据读请求的逻辑地址判断内存中的元数据区中是否存储有与读请求对应的元数据:
若元数据区中存储有与读请求对应的元数据,则从元数据区中获取与读请求对应的元数据并将与读请求对应的元数据写入对应的链表的首端,具体地,若与读请求对应的元数据位于小写LRU链表中,则从小写LRU链表中读出与读请求对应的元数据并将与读请求对应的元数据写入小写LRU链表的首端,若与读请求对应的元数据位于大写LRU链表中,则从大写LRU链表中读出与读请求对应的元数据并将与读请求对应的元数据写入大写LRU链表的首端。然后,判断内存的数据区中是否存储有与读请求对应的数据(或者说与从内存的元数据区中获取到的元数据对应的数据),若内存的数据区中存储有与读请求对应的数据,则直接从内存的数据区中读取与读请求对应的数据,若内存的数据区中未存储有与读请求对应的数据,则可以根据从内存的元数据区获取到的元数据获取与读请求对应的数据所在的阵列及在阵列中的存储位置,并根据在阵列中的存储位置而从相应的阵列中获取与读请求对应的数据,且将获取到的与读请求对应的数据写入内存的数据区中,具体地,若根据元数据获取与读请求对应的数据位于SCM阵列中,则可以从元数据中获取与读请求对应的小写数据在SCM阵列中的存储位置,然后,根据存储位置从SCM阵列中获取与读请求对应的小写数据,并将获取到的与读请求对应的小写数据写入内存的数据区中,若根据元数据获取与读请求对应的数据位于SSD阵列中,则可以从元数据中获取与读请求对应的大写数据在SSD阵列中的存储位置,然后,根据存储位置从SSD阵列中获取与读请求对应的大写数据,并将获取到的与读请求对应的大写数据写入内存的数据区中。
若元数据区中未存储有与读请求对应的元数据,则从SCM阵列中获取与读请求对应的元数据,并将与读请求对应且从SCM阵列中获取到的元数据写入对应的链表的首端,具体地,若该元数据为小写数据对应的元数据,则将该元数据写入元数据区中小写LRU链表的首端,且根据从SCM阵列中读出的元数据中获取与读请求对应的小写数据在SCM阵列中的存储位置,然后,根据存储位置从SCM阵列中获取与读请求对应的小写数据,并将获取到的与读请求对应的小写数据写入内存的数据区中,若该元数据为大写数据对应的元数据,则将该元数据写入元数据区中大写LRU链表的首端,且根据从SCM阵列中读出的元数据中获取与读请求对应的大写数据在SSD阵列中的存储位置,然后,根据存储位置从SSD阵列中获取与读请求对应的大写数据,并将获取到的与读请求对应的大写数据写入内存的数据区中。
本申请实施例提供的一种数据写入方法,在将获取到的数据写入内存的数据区中之后,还可以包括:
判断数据区的空间使用率是否大于预设值,若是,则执行将小写LRU链表中位于末端的元数据对应的小写数据、小写链表中位于末端的元数据、大写链表中位于末端的元数据写入SCM阵列,并将大写LRU链表中位于末端的元数据对应的大写数据写入SSD阵列中的步骤,直至数据区的空间使用率不大于预设值为止。
在本申请中,在将获取到的数据写入内存的数据区中之后,可以判断内存中的数据区的空间使用率是否大于预设值,若不大于预设值,则停止将数据写入对应的阵列中,若大于预设值,则执行将与小写LRU链表中位于末端的元数据对应的小写数据、小写LRU链表中位于末端的元数据、大写LRU链表中位于末端的元数据写入SCM阵列,并将与大写LRU链表中位于末端的元数据对应的大写数据写入SSD阵列中的步骤,直至数据区的空间使用率不大于预设值为止。
本申请实施例还提供了一种数据写入装置,参见图3,其示出了本申请实施例提供的一种数据写入装置的结构示意图,可以包括:
接收模块31,用于接收写数据,判断写数据的长度是否大于预设长度;
第一确定模块32,用于若写数据的长度不大于预设长度,则确定写数据为小写数据,并根据小写数据生成对应的元数据;
第二确定模块33,用于若写数据的长度大于预设长度,则确定写数据为大写数据,并根据大写数据生成对应的元数据;
第一写入模块34,用于将小写数据、小写数据对应的元数据、大写数据对应的元数据写入SCM阵列中,并将大写数据写入SSD阵列中。
本申请实施例提供的一种数据写入装置,还可以包括:
第二写入模块,用于在将小写数据、小写数据对应的元数据、大写数据对应的元数据写入SCM阵列中,并将大写数据写入SSD阵列中之前,将小写数据对应的元数据写入小写链表,将大写数据对应的元数据写入大写链表;其中,小写链表及大写链表均位于内存中预先划分出的元数据区中;
第三写入模块,用于将小写数据及大写数据写入内存中预先划分出的数据区;
相应地,第一写入模块34可以包括:
第一写入单元,用于当数据区的空间使用率大于预设值时,将小写链表中的元数据对应的小写数据、小写链表中的元数据、大写链表中的元数据写入SCM阵列,并将大写链表中的元数据对应的大写数据写入SSD阵列中。
本申请实施例提供的一种数据写入装置,小写链表为小写LRU链表,大写链表为大写LRU链表;
相应地,第二写入模块可以包括:
第二写入单元,用于将小写数据对应的元数据写入小写LRU链表的首端,并将大写数据对应的元数据写入大写LRU链表的首端;
相应地,第一写入单元可以包括:
写入子单元,用于将与小写LRU链表中位于末端的元数据对应的小写数据、小写LRU链表中位于末端的元数据、大写LRU链表中位于末端的元数据写入SCM阵列,并将与大写LRU链表中位于末端的元数据对应的大写数据写入SSD阵列中,直至数据区的空间使用率不大于预设值为止。
本申请实施例提供的一种数据写入装置,还可以包括:
第一判断模块,用于当接收到读请求时,判断元数据区中是否存储有与读请求对应的元数据;
第四写入模块,用于若元数据区中存储有与元数据,则从元数据区中获取所述元数据,将元数据写入对应的链表的首端,并判断内存的数据区中是否存储有与读请求对应的数据,若存储有与读请求对应的数据,则从内存的数据区中读取与读请求对应的数据,若未存储有与读请求对应的数据,则根据元数据从对应的阵列中获取与元数据对应的数据,且将获取到的数据写入内存的数据区中;
第五写入模块,用于若元数据区中未存储有元数据,则从SCM阵列中获取元数据,将元数据写入对应的链表的首端,并根据元数据从对应的阵列中获取与元数据对应的数据,且将获取到的数据写入内存的数据区中。
本申请实施例提供的一种数据写入装置,还可以包括:
第二判断模块,用于在将获取到的数据写入内存的数据区中之后,判断数据区的空间使用率是否大于预设值,若是,则执行将小写LRU链表中位于末端的元数据对应的小写数据、小写链表中位于末端的元数据、大写链表中位于末端的元数据写入SCM阵列,并将大写LRU链表中位于末端的元数据对应的大写数据写入SSD阵列中的步骤,直至数据区的空间使用率不大于预设值为止。
本申请实施例还提供了一种数据写入设备,参见图4,其示出了本申请实施例提供的一种数据写入设备的结构示意图,可以包括:
存储器41,用于存储计算机程序;
处理器42,用于执行存储器41存储的计算机程序时可实现如下步骤:
接收写数据,判断写数据的长度是否大于预设长度;若否,则确定写数据为小写数据,并根据小写数据生成对应的元数据;若是,则确定写数据为大写数据,并根据大写数据生成对应的元数据;将小写数据、小写数据对应的元数据、大写数据对应的元数据写入SCM阵列中,并将大写数据写入SSD阵列中。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时可实现如下步骤:
接收写数据,判断写数据的长度是否大于预设长度;若否,则确定写数据为小写数据,并根据小写数据生成对应的元数据;若是,则确定写数据为大写数据,并根据大写数据生成对应的元数据;将小写数据、小写数据对应的元数据、大写数据对应的元数据写入SCM阵列中,并将大写数据写入SSD阵列中。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例提供的一种数据写入装置、设备及计算机可读存储介质中相关部分的说明可以参见本申请实施例提供的一种数据写入方法中对应部分的详细说明,在此不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。另外,本申请实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (8)

1.一种数据写入方法,其特征在于,包括:
接收写数据,判断所述写数据的长度是否大于预设长度;
若否,则确定所述写数据为小写数据,并根据所述小写数据生成对应的元数据;
若是,则确定所述写数据为大写数据,并根据所述大写数据生成对应的元数据;
将所述小写数据、所述小写数据对应的元数据、所述大写数据对应的元数据写入SCM阵列中,并将所述大写数据写入SSD阵列中;
其中,在将所述小写数据、所述小写数据对应的元数据、所述大写数据对应的元数据写入SCM阵列中,并将所述大写数据写入SSD阵列中之前,还包括:将所述小写数据对应的元数据写入小写链表,将所述大写数据对应的元数据写入大写链表;其中,所述小写链表及所述大写链表均位于内存中预先划分出的元数据区中;
将所述小写数据及所述大写数据写入所述内存中预先划分出的数据区;
相应地,将所述小写数据、所述小写数据对应的元数据、所述大写数据对应的元数据写入SCM阵列中,并将所述大写数据写入SSD阵列中,包括:
当所述数据区的空间使用率大于预设值时,将所述小写链表中的元数据对应的小写数据、所述小写链表中的元数据、所述大写链表中的元数据写入所述SCM阵列,并将所述大写链表中的元数据对应的大写数据写入所述SSD阵列中。
2.根据权利要求1所述的数据写入方法,其特征在于,所述小写链表为小写LRU链表,所述大写链表为大写LRU链表;
相应地,将所述小写数据对应的元数据写入小写链表,将所述大写数据对应的元数据写入大写链表,包括:
将所述小写数据对应的元数据写入所述小写LRU链表的首端,并将所述大写数据对应的元数据写入所述大写LRU链表的首端;
将所述小写链表中的元数据对应的小写数据、所述小写链表中的元数据、所述大写链表中的元数据写入所述SCM阵列,并将所述大写链表中的元数据对应的大写数据写入所述SSD阵列中,包括:
将与所述小写LRU链表中位于末端的元数据对应的小写数据、所述小写LRU链表中位于末端的元数据、所述大写LRU链表中位于末端的元数据写入所述SCM阵列,并将与所述大写LRU链表中位于末端的元数据对应的大写数据写入所述SSD阵列中,直至所述数据区的空间使用率不大于所述预设值为止。
3.根据权利要求2所述的数据写入方法,其特征在于,还包括:
当接收到读请求时,判断所述元数据区中是否存储有与所述读请求对应的元数据;
若所述元数据区存储有所述元数据,则从所述元数据区中获取所述元数据,将所述元数据写入对应的链表的首端,并判断所述内存的数据区中是否存储有与所述读请求对应的数据,若存储有与所述读请求对应的数据,则从所述内存的数据区中读取与所述读请求对应的数据,若未存储有与所述读请求对应的数据,则根据所述元数据从对应的阵列中获取与所述元数据对应的数据,且将获取到的数据写入所述内存的数据区中;
若所述元数据区未存储有所述元数据,则从所述SCM阵列中获取所述元数据,将所述元数据写入对应的链表的首端,并根据所述元数据从对应的阵列中获取与所述元数据对应的数据,且将获取到的数据写入所述内存的数据区中。
4.根据权利要求3所述的数据写入方法,其特征在于,在将获取到的数据写入所述内存的数据区中之后,还包括:
判断所述数据区的空间使用率是否大于所述预设值,若是,则执行所述将所述小写LRU链表中位于末端的元数据对应的小写数据、所述小写链表中位于末端的元数据、所述大写链表中位于末端的元数据写入所述SCM阵列,并将所述大写LRU链表中位于末端的元数据对应的大写数据写入所述SSD阵列中的步骤,直至所述数据区的空间使用率不大于所述预设值为止。
5.一种数据写入装置,其特征在于,包括:
接收模块,用于接收写数据,判断所述写数据的长度是否大于预设长度;
第一确定模块,用于若所述写数据的长度不大于所述预设长度,则确定所述写数据为小写数据,并根据所述小写数据生成对应的元数据;
第二确定模块,用于若所述写数据的长度大于所述预设长度,则确定所述写数据为大写数据,并根据所述大写数据生成对应的元数据;
第一写入模块,用于将所述小写数据、所述小写数据对应的元数据、所述大写数据对应的元数据写入SCM阵列中,并将所述大写数据写入SSD阵列中;
第二写入模块,用于在将所述小写数据、所述小写数据对应的元数据、所述大写数据对应的元数据写入SCM阵列中,并将所述大写数据写入SSD阵列中之前,将所述小写数据对应的元数据写入小写链表,将所述大写数据对应的元数据写入大写链表;其中,所述小写链表及所述大写链表均位于内存中预先划分出的元数据区中;
第三写入模块,用于将所述小写数据及所述大写数据写入所述内存中预先划分出的数据区;
相应地,所述第一写入模块包括:
第一写入单元,用于当所述数据区的空间使用率大于预设值时,将所述小写链表中的元数据对应的小写数据、所述小写链表中的元数据、所述大写链表中的元数据写入所述SCM阵列,并将所述大写链表中的元数据对应的大写数据写入所述SSD阵列中。
6.根据权利要求5所述的数据写入装置,其特征在于,所述小写链表为小写LRU链表,所述大写链表为大写LRU链表;
相应地,所述第二写入模块包括:
第二写入单元,用于将所述小写数据对应的元数据写入所述小写LRU链表的首端,并将所述大写数据对应的元数据写入所述大写LRU链表的首端;
相应地,所述第一写入单元包括:
写入子单元,用于将与所述小写LRU链表中位于末端的元数据对应的小写数据、所述小写LRU链表中位于末端的元数据、所述大写LRU链表中位于末端的元数据写入所述SCM阵列,并将与所述大写LRU链表中位于末端的元数据对应的大写数据写入所述SSD阵列中,直至所述数据区的空间使用率不大于所述预设值为止。
7.一种数据写入设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至4任一项所述的数据写入方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述的数据写入方法的步骤。
CN202010887373.0A 2020-08-28 2020-08-28 一种数据写入方法、装置、设备及计算机可读存储介质 Active CN112035065B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010887373.0A CN112035065B (zh) 2020-08-28 2020-08-28 一种数据写入方法、装置、设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010887373.0A CN112035065B (zh) 2020-08-28 2020-08-28 一种数据写入方法、装置、设备及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN112035065A CN112035065A (zh) 2020-12-04
CN112035065B true CN112035065B (zh) 2022-06-07

Family

ID=73586821

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010887373.0A Active CN112035065B (zh) 2020-08-28 2020-08-28 一种数据写入方法、装置、设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN112035065B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4307129A4 (en) * 2021-04-08 2024-07-31 Huawei Tech Co Ltd METHOD OF WRITING DATA TO A SOLID STATE HARD DISK
CN117891409B (zh) * 2024-03-13 2024-08-06 济南浪潮数据技术有限公司 分布式存储系统数据管理方法、装置、设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2510446B1 (en) * 2009-12-07 2014-08-27 Microsoft Corporation Extending ssd lifetime using hybrid storage
WO2016041401A1 (zh) * 2014-09-16 2016-03-24 华为技术有限公司 向缓存中写入数据的方法及装置
CN107193758A (zh) * 2017-05-19 2017-09-22 记忆科技(深圳)有限公司 一种固态硬盘的映射表管理方法及固态硬盘
CN107220001A (zh) * 2017-05-18 2017-09-29 记忆科技(深圳)有限公司 一种固态硬盘缓存实现方法及固态硬盘
CN107967124A (zh) * 2017-12-14 2018-04-27 南京云创大数据科技股份有限公司 一种分布式持久性内存存储系统及方法
CN110837338A (zh) * 2018-08-15 2020-02-25 阿里巴巴集团控股有限公司 一种存储索引处理方法及装置
CN110968269A (zh) * 2019-11-18 2020-04-07 华中科技大学 基于scm与ssd的键值存储系统及读写请求处理方法
CN111309687A (zh) * 2020-01-21 2020-06-19 苏州浪潮智能科技有限公司 一种对象存储小文件处理方法、装置、设备及存储介质
CN111309245A (zh) * 2018-12-12 2020-06-19 阿里巴巴集团控股有限公司 一种分层存储写入方法和装置、读取方法和装置及系统

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2510446B1 (en) * 2009-12-07 2014-08-27 Microsoft Corporation Extending ssd lifetime using hybrid storage
WO2016041401A1 (zh) * 2014-09-16 2016-03-24 华为技术有限公司 向缓存中写入数据的方法及装置
CN107220001A (zh) * 2017-05-18 2017-09-29 记忆科技(深圳)有限公司 一种固态硬盘缓存实现方法及固态硬盘
CN107193758A (zh) * 2017-05-19 2017-09-22 记忆科技(深圳)有限公司 一种固态硬盘的映射表管理方法及固态硬盘
CN107967124A (zh) * 2017-12-14 2018-04-27 南京云创大数据科技股份有限公司 一种分布式持久性内存存储系统及方法
CN110837338A (zh) * 2018-08-15 2020-02-25 阿里巴巴集团控股有限公司 一种存储索引处理方法及装置
CN111309245A (zh) * 2018-12-12 2020-06-19 阿里巴巴集团控股有限公司 一种分层存储写入方法和装置、读取方法和装置及系统
CN110968269A (zh) * 2019-11-18 2020-04-07 华中科技大学 基于scm与ssd的键值存储系统及读写请求处理方法
CN111309687A (zh) * 2020-01-21 2020-06-19 苏州浪潮智能科技有限公司 一种对象存储小文件处理方法、装置、设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Mingwei Lin.Efficient Sequential Data Migration Scheme Considering Dying Data for HDD/SSD Hybrid Storage Systems.《IEEE Access》.2017,第5卷全文. *
詹玲等.SHCA:基于RAID的两级缓存算法设计与实现.《小型微型计算机系统》.2017,第38卷(第05期),242-247. *

Also Published As

Publication number Publication date
CN112035065A (zh) 2020-12-04

Similar Documents

Publication Publication Date Title
US8386698B2 (en) Data accessing method for flash memory and storage system and controller using the same
CN105718530B (zh) 文件存储系统及其文件存储控制方法
US11354236B2 (en) Garbage collection method for data storage device
CN110895514A (zh) 映射表更新方法
US10740251B2 (en) Hybrid drive translation layer
KR101297442B1 (ko) 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템
CN110674056B (zh) 一种垃圾回收方法及装置
US11204864B2 (en) Data storage devices and data processing methods for improving the accessing performance of the data storage devices
WO2023116346A1 (zh) 异常掉电下Trim数据的恢复方法、系统及固态硬盘
US11334480B2 (en) Data storage device and non-volatile memory control method
CN112035065B (zh) 一种数据写入方法、装置、设备及计算机可读存储介质
US20100318726A1 (en) Memory system and memory system managing method
CN108073359B (zh) 数据储存装置的操作方法
CN110309081B (zh) 基于压缩存储和地址映射表项的ftl读写数据页的方法
CN110321081B (zh) 一种闪存读缓存的方法及其系统
EP2264602A1 (en) Memory device for managing the recovery of a non volatile memory
KR101077901B1 (ko) 로그 블록 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법
US11218164B2 (en) Data storage device and non-volatile memory control method
CN105138277A (zh) 一种固态盘阵列的缓存管理方法
CN114327240A (zh) 计算机可读存储介质、闪存存储器的数据存储方法及装置
KR20160022007A (ko) 컴퓨터 장치 및 저장 장치
US10564886B2 (en) Methods and apparatus for controlling flash translation layer recycle from host
JP4334331B2 (ja) フラッシュメモリのアクセス制御方法
US11941246B2 (en) Memory system, data processing system including the same, and operating method thereof
US11455246B2 (en) Garbage collection method for data storage device

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