CN116009776A - 面向nvm和ssd的数据存储方法、控制器及系统 - Google Patents
面向nvm和ssd的数据存储方法、控制器及系统 Download PDFInfo
- Publication number
- CN116009776A CN116009776A CN202211648945.5A CN202211648945A CN116009776A CN 116009776 A CN116009776 A CN 116009776A CN 202211648945 A CN202211648945 A CN 202211648945A CN 116009776 A CN116009776 A CN 116009776A
- Authority
- CN
- China
- Prior art keywords
- nvm
- ssd
- request
- data
- thread
- 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
Links
Images
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种面向NVM和SSD的数据存储方法、控制器及系统,属于计算机系统结构领域,包括:静态地址映射:对外提供统一的线性逻辑地址空间,分为映射到NVM设备的区域NVM‑zone和映射到SSD设备的区域SSD‑zone;元数据和文件数据分别被映射到NVM‑zone和SSD‑zone;动态请求调度:从NVM设备中划分出一块空间作为NVM‑buffer,并且对于被映射到SSD‑zone的文件数据,若系统当前未处于小写密集型的负载场景,且请求为小写请求,则将该数据缓存到NVM‑buffer中,并记录该数据在SSD设备中的目标地址及缓存地址;否则,直接将该数据写入SSD设备中。本发明能够最大程度上发挥NVM和SSD设备的性能优势,有效提升混合存储系统整体的性能。
Description
技术领域
本发明属于计算机系统结构领域,更具体地,涉及面向NVM和SSD的数据存储方法、控制器及系统。
背景技术
非易失内存(non-volatile memory,NVM)被期望拥有接近内存的性能、支持字节寻址和磁盘一样持久化的能力,但是在第一款商用NVM,IntelOptaneDC PersistentMemory出现之后,测试发现其在持久化模式下,读写带宽与延迟不仅远低于内存,而且表现出显著的不对称性,其中读写带宽分别为6.6GB/s和2.3GB/s,读写延迟分别为1.2us和1.7us。当I/O大小超过128KiB时,NVM的写带宽甚至低于现有的SSD,大约为3.5GiB/s。除此之外,NVM的写并行度受限,在数据大于等于4KiB时,写线程数为4时达到吞吐峰值,之后随着线程数量的增加,吞吐将会显著下降。
近些年来,基于Nand闪存颗粒的固态硬盘(Solid State Drives,SSD),在容量与性能方面得到了巨大的提升,尤其是最近推出的采用NVMe协议的NVMe-SSD,可以达到十微秒级的延迟和GB级的带宽。当然,其也存在有限的擦除寿命、错位更新、垃圾回收和读写不对称的缺点。
现有的面向NVM和SSD的混合存储系统,一般基于NVM拥有较好的性能,但是容量较小且价格昂贵,而SSD性能较低,但是容量更大且价格较为便宜的考虑,通过对文件系统或者缓存系统进行重新设计,来同时使用NVM和SSD。例如Strata的设计是将所有的数据直接写到上层的NVM中,然后迁移冷数据到下层大容量的SSD中;Ziggurat在此基础上进一步优化,会有选择性的发送异步或者大写请求到下层的SSD中来优化性能;除此之外,FirstResponder将NVM作为cache添加到现有文件系统中,并在I/O栈顶吸收所有的文件系统请求。
以上面向NVM和SSD的混合存储系统,具有较好的性能,但是存在过度利用上层的NVM,反而忽略了下层SSD在大写吞吐和性价比上的优势的问题,无法同时发挥NVM和SSD各自的性能优势。
发明内容
针对现有技术的缺陷和改进需求,本发明提供了面向NVM和SSD的数据存储方法、控制器及系统,其目的在于,对混合存储系统的架构进行改进,最大程度上发挥NVM和SSD设备的性能优势,从而有效提升混合存储系统整体的性能。
为实现上述目的,按照本发明的一个方面,提供了一种面向NVM和SSD的数据存储方法,包括:静态地址映射和动态请求调度;
静态地址映射包括:对外提供统一的线性逻辑地址空间,线性逻辑地址空间分为映射到NVM设备的区域NVM-zone和映射到SSD设备的区域SSD-zone;元数据和文件数据分别被映射到区域NVM-zone和区域SSD-zone;
动态请求调度包括:从NVM设备中划分出一块空间作为NVM-buffer,并且对于被映射到区域SSD-zone的文件数据,执行如下操作:
若系统当前未处于小写密集型的负载场景,且请求为小写请求,则将该数据缓存到NVM-buffer中,并记录该数据在SSD设备中的目标地址及缓存地址;否则,直接将该数据写入SSD设备中;
其中,大写请求所请求写入的数据大于预设的阈值,而小写请求所写入的数据不超过阈值。
进一步地,被缓存在NVM-buffer中的数据,其在SSD设备中的目标地址与其在NVM-buffer中的缓存地址以键值对的形式记录,且目标地址和缓存地址分别为键值对的键和值。
进一步地,键值对通过哈希表索引。
进一步地,本发明提供的面向NVM和SSD的数据存储方法,还包括:创建由4个I/O线程组成的I/O线程池,并且为每个I/O线程创建一个请求队列;
并且,访问NVM设备的请求的执行包括:
用户线程将访问NVM设备的请求提交至对应的I/O线程的请求队列,由对应的I/O线程按顺序从请求队列中获取请求并进行处理,请求处理完成后,通知对应的用户线程。
进一步地,NVM-buffer包括与4个I/O线程一一对应的4个segment,并且,面向NVM和SSD的数据存储方法还包括:
当某个segment被写满时,或者某个I/O线程处于轻负载状态时,将对应segment中的数据迁移到SSD设备中。
进一步地,本发明提供的面向NVM和SSD的数据存储方法,还包括:在内存中为每个segment维护一份运行时元数据;
运行时元数据包括:segment所缓存的数据在SSD设备中的目标地址与其在NVM-buffer中的缓存地址,以及比特位图;比特位图用于记录segment中各数据块是否空闲的状态。
进一步地,本发明提供的面向NVM和SSD的数据存储方法,对于被映射到SSD设备的大写请求ReqL,其处理包括:
在用户线程,按照逻辑块大小将大写请求ReqL划分为子请求,并按照子请求的偏移对4求余,将求余结果作为对应I/O线程的编号;将各子请求提交到对应I/O线程的请求队列中,同时将大写请求ReqL提交到SSD设备中;
I/O线程轮询对应的请求队列,以获取子请求;对于大写请求ReqL的子请求,若其中的数据已被缓存在NVM-buffer中,则将该数据在SSD设备中的目标地址及缓存地址的记录信息删除,并释放该数据在NVM-buffer中所占用的空间;
当用户线程接收到所有子请求在I/O线程完成的通知,其提交到SSD设备的请求也返回后,大写请求ReqL的处理完成。
进一步地,本发明提供的面向NVM和SSD的数据存储方法,对于被映射到SSD设备的读请求Req,其处理包括:
在用户线程,按照逻辑块大小将读请求Req划分为子请求,并按照子请求的偏移对4求余,将求余结果作为对应I/O线程的编号;将各子请求提交到对应I/O线程的请求队列中,同时从SSD设备中读取对应的数据到SSDbuf中;
I/O线程轮询对应的请求队列,以获取子请求;对于读请求Req的子请求,若其中的数据已被缓存在NVM-buffer中,则从NVM-buffer中读取对应的数据到NVMbuf中;
当所有数据读取完成后,由用户线程合并SSDbuf和NVMbuf的数据并返回。
按照本发明的另一个方面,提供了一种存储控制器,包括计算机可读存储介质和处理器,计算机可读存储介质用于存储计算机程序;处理器用于读取计算机可读存储介质中存储的计算机程序,执行本发明提供的上述面向NVM和SSD的数据存储方法。
按照本发明的又一个方面,提供了一种基于NVM和SSD的混合存储系统,包括:NVM、SSD以及本发明提供的上述存储控制器。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
(1)在存储系统应用中,数据可分为元数据和文件数据两种类型,元数据一般较小,而文件数据的大小随着负载的变化而变化;本发明通过静态地址映射,对外提供统一的线性逻辑地址空间,并将其划分为映射到NVM设备的区域NVM-zone,和映射到SSD设备的区域SSD-zone,前者用于映射元数据,后者用于映射文件数据;对于映射到SSD设备的文件数据,则进一步通过动态请求调度,将非小写密集型的负载场景下的小写请求缓存到位于NVM的NVM-buffer,由此能够尽可能保证小数据请求的数据被存储到NVM设备,而大数据请求的数据被存储到SSD设备,由此能够将I/O请求指向到合适的介质当中,在利用NVM处理小I/O的性能优势的基础上,充分利用SSD处理大I/O的性能优势,有效提高混合存储系统整体的性能;此外,由于SSD具有高容量和高性价比的优点,且在大I/O时具有较好的性能优势,因此,本发明能够更好地平衡NVM和SSD的性能偏好,在提高存储性能的同时,有效降低系统成本。
(2)本发明利用位于NVM的NVM-buffer对小写请求的文件数据进行缓存,在其优选方案中,利用键值对的形式对数据在SSD中的目标地址及其在NVM-buffer中的缓存地址进行记录,能够便于快速确定数据是否在NVM-buffer中被缓存,从而提高数据查询的效率;进一步优选地,利用哈希表索引键值对,能够进一步加快数据查询的速度。
(3)NVM存在写并行度受限的问题,当访问NVM的线程个数超过4时NVM的吞吐会发生显著下降;在本发明的优选方案中,将用户线程与I/O线程解耦,并额外创建了I/O线程池,访问NVM的请求都会经由用户线程,通过线程间的请求队列提交到对应的I/O线程,由I/O线程最终完成数据在NVM设备上的访问。由于I/O线程池中I/O线程的数量为4,通过这种访问方式,能够限制并发访问NVM的最大线程数为固定值4,以此来保证NVM的性能始终处于较高的状态。
(4)本发明相应地提出了将NVM-buffer中缓存的数据迁移到SSD中的机制,具体来说,在某个segment被写满或者系统处于轻负载状态时,将对应segment中缓存的块写到SSD中,由此能够有效避免数据迁移对正常I/O性能的影响。
附图说明
图1为本发明实施例提供的面向NVM和SSD的数据存储方法示意图;
图2为本发明实施例提供的I/O请求处理流程图;
图3为本发明实施例提供的数据迁移示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
在本发明中,本发明及附图中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
在详细介绍本发明的技术方案之前,先对相关的技术术语进行简要介绍:
非易失内存(NVM):一种采用3DXPoint技术实现的新型存储介质,具有数据断电不丢失、字节寻址以及接近内存的读写性能。
固态硬盘(SSD):又称固态驱动器,是用固态电子存储芯片阵列制成的硬盘。
块设备:是I/O设备中的一类,是将信息存储在固定大小的块中,每个块都有自己的地址,还可以在设备的任意位置读取一定长度的数据。
文件系统:操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。
小请求:请求数据大小不超过预设阈值的称为小请求。
大请求:请求大小超过预设阈值的称为大请求。
用于区分大请求和小请求的阈值可根据实际的存储设备的存储性能确定,通常情况下,大请求和小请求以4KiB为界限进行区分。不失一般性地,在以下实施例中,均以4KiB作为用于区分大请求和小请求的阈值,也即是说,在以下实施例中,请求数据大小不超过4KiB的称为小请求,请求大小超过4KiB的称为大请求。
为了解决现有的面向NVM和SSD的混合存储系统因过度利用上层的NVM而忽略了下层SSD在大写吞吐和性价比上的优势的问题,所导致的无法同时发挥NVM和SSD各自的性能优势的技术问题,本发明提供了面向NVM和SSD的数据存储方法、控制器及系统,其整体思路在于:对由NVM和SSD组成的混合存储架构进行改进,将I/O请求定向到合适的介质当中,以最大程度上发挥两种存储介质的性能。
以下为实施例。
实施例1:
一种面向NVM和SSD的数据存储方法,包括:静态地址映射和动态请求调度。
如图1所示,本实施例中的静态地址映射包括:对外提供统一的线性逻辑地址空间,线性逻辑地址空间分为映射到NVM设备的区域NVM-zone和映射到SSD设备的区域SSD-zone;元数据和文件数据分别被映射到区域NVM-zone和区域SSD-zone。
本实施例通过对外提供统一的线性逻辑地址空间,使得NVM和SSD统对外呈现为一个逻辑块设备,在该线性逻辑地址空间中,区域NVM-zone和区域SSD-zone的划分,可根据用户提供的配置文件设置,或者在应用程序初始化时进行设置,可选地,本实施中,混合存储系统对外提供的线性逻辑地址空间大小为500GiB,所使用的文件系统具体为Ext4文件系统,0-8GiB的逻辑地址空间存放的是元数据,8GiB到500GiB的逻辑地址空间存放的是文件数据,因此,将0-8GiB的区域映射到NVM-zone,将8GiB-500GiB的区域映射到SSD-zone。系统运行时,当有请求到来时,根据请求的偏移offset,即可确定在静态地址映射中,当前请求的目标是位于NVM-zone还是SSD-zone。具体来说,当offset小于8GiB时,认为所请求的数据为元数据,因此将其提交到NVM-zone进行处理;当offset大于8GiB时,认为所请求的数据为文件数据,因此将其提交到SSD-zone进行处理。
在以文件系统、数据库为代表的存储系统应用中,数据往往可分为元数据和文件数据两种类型,元数据一般较小,而文件数据的大小随着负载的变化而变化,对此,本实施例进一步提出了动态请求调度,对针对文件数据的请求做进一步的处理。如图1所示,本实施例中,动态请求调度包括:从NVM设备中划分出一块空间作为NVM-buffer,并且对于被映射到区域SSD-zone的文件数据,执行如下操作:
若系统当前未处于小写密集型的负载场景,且请求为小写请求,则将该数据缓存到NVM-buffer中,并记录该数据在SSD设备中的目标地址及缓存地址;否则,直接将该数据写入SSD设备中。
本实施例从NVM设备中划分出一部分空间用于缓存映射到SSD的小请求数据,能够充分利用NVM处理小I/O的性能优势,同时考虑到缓存到NVM-buffer中的数据最终需要迁移到SSD中,而数据迁移会带来写放大,影响I/O性能,为了避免因为频繁的数据迁移而影响正常I/O的处理性能,本实施例仅在系统未处于小写密集型的负载场景,即小写请求每秒的次数超过某一阈值(例如100)的场景时,才对小写请求的文件数据进行缓存,而在系统处于小写密集型的负载场景时,直接将文件数据写入SSD设备。
本实施例通过静态地址映射和动态请求调度相结合,能够将I/O请求定向到合适的存储介质当中,在利用NVM处理小I/O的性能优势的基础上,充分利用SSD处理大I/O的性能优势,有效提高混合存储系统整体的性能;此外,由于SSD具有高容量和高性价比的有点,且在大I/O时具有较好的性能优势,因此,本发明能够更好地平衡NVM和SSD的性能偏好,在提高存储性能的同时,有效降低系统成本。
本实施例在处理读请求时,需要先查询运行时元数据确定数据是缓存与NVM-buffer中,还是位于SSD设备中,该查询过程在读操作的关键路径中,为了加速查询,本实施例中,对于被缓存在NVM-buffer中的数据,其在SSD设备中的目标地址与其在NVM-buffer中的缓存地址以键值对的形式记录,且目标地址和缓存地址分别为键值对的键和值,并且键值对进一步通过哈希表进行索引,以进一步加快查询速度。
由于NVM存在并行度受限的问题,当访问NVM的线程个数超过4时NVM的吞吐会发生显著下降。而实际使用过程中,用户线程的个数会随着负载的变化而变化,且无法限制直接限制用户线程的个数,为了保证NVM的性能始终处于较高的状态,本实施例提出了I/O线程池机制,具体包括:创建由4个I/O线程组成的I/O线程池,并且为每个I/O线程创建一个请求队列;
并且,访问NVM设备的请求的执行包括:
用户线程将访问NVM设备的请求提交至对应的I/O线程的请求队列,由对应的I/O线程按顺序从请求队列中获取请求并进行处理,请求处理完成后,通知对应的用户线程;
如图2所示,NVM-buffer包括与4个I/O线程一一对应的4个segment,即seg0~seg3,可选地,本实施例中,每个segment的大小均为1MiB;NVM中用于存储元数据的空间则包括与4个I/O线程一一对应的4个条带,即条带0~条带3;用户线程提交请求时,通过对请求的偏移对4求余,即可得到I/O线程的索引编号,从而确定对应的I/O线程。
为了便于对NVM-buffer空间的管理,如图2所示,本实施例中,在内存中为每个segment维护一份运行时元数据;
运行时元数据包括:用于记录segment所缓存的数据在SSD设备中的目标地址与其在NVM-buffer中的缓存地址的键值对和哈希表,以及比特位图;比特位图用于记录segment中各数据块是否空闲的状态,具体地,若比特位为0,则表示对应的数据块空闲,为1,则表示对应的数据块不是空闲块。
通过上述I/O线程池机制,本实施例实现了用户线程与I/O线程的解耦,并实现了I/O线程与资源间的绑定,其中绑定的资源包括I/O线程与用户线程间通讯的请求队列、I/O线程访问的Segment与其相关的元数据,每个I/O线程仅能访问与自己绑定的资源,从而避免多线程冲突。I/O线程采用轮询方式查询请求队列是否为空,判断当前是否有需要处理的I/O请求。如果有则根据I/O请求的类型,来执行对应的读写操作,否则循环等待。由于I/O线程池中I/O线程的数量为4,因此通过这种访问方式,本实施例能够限制并发访问NVM的最大线程数为固定值4,以此来保证NVM的性能始终处于较高的状态。
考虑到segment的大小有限,其中的数据最终需要迁移到SSD中,为了提高数据迁移的效率,避免对正常I/O的处理性能产生不利影响,本实施例提出了迁移线程池的机制,具体地,当某个segment被写满时,或者某个I/O线程处于轻负载状态(包括没有负载的状态)时,即预设时间段(例如1秒)内没有I/O或仅有少量(不超过某一阈值)的I/O时,将对应segment中的数据迁移到SSD设备中;
在迁移过程中,迁移线程池中的每个迁移线程会从哈希表中选择一个哈希元素索引的键值对链表,因此,多个迁移线程会同时并发的进行迁移;每个迁移线程会遍历所选择的键值对链表,以此读取链表中键值对的内容,获取其中记录的目标地址Addrssd和缓存地址Addrnvm,并从NVM-buffer中地址为Addrnvm的块中读取数据到内存中的Migbuf,然后将其写回到SSD中地址为Addrssd的块中,迁移线程在迁移完一个数据块后,会从哈希表中删除对应的键值对,当segment中的数据都迁移完成后,会清空对应segment的比特位图并将当前segment置为干净状态。。
以图3为例,迁移线程池中的迁移线程进行数据迁移时,会访问哈希表中元素rcu_list0索引的键值对链表,该链表中包括两个键值对,即(73,21)和(12,11);首先,迁移线程0根据键值对(73,21)从NVM-buffer中读取缓存地址为21的数据块,然后根据目标地址73将读出的数据写入到SSD中,之后键值对(73,21)将从键值对链表中被删除;之后按照同样的流程根据键值对(12,11)进行数据迁移;为了进一步优化写请求性能,在迁移过程中,如果存在其他访问SSD中不同目标地址的读写请求,则直接访问SSD;则否则,该请求等待直至对应的数据迁移完成。
在实际应用中,对于元数据的请求,基于I/O线程池机制访问NVM设备中用于存储元数据的空间即可。
在系统未处于小写密集型负载场景时,对于文件数据的请求,可以分为大写请求、小写请求和读请求;对于被映射到SSD设备的小写请求Reqs,直接由用户线程将其提交到对应的I/O线程的请求队列,由I/O线程将其缓存到NVM-buffer中对应的segment即可。
对于被映射到SSD设备的大写请求ReqL,其处理包括:
在用户线程,按照逻辑块大小(本实施例中为4KiB)将大写请求ReqL划分为子请求,并按照子请求的偏移对4求余,将求余结果作为对应I/O线程的编号;将各子请求提交到对应I/O线程的请求队列中,同时将大写请求ReqL提交到SSD设备中;
I/O线程轮询对应的请求队列,以获取子请求;对于大写请求ReqL的子请求,若其中的数据已被缓存在NVM-buffer中,则随着大写请求ReqL的处理,缓存于NVM-buffer中的数据将失效,为了避免数据不一致,本实施例将该数据在SSD设备中的目标地址及缓存地址的记录信息删除,并释放该数据在NVM-buffer中所占用的空间,具体地,将子请求的目标块的状态位设置为无效,并清除当前I/O线程在内存中的元数据,包括将当前块对应比特位图中的比特位设置为0,将键的内容为当前块地址的键值对从哈希表中删除,最后通知用户线程;
当用户线程接收到所有子请求在I/O线程完成的通知,其提交到SSD设备的请求也返回后,大写请求ReqL的处理完成。
对于被映射到SSD设备的读请求Req,其处理包括:
在用户线程,按照逻辑块大小将读请求Req划分为子请求,并按照子请求的偏移对4求余,将求余结果作为对应I/O线程的编号;将各子请求提交到对应I/O线程的请求队列中,同时从SSD设备中读取对应的数据到SSDbuf中;
I/O线程轮询对应的请求队列,以获取子请求;对于读请求Req的子请求,若其中的数据已被缓存在NVM-buffer中,则从NVM-buffer中读取对应的数据到NVMbuf中;
当所有数据读取完成后,由用户线程合并SSDbuf和NVMbuf的数据并返回;基于上述大写请求的处理方式,本实施例中,缓存于NVM-buffer中的数据为最新版本的数据,因此,在合并SSDbuf和NVMbuf中的数据时,对于同时存在于SSDbuf和NVMbuf中的数据,会利用NVMbuf中的数据覆盖SSDbuf中对应的数据。
在系统处于小写密集型负载场景时,对于映射到SSD设备的写请求,统一按照上述大写请求的处理方式进行处理;对于映射到SSD设备的读请求,按照上述读请求处理方式进行处理。
实施例2:
一种存储控制器,包括计算机可读存储介质和处理器,计算机可读存储介质用于存储计算机程序;处理器用于读取计算机可读存储介质中存储的计算机程序,执行上述实施例1提供的面向NVM和SSD的数据存储方法。
实施例3:
一种基于NVM和SSD的混合存储系统,包括:NVM、SSD以及上述实施例2提供的存储控制器。
本实施例所提供的混合存储系统,是一种高速混合存储架构(Ultra-fast HybridStorage Consolidating NVM and SSD in Parallel,UHS),该存储架构可参考图1所示。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种面向NVM和SSD的数据存储方法,其特征在于,包括:静态地址映射和动态请求调度;
所述静态地址映射包括:对外提供统一的线性逻辑地址空间,所述线性逻辑地址空间分为映射到NVM设备的区域NVM-zone和映射到SSD设备的区域SSD-zone;元数据和文件数据分别被映射到区域NVM-zone和区域SSD-zone;
所述动态请求调度包括:从所述NVM设备中划分出一块空间作为NVM-buffer,并且对于被映射到区域SSD-zone的文件数据,执行如下操作:
若系统当前未处于小写密集型的负载场景,且请求为小写请求,则将该数据缓存到NVM-buffer中,并记录该数据在SSD设备中的目标地址及缓存地址;否则,直接将该数据写入SSD设备中;
其中,大写请求所请求写入的数据大于预设的阈值,而小写请求所写入的数据不超过所述阈值。
2.如权利要求1所述的面向NVM和SSD的数据存储方法,其特征在于,被缓存在NVM-buffer中的数据,其在SSD设备中的目标地址与其在NVM-buffer中的缓存地址以键值对的形式记录,且目标地址和缓存地址分别为键值对的键和值。
3.如权利要求2所述的面向NVM和SSD的数据存储方法,其特征在于,键值对通过哈希表索引。
4.如权利要求1~3任一项所述的面向NVM和SSD的数据存储方法,其特征在于,还包括:创建由4个I/O线程组成的I/O线程池,并且为每个I/O线程创建一个请求队列;
并且,访问NVM设备的请求的执行包括:
用户线程将访问NVM设备的请求提交至对应的I/O线程的请求队列,由对应的I/O线程按顺序从请求队列中获取请求并进行处理,请求处理完成后,通知对应的用户线程。
5.如权利要求4所述的面向NVM和SSD的数据存储方法,其特征在于,NVM-buffer包括与4个I/O线程一一对应的4个segment,并且,所述面向NVM和SSD的数据存储方法还包括:
当某个segment被写满时,或者某个I/O线程处于轻负载状态时,将对应segment中的数据迁移到SSD设备中。
6.如权利要求5所述的面向NVM和SSD的数据存储方法,其特征在于,还包括:在内存中为每个segment维护一份运行时元数据;
所述运行时元数据包括:segment所缓存的数据在SSD设备中的目标地址与其在NVM-buffer中的缓存地址,以及比特位图;所述比特位图用于记录segment中各数据块是否空闲的状态。
7.如权利要求4所述的面向NVM和SSD的数据存储方法,其特征在于,对于被映射到SSD设备的大写请求ReqL,其处理包括:
在用户线程,按照逻辑块大小将所述大写请求ReqL划分为子请求,并按照子请求的偏移对4求余,将求余结果作为对应I/O线程的编号;将各子请求提交到对应I/O线程的请求队列中,同时将所述大写请求ReqL提交到SSD设备中;
I/O线程轮询对应的请求队列,以获取子请求;对于所述大写请求ReqL的子请求,若其中的数据已被缓存在NVM-buffer中,则将该数据在SSD设备中的目标地址及缓存地址的记录信息删除,并释放该数据在NVM-buffer中所占用的空间;
当用户线程接收到所有子请求在I/O线程完成的通知,其提交到SSD设备的请求也返回后,所述大写请求ReqL的处理完成。
8.如权利要求7所述的面向NVM和SSD的数据存储方法,其特征在于,对于被映射到SSD设备的读请求Req,其处理包括:
在用户线程,按照逻辑块大小将所述读请求Req划分为子请求,并按照子请求的偏移对4求余,将求余结果作为对应I/O线程的编号;将各子请求提交到对应I/O线程的请求队列中,同时从SSD设备中读取对应的数据到SSDbuf中;
I/O线程轮询对应的请求队列,以获取子请求;对于所述读请求Req的子请求,若其中的数据已被缓存在NVM-buffer中,则从NVM-buffer中读取对应的数据到NVMbuf中;
当所有数据读取完成后,由用户线程合并SSDbuf和NVMbuf的数据并返回。
9.一种存储控制器,其特征在于,包括计算机可读存储介质和处理器,所述计算机可读存储介质用于存储计算机程序;所述处理器用于读取所述计算机可读存储介质中存储的计算机程序,执行权利要求1~8任一项所述的面向NVM和SSD的数据存储方法。
10.一种基于NVM和SSD的混合存储系统,其特征在于,包括:NVM、SSD以及权利要求9所述的存储控制器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211648945.5A CN116009776A (zh) | 2022-12-20 | 2022-12-20 | 面向nvm和ssd的数据存储方法、控制器及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211648945.5A CN116009776A (zh) | 2022-12-20 | 2022-12-20 | 面向nvm和ssd的数据存储方法、控制器及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116009776A true CN116009776A (zh) | 2023-04-25 |
Family
ID=86027605
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211648945.5A Pending CN116009776A (zh) | 2022-12-20 | 2022-12-20 | 面向nvm和ssd的数据存储方法、控制器及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116009776A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116886719A (zh) * | 2023-09-05 | 2023-10-13 | 苏州浪潮智能科技有限公司 | 存储系统的数据处理方法、装置、存储系统、设备及介质 |
-
2022
- 2022-12-20 CN CN202211648945.5A patent/CN116009776A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116886719A (zh) * | 2023-09-05 | 2023-10-13 | 苏州浪潮智能科技有限公司 | 存储系统的数据处理方法、装置、存储系统、设备及介质 |
CN116886719B (zh) * | 2023-09-05 | 2024-01-23 | 苏州浪潮智能科技有限公司 | 存储系统的数据处理方法、装置、存储系统、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107193646B (zh) | 一种基于混合主存架构的高效动态页面调度方法 | |
US11055230B2 (en) | Logical to physical mapping | |
US10521131B2 (en) | Storage apparatus and storage control apparatus | |
US11126378B1 (en) | Rate limit on the transitions of zones to open | |
CN103186350B (zh) | 混合存储系统及热点数据块的迁移方法 | |
US9785564B2 (en) | Hybrid memory with associative cache | |
EP2735978A1 (en) | Storage system and management method used for metadata of cluster file system | |
US11599304B2 (en) | Data aggregation in ZNS drive | |
US20180107601A1 (en) | Cache architecture and algorithms for hybrid object storage devices | |
US9367247B2 (en) | Memory access requests in hybrid memory system | |
WO2017025039A1 (zh) | 一种面向闪存存储的数据访问方法及其装置 | |
CN113568562A (zh) | 一种存储系统、内存管理方法和管理节点 | |
CN110968269A (zh) | 基于scm与ssd的键值存储系统及读写请求处理方法 | |
CN106909323B (zh) | 适用于dram/pram混合主存架构的页缓存方法及混合主存架构系统 | |
US20240086332A1 (en) | Data processing method and system, device, and medium | |
CN109324979B (zh) | 3d闪存固态盘系统的数据缓存划分方法及数据分配方法 | |
CN111078143B (zh) | 基于段映射进行数据布局和调度的混合存储方法及系统 | |
CN115203079A (zh) | 一种将数据写入固态硬盘的方法 | |
KR20230142795A (ko) | Zns 디바이스들에서의 상이한 기입 우선순위화 | |
CN116009776A (zh) | 面向nvm和ssd的数据存储方法、控制器及系统 | |
US20040039875A1 (en) | Disk array device and virtual volume management method in disk array device | |
CN110537172B (zh) | 混合存储器模块 | |
CN109375868B (zh) | 一种数据存储方法、调度装置、系统、设备及存储介质 | |
US20240020014A1 (en) | Method for Writing Data to Solid-State Drive | |
US11544197B2 (en) | Random-access performance for persistent memory |
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 |