一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于ZNS固态硬盘的全闪存系统和地址映射方法与流程

2022-05-31 17:46:48 来源:中国专利 TAG:

一种基于zns固态硬盘的全闪存系统和地址映射方法
技术领域
1.本发明涉及zns固态硬盘领域,特别涉及一种基于zns固态硬盘的全闪存系统和地址映射方法。


背景技术:

2.大数据时代,传统机械硬盘由于机械结构的问题,性能已无法满足企业级存储需求,而以半导体闪存芯片为存储介质的固态硬盘给存储系统带来了革命性的进步,成为传统磁盘的替代品。而随着企业级存储系统本身对数据容量和吞吐率的要求越来越高,单个固态硬盘也日益无法满足当前企业级存储系统的需求,全闪存存储技术特别是基于磁盘阵列技术发展而来的全闪存阵列技术,以一个或多个固态硬盘,提供大容量、高性能、高并发、高可靠性的高性能全闪存存储系统。以全闪存阵列为例,采用的raid技术基于机械硬盘,并没有考虑固态硬盘的特性,raid条带随机写后造成的垃圾回收问题,会引入额外的写放大,同时ssd内部由于异位更新,也会引起写放大,无法完全发挥全闪存系统的性能优势。另外,传统块设备接口以逻辑块或者扇区为单位读写,企业级ssd内部ftl映射一般基于闪存页为单位,这种访问粒度上的差异也会造成性能损失甚至加重固态硬盘磨损,而上层存储应用逻辑有自己的分配、回收算法和读写单位,同样会造成性能损失。
3.传统固态硬盘屏蔽了闪存的访问特性,因此,基于开放闪存操作接口的zns固态硬盘被认为是未来发展趋势。在软件定义存储系统中,如何发挥出zns固态硬盘的特性,结合应用场景,设计一种新的映射算法,优化整体存储系统性能,是大数据时代全闪存系统要解决的技术问题。


技术实现要素:

