一种数据写入方法、装置、设备及计算机可读存储介质制造方法及图纸

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

【技术实现步骤摘要】
一种数据写入方法、装置、设备及计算机可读存储介质
本申请涉及数据存储
,更具体地说,涉及一种数据写入方法、装置、设备及计算机可读存储介质。
技术介绍
随着基于闪存的SSD(Solidstatedrive,固态盘)容量的扩展和成本的降低,具有高性能和低能耗的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阵列中,直至所述数据区的空间使用率不大于所述预设值为止。一种数据写入设备,包括:存储器本文档来自技高网...

【技术保护点】
1.一种数据写入方法,其特征在于,包括:/n接收写数据,判断所述写数据的长度是否大于预设长度;/n若否,则确定所述写数据为小写数据,并根据所述小写数据生成对应的元数据;/n若是,则确定所述写数据为大写数据,并根据所述大写数据生成对应的元数据;/n将所述小写数据、所述小写数据对应的元数据、所述大写数据对应的元数据写入SCM阵列中,并将所述大写数据写入SSD阵列中。/n

【技术特征摘要】
1.一种数据写入方法,其特征在于,包括:
接收写数据,判断所述写数据的长度是否大于预设长度;
若否,则确定所述写数据为小写数据,并根据所述小写数据生成对应的元数据;
若是,则确定所述写数据为大写数据,并根据所述大写数据生成对应的元数据;
将所述小写数据、所述小写数据对应的元数据、所述大写数据对应的元数据写入SCM阵列中,并将所述大写数据写入SSD阵列中。


2.根据权利要求1所述的数据写入方法,其特征在于,在将所述小写数据、所述小写数据对应的元数据、所述大写数据对应的元数据写入SCM阵列中,并将所述大写数据写入SSD阵列中之前,还包括:
将所述小写数据对应的元数据写入小写链表,将所述大写数据对应的元数据写入大写链表;其中,所述小写链表及所述大写链表均位于内存中预先划分出的元数据区中;
将所述小写数据及所述大写数据写入所述内存中预先划分出的数据区;
相应地,将所述小写数据、所述小写数据对应的元数据、所述大写数据对应的元数据写入SCM阵列中,并将所述大写数据写入SSD阵列中,包括:
当所述数据区的空间使用率大于预设值时,将所述小写链表中的元数据对应的小写数据、所述小写链表中的元数据、所述大写链表中的元数据写入所述SCM阵列,并将所述大写链表中的元数据对应的大写数据写入所述SSD阵列中。


3.根据权利要求2所述的数据写入方法,其特征在于,所述小写链表为小写LRU链表,所述大写链表为大写LRU链表;
相应地,将所述小写数据对应的元数据写入小写链表,将所述大写数据对应的元数据写入大写链表,包括:
将所述小写数据对应的元数据写入所述小写LRU链表的首端,并将所述大写数据对应的元数据写入所述大写LRU链表的首端;
将所述小写链表中的元数据对应的小写数据、所述小写链表中的元数据、所述大写链表中的元数据写入所述SCM阵列,并将所述大写链表中的元数据对应的大写数据写入所述SSD阵列中,包括:
将与所述小写LRU链表中位于末端的元数据对应的小写数据、所述小写LRU链表中位于末端的元数据、所述大写LRU链表中位于末端的元数据写入所述SCM阵列,并将与所述大写LRU链表中位于末端的元数据对应的大写数据写入所述SSD阵列中,直至所述数据区的空间使用率不大于所述预设值为止。


4.根据权利要求3所述的数据写入方法,其特征在于,还包括:
当接收到读请求时,判断所述元数据区中是否存储有与所述读请求对应的元数据;
若所述元数据区存储有所述元数据,则从所述元数据区中获取所述元数据,将所述元数据写入对应的链表的首端,并判断所述内存的数据区中是否存储有与所述读请求对应的数据,若存储有与所述读请求对应的数据,则从所述内存的数据区中读取与所述读请求对应的数据,若未存储有与所述读请求对应的数据,则根据所述元数据从对应的阵列中获取与所述元数据对应的数据,且将获取到的数据写入所述内存的数据区中;
若所述元数据区未存储有所述元数据,则从所述SCM阵列中获取所述元数据,将所述元数据写入对应的链表的首端,并根据所述元数据从对应的阵列中获取与所述元数据对应的数据,且将获取到的数据写入所述内存的数据区中。
<...

【专利技术属性】
技术研发人员:刘文国
申请(专利权)人:北京浪潮数据技术有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1