读写分离的固态存储设备的数据分布方法技术

技术编号:29995548 阅读:27 留言:0更新日期:2021-09-11 04:36
本发明专利技术提供了读写分离的固态存储设备的数据分布方法。所提供的数据写入方法包括:将数据写入缓冲区,向写请求发出方应答写入成功;将缓存区中的数据聚合成指定大小的数据集;以及将数据集顺序写入活动存储对象,其中为写数据分配空存储对象后,所分配的空存储对象成为活动存储对象,存储对象包括多个条带;其中,由第一线程组的线程执行所述将缓存区中的数据聚合成指定大小的数据集,以及将数据集顺序写入存储对象的操作。顺序写入存储对象的操作。顺序写入存储对象的操作。

【技术实现步骤摘要】
读写分离的固态存储设备的数据分布方法


[0001]本专利技术涉及存储系统领域,尤其涉及读写分离的固态存储设备的数据分布方法。

技术介绍

[0002]数据写入模式包括覆盖写模式和追加写模式,如图1所示,覆盖写模式(图1左侧)是对数据进行更新操作时,更新内容“B”写入已经被写入“A”的存储块中。追加写模式(图1右侧)是对已经写入的数据“A”进行更新操作时,为更新数据“B”重新分配存储块,更新内容写入新分配的存储块中。
[0003]Flash闪存介质在写入数据的过程中,允许编程值从“1”到“0”,而不允许从“0”到“1”,因此,如果想实现闪存介质编程值返回到“1”,需要首先进行擦除操作。在Flash闪存介质的擦除过程中,属于被擦除范围的数据无法访问。此外,Flash闪存介质的擦除/写入周期数是有限的,频繁的擦除

写入过程会加速闪存介质的磨损。
[0004]以常见的Nand闪存颗粒为例,Nand闪存颗粒由Page(页)组成,Page(页)是Nand闪存颗粒读写的最小单元。多个连续Page(页)构成一个Block(块),Block(块)是擦除的最小单元。当Nand闪存颗粒被写入一个Page(页)时,先进行Page(页)所在Block(块)的擦除操作,擦除成功后,再进行Page(页)的写入操作。擦除过程中,整个Block(块)将阻塞所有对Block(块)内部Page(页)的访问请求。Nand闪存颗粒的读操作最快,在20us左右;写操作慢于读操作,在200us左右;擦除操作最慢,在1ms左右的数量级。基于NAND闪存颗粒的存储设备通常会为使用者提供修剪(TRIM)命令,用于告知闪存设备某些数据块的数据已经无效,可以回收数据块。存储设备会在后台背景下对无效数据块集中进行擦除,然后再投入使用。
[0005]由此可知,对于采用NAND闪存介质的固态硬盘(SSD):
[0006]一次写大数据块比多次写小数据块的性能要好,因为一次写大块的写前擦除次数最少。追加写比覆盖写的性能要好,追加写产生的写前擦除次数最少。但是追加写的过程中,会产生无效数据,占用SSD使用空间。沿着SSD设备的逻辑寻址空间顺序追加写SSD比随机式追加写SSD,在空间利用率上要好,因为顺序式追加写的无效数据块更集中,有利于回收更加“聚合”的大数据块。顺序式追加写大块数据是对SSD最友好的写入模式。
[0007]在顺序追加写SSD的过程中,会产生许多无效数据。可以将已经确认的无效数据块集中进行修剪(TRIM)操作,由存储设备进行后台回收擦除。这样,一方面保证SSD有足够的空闲数据块循环使用;另一方面,在循环使用一个数据块时,数据块就已经是全1的状态,尽可能的避免写时同步擦除,最终可以提高性能。
[0008]Ext系列是经典的Linux磁盘块设备文件系统,也是当前最主流的Linux块设备文件系统。磁盘设备利用磁头的机械移动进行寻址,当磁头寻访到对应的磁道以后,停止移动,此后利用盘片的高速转动进行数据读写传输。因此,在读写过程中,磁头的寻址占用了大比重的时间。磁盘设备的顺序寻址访问性能较高,随机访问性能极差,这也是由于随机访问产生了大量磁头物理寻址造成的。磁盘设备的写入过程没有写前擦除的限制,因此可以进行反复的覆盖写。因此,Ext系统采用了按数据类型分布的方案,元数据集中存放在元数
据区域,数据集中存放在数据区域。元数据的访问集中在元数据区域小范围内寻址,数据访问集中在数据区域小范围内寻址。同时,Ext系列文件系统采用覆盖写的方式实现对文件的写访问,尽可能的减少寻址浪费。

技术实现思路