4.有鉴于此,本发明实施例的目的在于提供一种基于zns固态硬盘的全闪存系统和地址映射方法,具体包括:第一方面,本发明实施例提供了一种基于zns固态硬盘的全闪存系统,所述全闪存系统包括:至少一个zns固态硬盘,所述至少一个zns固态硬盘的物理存储空间包括映射区和数据区;其中,所述映射区用于存储对象ftl映射表;所述对象ftl映射表包括目标对象的对象id字段、物理地址字段、大小字段,用于建立目标对象到对应物理地址之间的映射关系;所述目标对象包括任一构建在所述全闪存系统之上的存储系统操作单元,并通过所述对象ftl映射表实现分配、释放、管理或读写操作;所述数据区被虚拟化为连续的存储地址空间并用于存储数据;所述全闪存系统还包括前端接口模块,用于接收来自应用程序的命令,并与应用程序之间进行数据交换;以及对象ftl映射层,用于将所述命令对应的目标对象映射至所述目标对象对应的对象ftl映射表。
5.可选地,所述将所述命令对应的目标对象映射至所述目标对象对应的对象ftl映射表,具体包括:当所述全闪存系统运行时,将所有对象ftl映射表进行缓存;根据所述目标对象对应的对象id字段进行hash运算的结果,得到所述目标对象对应的对象ftl映射表在缓存中的索引地址;根据所述索引地址定位到目标对象对应的对象ftl映射表。
6.可选地,所述数据区中目标对象对应的存储数据被存储在多个内部连续的物理分区,所述物理分区内的存储数据是根据目标对象请求的写入顺序依次存放的;所述多个内部连续的物理分区的最后一部分分区空间用于存储对应的元数据,所述元数据包含了每个内部连续的物理分区的属性。
7.可选地,所述对象id字段由构建在所述全闪存系统之上的存储系统统一分配。
8.可选地,所述对象id字段由所述全闪存系统根据数据摘要生成。
9.可选地,所述对象id为逻辑地址lba。
10.可选地,所述数据区被虚拟化为连续的存储地址空间,具体包括:根据raid0、raid1或raid5算法将所述至少一个zns固态硬盘的数据区虚拟化为连续的存储地址空间。
11.第二方面,本发明实施例提供了一种基于zns固态硬盘的地址映射方法,应用于第一方面所述的全闪存系统,所述方法包括:由前端接口模块接收来自应用程序的命令;若所述命令为来自应用程序的读请求,在缓存中查询所述目标对象对应的对象ftl映射表;通过所述目标对象对应的对象ftl映射表获取对应的物理地址;向所述全闪存系统中的zns固态硬盘数据区发起读请求,并将读取到的数据由前端接口模块返回应用程序。
12.第三方面,本发明实施例提供了一种基于zns固态硬盘的地址映射方法,应用于第一方面所述的全闪存系统,所述方法包括:由前端接口模块接收来自应用程序的命令;若所述命令为来自应用程序的写请求,接收待写入数据到缓存;在全闪存系统中的zns固态硬盘数据区中,为缓存中的所述待写入数据分配物理地址;更新缓存中的对象ftl映射表,使其指向分配的物理地址。
13.可选地,所述方法还包括:定期将缓存中的对象ftl映射表写入全闪存系统中的zns固态硬盘映射区中。
14.本发明实施例提供的基于zns固态硬盘的全闪存系统和地址映射方法,利用zns固态硬盘开放闪存操作的特点,面向软件定义的全闪存系统,消除了ftl对闪存操作方式的屏蔽,同时保留固态硬盘对闪存介质的管理功能,使得上层存储层不用处理闪存的失效管理,同时又开放闪存基本操作供上层存储系统结合应用场景优化。针对异构复杂的多应用场景,设计一种基于对象ftl的地址映射算法,将文件系统分配单元、数据库操作单元、块设备操作单元等所有构建在该全闪存系统之上的存储系统操作单元统一视为对象object,对象
的分配、释放、管理和读写等都通过object-ftl完成,通过这种统一的object-ftl,消除存储应用、全闪存系统和ssd内部的多重写放大,提供可自适应不同应用负载的对象存储功能。
附图说明
15.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳务的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本技术的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本技术的主旨。
16.图1示出了根据本发明实施例提供的全闪存系统的结构示意图。
17.图2示出了根据本发明实施例提供的对象ftl映射表布局示意图。
18.图3示出了根据本发明实施例提供的全闪存系统中对象ftl映射表的映射方法的流程示意图。
19.图4示出了根据本发明实施例提供的物理分区的数据布局示意图。
20.图5示出了根据本发明实施例提供的读请求过程中的地址映射方法流程示意图。
21.图6示出了根据本发明实施例提供的写请求过程中的地址映射方法流程示意图。
22.图7示出了根据本发明实施例提供的读写请求过程中的地址映射方法流程示意图。
具体实施方式
23.以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
24.在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。这里使用的词语“一”、“一个(种)”和“该”等也应包括“多个”、“多种”的意思,除非上下文另外明确指出。此外,在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
25.在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
26.大数据时代,传统机械硬盘由于机械结构的问题,性能已无法满足企业级存储需求,而以半导体闪存芯片为存储介质的固态硬盘给存储系统带来了革命性的进步,成为传统磁盘的替代品。而随着企业级存储系统本身对数据容量和吞吐率的要求越来越高,单个固态硬盘也日益无法满足当前企业级存储系统的需求,全闪存存储技术特别是基于磁盘阵列技术发展而来的全闪存阵列技术,以一个或多个固态硬盘,提供大容量、高性能、高并发、高可靠性的高性能全闪存存储系统。以全闪存阵列为例,采用的raid技术基于机械硬盘,并没有考虑固态硬盘的特性,raid条带随机写后造成的垃圾回收问题,会引入额外的写放大,
同时ssd内部由于异位更新,也会引起写放大,无法完全发挥全闪存系统的性能优势。另外,传统块设备接口以逻辑块或者扇区为单位读写,企业级ssd内部ftl映射一般基于闪存页为单位,这种访问粒度上的差异也会造成性能损失甚至加重固态硬盘磨损,而上层存储应用逻辑有自己的分配、回收算法和读写单位,同样会造成性能损失。
27.因此,基于开放闪存操作接口的zns固态硬盘被认为是未来发展趋势。在软件定义存储系统中,如何发挥出zns固态硬盘的特性,结合应用场景,设计一种新的映射算法,优化整体存储系统性能,是大数据时代全闪存系统要解决的技术问题。
28.有鉴于此,本公开实施例的目的在于提供一种基于zns固态硬盘的全闪存系统和地址映射方法,以下结合附图详细描述本发明实施例公开的内容。
29.图1示出了本发明实施例提供的全闪存系统的结构示意图,具体内容如下:所述全闪存系统包括:至少一个zns固态硬盘,所述至少一个zns固态硬盘的物理存储空间包括映射区和数据区;其中,所述映射区用于存储对象ftl映射表;所述对象ftl映射表包括目标对象的对象id字段、物理地址字段、大小字段,用于建立目标对象到对应物理地址之间的映射关系;所述目标对象包括任一构建在所述全闪存系统之上的存储系统操作单元,并通过所述对象ftl映射表实现分配、释放、管理或读写操作;所述数据区被虚拟化为连续的存储地址空间并用于存储数据;所述全闪存系统还包括前端接口模块,用于接收来自应用程序的命令,并与应用程序之间进行数据交换;以及对象ftl映射层,用于将所述命令对应的目标对象映射至所述目标对象对应的对象ftl映射表。
30.zns固态硬盘(zns ssd)即分区命名空间固态硬盘,zns 是从 oc(open channel,开放通道)ssd基础上发展而来的,实现了把ftl(flash translation layer,闪存转换层)从ssd内部迁移到上层的host端,把ssd内部开放给了host端,这样用户可以根据自己需要,比较灵活的拥有自己特定的ftl。
31.本发明实施例提供一种基于zns固态硬盘的全闪存系统,采用zns固态硬盘,消除ftl对闪存操作方式的屏蔽,同时保留固态硬盘对闪存介质的管理功能,使得上层存储层不用处理闪存的失效管理,同时又开放闪存基本操作供上层存储系统结合应用场景优化。
32.针对异构复杂的多应用场景,本发明实施例提供的基于zns固态硬盘的全闪存系统,采用了对象ftl映射的思想,将文件系统分配单元、数据库操作单元、块设备操作单元等所有构建在该全闪存系统之上的存储系统操作单元统一视为对象object,对象的分配、释放、管理和读写等都通过对象ftl实现地址映射,通过这种统一的对象ftl映射,消除存储应用、全闪存系统和ssd内部的多重写放大,提供可自适应不同应用负载的对象存储功能,有别于传统系统中块设备接口以逻辑块或者扇区为单位读写,企业级ssd内部ftl映射一般基于闪存页为单位,避免了访问粒度上的差异造成的性能损失甚至加重固态硬盘磨损,同时避免了上层存储应用程序逻辑有自己的分配、回收算法和读写单位所导致的性能损失。
33.具体而言,全闪存系统的地址映射过程是先通过前端接口模块接收来自应用程序的命令后,使用对象ftl映射层将所述命令对应的目标对象映射至所述目标对象对应的对象ftl映射表中。对象ftl映射表通过至少一个zns固态硬盘的物理存储空间的映射区进行
存储和管理,并在全闪存系统启动后加载到缓存中以便加快调用过程。
34.对象ftl映射过程以对象为基本管理单位,每个对象包含一个唯一标识,即对象id,该对象id可由构建在该全闪存系统之上的存储系统统一分配,也可以由全闪存系统内部其他模块根据数据摘要生成,在一种特定应用环境下,对象id也可以是逻辑地址lba,对象ftl以对象为基本映射单位,每个对象对应一个对象ftl映射表,由hash算法得到对象对应的对象ftl映射表地址,该对象ftl映射表包含对象所在zns固态硬盘的存储地址,对象本身支持可变大小,能适配不同应用负载,并且方便结合硬件加速之后数据的存取。
35.在本发明实施例提供的全闪存系统内,将存储应用的访问操作转换为zns ssd的访问操作,物理存储设备基于一个或多个zns ssd,当存在多个zns ssd时,组织成zns ssd阵列的方式,可支持raid0/raid1/raid5等算法设计数据布局,将物理存储空间虚拟化成一个连续的存储空间,该连续存储空间又分为映射区和数据区,映射区用来存储对象ftl映射表,加速系统上电重建,数据区用于存储实际应用数据。
36.附图2示出了对象ftl映射表布局示意图,本发明实施例中的对象ftl映射表采用全局缓存映射表的方式,运行时将全部对象ftl映射表缓存起来,每个映射表项大小固定,由对象id字段obj_id、物理地址字段zns_lba、对象大小字段size组成,目标对象对应的对象ftl映射表在附图2表项中的地址和目标对象的对应关系由hash索引算法可以通过hash函数算出。
37.通过该对应关系计算出对应的对象ftl映射表项后,可以进一步确定对象所在zns固态硬盘的存储地址,由于对象本身支持可变大小,能适配不同应用负载,并且方便结合硬件加速之后数据的存取,同时也避免了传统ssd内部和全闪存系统内部造成的多重写放大问题。
38.本发明实施例提供的基于zns固态硬盘的全闪存系统,针对多应用负载情况,能消除ssd内部、全闪存系统内部和应用本身造成的多重写放大问题,基于对象的映射方式可以适应不同负载混合的复杂场景,同时简化整个存储系统设计,适合于含有硬件加速装置的软件定义存储系统。
39.基于上述实施例,附图3示出了本发明实施例提供的全闪存系统中对象ftl映射表的映射方法,具体包括如下内容。
40.s110,当所述全闪存系统运行时,将所有对象ftl映射表进行缓存;s120,根据所述目标对象对应的对象id字段进行hash运算的结果,得到所述目标对象对应的对象ftl映射表在缓存中的索引地址;s130,根据所述索引地址定位到目标对象对应的对象ftl映射表。
41.本发明实施例通过对象ftl映射表的方式实现全闪存系统的地址映射。然而为了提高对象ftl映射表的访问效率,通常在全闪存系统运行时,首先需要将所有对象ftl映射表进行缓存,以供后续在访问对象ftl映射表时直接在缓存中进行访问。
42.接收来自应用程序的命令后,确定如文件系统分配单元、数据库操作单元、块设备操作单元等对象的分配、释放、管理和读写操作,即可以确定目标对象对应的对象id,在进行hash运算后即可得到所述目标对象对应的对象ftl映射表在缓存中的索引地址,进而在如附图2所示的对象ftl映射表中查找出目标对象对应的对象ftl映射表项。
43.具体地,查找目标对象对应的对象ftl映射表在缓存中的索引地址时,首先根据对
象id进行hash运算得到该object在缓存映射表中的索引地址,然后根据索引地址定位到缓存映射表项,获取该表项得到object数据在zns固态硬盘中的存储地址zns_lba。
44.本发明实施例中对象ftl映射表以对象为基本管理单位,每个对象包含一个唯一标识对象id,该对象id可由构建在该全闪存系统之上的存储系统统一分配,也可以由全闪存系统内部其他模块根据数据摘要生成,在一种特定应用环境下,对象id也可以是逻辑地址lba,object-ftl以对象为基本映射单位,每个对象对应一个映射表项,由hash算法得到object对应的映射表项地址,该映射表项包含对象所在zns固态硬盘的存储地址,对象本身支持可变大小,能适配不同应用负载,并且方便结合硬件加速之后数据的存取。
45.在上述任一实施例的基础上,附图4示出了本发明实施例提供的物理分区的数据布局示意图。
46.如附图4所示,整个连续的数据区物理地址空间根据zns固态硬盘的特性分为多个内部连续的物理分区,物理分区内数据根据请求的写入顺序依次存放,不同对象的数据可以经过相应的加速器处理后连续存放在zns固态硬盘中,在一个物理分区的最后,存储对应的元数据,该元数据包含了所属物理分区数据的属性,用来确定当前数据是否有效,供垃圾回收使用。示例性地,元数据中包含的所属物理分区数据的属性可设计为对象id集合的形式。物理分区中的数据被写入或更新时,同时元数据中包含的所属物理分区数据的对象id集合,也会相应的更新。此时元数据可以指示系统存储空间回收机制回收失效的存储数据占用的物理存储空间。
47.基于上述任一实施例,附图5-6示出了基于本发明实施例提供的全闪存系统,在典型的读写请求过程中的地址映射方法的流程示意图。
48.如附图5所示,在全闪存系统收到读请求时,本发明实施例提供的地址映射方法具体包括如下内容。
49.s210,由前端接口模块接收来自应用程序的命令;s220,若所述命令为来自应用程序的读请求,在缓存中查询所述目标对象对应的对象ftl映射表;s230,通过所述目标对象对应的对象ftl映射表获取对应的物理地址;s240,向所述全闪存系统中的zns固态硬盘数据区发起读请求,并将读取到的数据由前端接口模块返回应用程序。
50.如附图6所示,在全闪存系统收到写请求时,本发明实施例提供的地址映射方法具体包括如下内容。
51.s310,由前端接口模块接收来自应用程序的命令;s320,若所述命令为来自应用程序的写请求,接收待写入数据到缓存;s330,在全闪存系统中的zns固态硬盘数据区中,为缓存中的所述待写入数据分配物理地址;s340,更新缓存中的对象ftl映射表,使其指向分配的物理地址。
52.附图7还示出了基于本发明实施例提供的全闪存系统,在面对典型的来自应用程序的读写请求时的地址映射方法的流程示意图,以下将对本发明实施例提供的地址映射方法进行说明。
53.首先,接收来自应用程序的命令的操作是由全闪存系统中的前段接口模块实现
的。同时,前段接口模块还负责实现与应用程序之间进行数据交换。例如在处理读请求时,前段接口模块还负责将读取到的数据返回给应用程序。
54.在接收到来自应用程序的访问请求时,全闪存系统会判断该请求的类型。无论是读请求还是写请求,后续的地址映射方式都是基于对象ftl映射表进行地址映射。
55.若所述命令为来自应用程序的读请求,由于全闪存系统在运行时所有对象ftl映射表已经进行缓存操作,因此,可以在缓存中查询所述读请求相关的目标对象对应的对象ftl映射表。具体地,可以根据所述目标对象对应的对象id字段进行hash运算的结果,得到所述目标对象对应的对象ftl映射表在缓存中的索引地址,再根据所述索引地址定位到目标对象对应的对象ftl映射表,进而通过所述目标对象对应的对象ftl映射表获取对应的物理地址。最后,就可以通过向所述全闪存系统中的zns固态硬盘数据区发起读请求实现整个地址映射过程。
56.若所述命令为来自应用程序的写请求,前段接口模块可以首先接收待写入数据到缓存中。然后需要在全闪存系统中的zns固态硬盘数据区中为缓存中的所述待写入数据分配物理地址,根据该物理地址进行实际数据的写操作即可。在数据区中分配好写入的物理地址后,可以将该信息更新至对象ftl映射表,实现对象ftl映射表的实时维护。具体地,由于全闪存系统在运行时所有对象ftl映射表已经进行缓存操作,可以在缓存中更新缓存中的对象ftl映射表,使其指向分配的物理地址。
57.此外,由于全闪存系统不断地会对缓存中的对象ftl映射表进行了更新,因此,需要定期将缓存中的对象ftl映射表写入全闪存系统中的zns固态硬盘映射区中,以便加速全闪存系统的上电重建过程。
58.本发明实施例提供的地址映射方法,针对多应用负载情况,能消除ssd内部、全闪存系统内部和应用本身造成的多重写放大问题,基于对象的映射方式可以适应不同负载混合的复杂场景,同时简化整个存储系统设计,适合于含有硬件加速装置的软件定义存储系统。
59.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
60.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
61.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和
范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献