[0009]现有的Linux块设备文件系统,在数据分布上采用按数据类型分布的方案。元数据存放在元数据区域,数据存放在数据区域,尽可能的避免一次访问内的大范围寻址。因此,这种方案需要覆盖写的支持。
[0010]SSD是不同于磁盘的存储介质:SSD设备的随机访问性能高,不存在寻址的问题;SSD需要写前擦除,不利于小写(单次写的数据量较小),不利于覆盖写。
[0011]采用覆盖写进行SSD访问,将会放大SSD写前擦除的负面影响。在并发写应用场景中,会产生一个擦除块内的写写冲突,原本没有数据相关性的写写操作,会因为物理位置的相邻性,导致可以并发执行的操作被写前擦除串行化,最终影响并发写性能。在大量随机小写的场景中,每一次小写都会产生一次写前擦除,放大了SSD写前擦除的负面影响。在并发读写的过程中,一个擦除块内的读写会产生碰撞,如果读请求先于写请求到达,则读请求阻塞写请求,如果写请求先于读请求达到,则写请求的擦除操作会阻塞读请求。这样,原本没有数据相关性的读写操作,会因为物理位置的相邻性,导致可以并发执行的操作串行化,最终影响读写性能。
[0012]因此,现有的Linux块设备文件系统没有有效解决SSD设备写前擦除的问题,也没有充分利用SSD随机读高性能的优势。
[0013]根据本专利技术的一个方面,提供了一种数据写入方法,所述方法包括:将数据写入缓冲区,向写请求发出方应答写入成功;将缓冲区中的数据聚合成指定大小的数据集;以及将数据集顺序写入活动存储对象。
[0014]根据本专利技术的一个实施方式,进一步包括:接收写请求。
[0015]根据本专利技术的一个实施方式,其中,由第一线程组执行所述将缓冲区中的数据聚合成指定大小的数据集缓冲区,以及将数据集顺序写入存储对象的操作。
[0016]根据本专利技术的一个实施方式,其中,所述第一线程组包括多个线程,每个线程绑定一个独立的CPU核,使得每个线程执行所述操作时不会被其他线程抢占其CPU资源。
[0017]根据本专利技术的一个实施方式,其中,任一时刻有且仅有一个活动存储对象。
[0018]根据本专利技术的一个实施方式,其中,活动存储对象被写满后,将活动存储对象设为只读的存储对象。
[0019]根据本专利技术的一个实施方式,还包括,活动存储对象被写满后,创建新的活动存储对象。
[0020]根据本专利技术的一个实施方式,其中,第一线程组中包括第一线程与第二线程,第一线程获得活动存储对象使用权后,向活动存储对象写入数据,释放活动存储对象使用权;第二线程获得活动存储对象使用权后,向活动存储对象写入数据,释放活动存储对象使用权。
[0021]根据本专利技术的一个实施方式,其中,存储系统中存在多个活动存储对象;第一线程组中包括第一线程与第二线程,第一线程将数据集写入一个或多个第一活动存储对象,第二线程将数据集写入一个或多个第二活动存储对象。
[0022]根据本专利技术的一个实施方式,其中,所述一个或多个第一活动存储对象仅由第一线程写入数据,所述一个或多个第二活动存储对象仅由第二线程写入数据。
[0023]根据本专利技术的一个实施方式,其中,写请求同逻辑设备相关联,将访问相同逻辑设备的多个写请求写入同一个的活动存储对象,使得访问不同的逻辑设备的两个写请求不会被写入相同的活动存储对象。
[0024]根据本专利技术的一个实施方式,其中,第一线程组中包括第本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据写入方法,所述方法包括:将数据写入缓冲区,向写请求发出方应答写入成功;将缓存区中的数据聚合成指定大小的数据集;以及将数据集顺序写入活动存储对象,其中为写数据分配空存储对象后,所分配的空存储对象成为活动存储对象,存储对象包括多个条带;其中,由第一线程组的线程执行所述将缓存区中的数据聚合成指定大小的数据集,以及将数据集顺序写入存储对象的操作。2.根据权利要求1所述的方法,其中,第一线程组中包括第一线程与第二线程,第一线程获得活动存储对象使用权后,向活动存储对象写入数据,释放活动存储对象使用权;第二线程获得活动存储对象使用权后,向活动存储对象写入数据,释放活动存储对象使用权。3.根据权利要求1所述的方法,其中,存储系统中存在多个活动存储对象;第一线程组中包括第一线程与第二线程,第一线程将数据集写入一个或多个第一活动存储对象,第二线程将数据集写入一个或多个第二活动存储对象。4.根据权利要求3所述的方法,其中,所述一个或多个第一活动存储对象仅由第一线程写入数据,所述一个或多个第二活动存储对象仅由第二线程写入数据。5.根据权利要求1

4之一所述的方法,其中,写请求同逻辑设备相关联,将访问相同逻辑设备的多个写请求写入同一个的活动存储对象。6.根据权利要求5所述的方法,其中访问不同的逻辑设备的两个写请求不会被写入相同的活动存储对象。7.根据权利要求1所述的方法,其中,第一线程组中包括第一线...

【专利技术属性】
技术研发人员:王利虎王田欧阳涛吴忠杰
申请(专利权)人:北京忆恒创源科技有限公司
类型:发明
国别省市:

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

1