CN117724657A - 一种基于rocksdb与spdk的用户态磁盘分区方案 - Google Patents

一种基于rocksdb与spdk的用户态磁盘分区方案 Download PDF

Info

Publication number
CN117724657A
CN117724657A CN202311703009.4A CN202311703009A CN117724657A CN 117724657 A CN117724657 A CN 117724657A CN 202311703009 A CN202311703009 A CN 202311703009A CN 117724657 A CN117724657 A CN 117724657A
Authority
CN
China
Prior art keywords
partition
disk
user
data
information
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
Application number
CN202311703009.4A
Other languages
English (en)
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.)
Tianyi Cloud Technology Co Ltd
Original Assignee
Tianyi Cloud 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 Tianyi Cloud Technology Co Ltd filed Critical Tianyi Cloud Technology Co Ltd
Priority to CN202311703009.4A priority Critical patent/CN117724657A/zh
Publication of CN117724657A publication Critical patent/CN117724657A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明属于分布式存储技术领域,本发明公开了一种基于rocksdb与spdk的用户态磁盘分区方案;根据用户创建分区请求,进行分区创建;分区创建完成后,对每个分区加载数据;数据加载完成后,读写每个分区的IO;能够支持在spdk‑nvme这种场景下的nvme‑ssd磁盘分区;通过将rocksdb部署在系统盘内,并且将逻辑分区的信息持久化到rocksdb中来保证数据的可靠性。

Description

一种基于rocksdb与spdk的用户态磁盘分区方案
技术领域
本发明涉及分布式存储技术领域,更具体地说,本发明涉及一种基于rocksdb与spdk的用户态磁盘分区方案。
背景技术
在追求极致性能极致时延的存储系统中通常使用spdk的nvme用户态驱动接管访问磁盘;在存储系统中常常需要根据磁盘功能的不同或者存储性能的要求将一块nvme-ssd盘分成多个磁盘分区;
传统的解决方案有两种:一种是nvme盘本身的namespace功能,但是并不是所有厂家的盘都支持namespace功能,并且一块盘的namespace是有限制的,划分namespace需要格式化整个磁盘;化为namespace后对nvme-ssd盘的gc功能也会产生影响,多个namespace使得全局gc变为局部gc,gc效果不佳;另一种是采用操作系统的partition命令进行逻辑分区,但是由于采用了spdk接管nvme-ssd盘,导致也无法通过系统命令进行分区操作;例如申请公开号为CN114237957A的专利公开了异常磁盘分区的处理方法与装置,再例如申请公开号为CN112347044A的专利公开了一种基于SPDK的对象存储优化方法;都是基于操作系统参与的分区方案,没有解决使用spdk用户场景下nvme盘的分区问题;
鉴于此,本发明提出一种基于rocksdb与spdk的用户态磁盘分区方案以解决上述问题。
发明内容
为了克服现有技术的上述缺陷,为实现上述目的,本发明提供如下技术方案:一种基于rocksdb与spdk的用户态磁盘分区方案,包括:
S1:根据用户创建分区请求,进行分区创建;
S2:分区创建完成后,对每个分区加载数据;
S3:数据加载完成后,读写每个分区的IO。
进一步地,所述分区创建的方法包括:
S101:通过spdk接口扫描主机上所有的nvme磁盘,获取磁盘数据;将磁盘数据持久化到rocksdb中;
S102:用户发起创建分区请求,分区请求中包括分区信息;
S103:根据用户的创建分区请求,判断是否进行分区创建。
进一步地,所述步骤S101中磁盘数据包括磁盘序列号、磁盘存储容量以及逻辑块地址。
进一步地,所述步骤S102中分区信息包括指定磁盘序列号、分区名称、分区在磁盘的起始地址和结束地址、分区大小以及分区类型。
进一步地,步骤S103中判断是否进行分区创建的方法包括:
检查磁盘剩余容量是否满足分区信息;
若磁盘剩余容量满足分区信息,则从磁盘剩余空间中划分出一个指定的分区,将分区进行格式化,在创建分区的前4K空间写入superblock信息,并将分区信息持久化到rocksdb中。
进一步地,所述superblock信息包括文件存储系统的元数据信息和关键参数,元数据信息包括文件存储系统的结构和组织方式。
进一步地,分区加载数据的方法包括:
S201:将计算机进行重启,从rocksdb中加载所有磁盘数据和分区信息;
S202:根据磁盘数据和分区信息重新计算每个磁盘的容量参数;
S203:加载每个分区的superblock信息,并且校验superblock信息的正确性。
进一步地,所述步骤S202中容量参数包括磁盘已用容量和磁盘剩余容量。
进一步地,所述用户根据所需数据读写分区的IO的方法包括:
S301:用户请求调用读写IO接口以读写所需数据,并发送用户参数;
S302:计算机管理进程收到用户请求后,根据用户参数从rocksdb中查找分区信息;
S303:将分区信息和用户参数转换为对磁盘的操作参数。
进一步地,所述步骤S301中用户参数包括分区名称、所需数据在分区中的逻辑块地址以及所需数据的逻辑块个数。
本发明一种基于rocksdb与spdk的用户态磁盘分区方案的技术效果和优点:
1.支持在spdk-nvme这种场景下的nvme-ssd磁盘分区。
2.通过将rocksdb部署在系统盘内,并且将逻辑分区的信息持久化到rocksdb中来保证数据的可靠性;当机器掉电重启,通过从rocksdb还原分区信息来保证分区数据的可用性;并且通过操作rocksdb的增、删、改、查等操作,可以实现分区的增、删、改、查操作。
3.创建的分区个数没有上限,并且创建分区无需格式化磁盘,不会影响已经创建分区的IO读写,也不会影响整体盘的gc效率。
附图说明
图1为本发明实施例1的一种基于rocksdb与spdk的用户态磁盘分区方案示意图;
图2为本发明实施例1的分区布局示意图;
图3为本发明实施例2的电子设备示意图;
图4为本发明实施例3的存储介质示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
请参阅图1所示,本实施例所述一种基于rocksdb与spdk的用户态磁盘分区方案,包括:
S1:根据用户创建分区请求,进行分区创建;
分区创建的方法包括:
S101:通过spdk接口扫描计算机上所有的nvme磁盘,获取磁盘数据;将磁盘数据持久化到rocksdb中;
S102:用户发起创建分区请求,分区请求中包括分区信息;
S103:根据用户的创建分区请求,判断是否进行分区创建;
示例性的,首先扫描计算机上所有的nvme磁盘,获取磁盘数据,如表1;
表1
然后执行创建分区的命令,创建一个磁盘分区;
create partition--name=test_pt--size=4G--sn=SN1
接着查看创建的分区信息,如表2;
pt_name SerialNumber PciCode Namespace Begin End
test_pt SH1 0000:66:00.0 1 0 4294967296
表2
最后读写分区数据;
写入4K数据,offset是0;
WritePartition(“test_pt”,0,4096,data)
步骤S101中磁盘数据包括磁盘序列号、磁盘存储容量以及逻辑块地址;逻辑块地址是一种用于磁盘存储的寻址方式,将磁盘上的数据块编号为逻辑块地址;
将磁盘数据持久化到rocksdb中的目的在于,将磁盘数据存储到一个可靠、高效的数据库中,以便后续对磁盘数据进行快速数据写入和读取操作;rocksdb是一个高性能的嵌入式键值存储引擎,包括内存数据库、持久化存储、分布式存储等,还提供了灵活的数据模型和丰富的数据操作接口,方便进行数据的查询、分析和管理;
步骤S102中分区信息包括指定磁盘序列号、分区名称、分区在磁盘的起始地址和结束地址、分区大小以及分区类型;磁盘序列号用于对每个磁盘进行标识;分区名称为每个分区对应的名称;分区在磁盘的起始地址和结束地址确定了该分区的位置范围;分区大小为该分区所占据的磁盘空间大小;分区类型例如数据分区、日志分区、元数据分区等,可以将不同的分区类型进行绑定关联,例如将数据分区与日志分区、元数据分区进行绑定关联;
步骤S103中判断是否进行分区创建的方法包括:
检查磁盘剩余容量是否满足分区信息;
若磁盘剩余容量满足分区信息,则从磁盘剩余空间中划分出一个指定的分区,将分区进行格式化,在创建分区的前4K空间写入superblock信息,并将分区信息持久化到rocksdb中;
若磁盘剩余容量不满足分区信息,则不进行分区创建;
superblock信息包括文件存储系统的元数据信息和关键参数,元数据信息包括文件存储系统的结构和组织方式,例如文件存储系统的大小、inode表的起始位置、数据块位图的起始位置等;文件存储系统是计算机存储数据的一种组织方式,具有组织和管理数据、数据的存储和访问、数据保护、资源管理等功能;
在创建分区的前4K空间写入superblock信息的目的在于,创建文件存储系统的基本结构并确保文件存储系统的正常运行;
需要说明的是,一块磁盘可以创建多个分区,每个分区之间都设有4M的隔离空间,并且当磁盘空间的剩余量小于128M时,由于无法再提供足够的空间来存储额外的分区表和管理信息,因此不能再进行分区的创建;
分区的布局请参阅图2所示;
S2:分区创建完成后,对每个分区加载数据;
分区加载数据的方法包括:
S201:将计算机进行重启,从rocksdb中加载所有磁盘数据和分区信息;
S202:根据磁盘数据和分区信息重新计算每个磁盘的容量参数;
S203:加载每个分区的superblock信息,并且校验superblock信息的正确性;
步骤S202中容量参数包括磁盘已用容量和磁盘剩余容量;
步骤S203中校验superblock信息正确性的方法例如:检查superblock中文件存储系统的元数据信息是否与实际磁盘数据相匹配;针对每个分区,可以通过读取superblock中的校验来验证磁盘数据的完整性;检查super block中的时间戳和版本信息是否与预期值一致,以确保数据没有被篡改或者损坏;根据文件存储系统的特点,可以执行特定的校验算法,特定的校验算法例如对文件系统结构进行扫描和验证等;
S3:数据加载完成后,用户根据所需数据读写分区的IO;
用户根据所需数据读写分区的IO的方法包括:
S301:用户请求调用读写IO接口以读写所需数据,并发送用户参数;
S302:计算机管理进程收到用户请求后,根据用户参数从rocksdb中查找分区信息;
S303:将分区信息和用户参数转换为对磁盘的操作参数;
步骤S301中用户参数包括分区名称、所需数据在分区中的逻辑块地址以及所需数据的逻辑块个数;根据用户参数,可以查找所需数据在分区中的位置;
步骤S302中管理进程为计算机中负责协调和管理其他进程和资源的特定进程,通常负责监控计算机资源的分配和使用,处理任务和调度,以确保计算机的正常运行和资源的高效利用,在不同的应用场景中,管理进程具有不同的功能和责任,例如处理请求调度、资源分配、错误处理、性能监控等;
步骤S303中操作参数包括读写操作类型、目标磁盘的名称、目标磁盘的逻辑块地址、所需数据的逻辑块个数等;示例性的,用户请求写入分区的逻辑块个数为10,通过查询分区信息得知该分区的起始逻辑块地址为10000,则管理进程会将用户请求转换为在磁盘上的逻辑块个数,即10000+10=10010。
本实施例能够支持在spdk-nvme这种场景下的nvme-ssd磁盘分区;通过将rocksdb部署在系统盘内,并且将逻辑分区的信息持久化到rocksdb中来保证数据的可靠性;当机器掉电重启,通过从rocksdb还原分区信息来保证分区数据的可用性;创建的分区个数没有上限,并且创建分区无需格式化磁盘,不会影响已经创建分区的IO读写,也不会影响整体盘的gc效率。
实施例2
请参阅图3所示,根据本申请的又一方面还提供了电子设备500。该电子设备500可包括一个或多个处理器以及一个或多个存储器。其中,存储器中存储有计算机可读代码,计算机可读代码当由一个或多个处理器运行时,可以执行如上所述的一种基于rocksdb与spdk的用户态磁盘分区方案。
根据本申请实施方式的方法或系统也可以借助于图3所示的电子设备的架构来实现。如图3所示,电子设备500可包括总线501、一个或多个CPU502、只读存储器(ROM)503、随机存取存储器(RAM)504、连接到网络的通信端口505、输入/输出506、硬盘507等。电子设备500中的存储设备,例如ROM503或硬盘507可存储本申请提供的一种基于rocksdb与spdk的用户态磁盘分区方案。进一步地,电子设备500还可包括用户界面508。当然,图3所示的架构只是示例性的,在实现不同的设备时,根据实际需要,可以省略图3示出的电子设备中的一个或多个组件。
实施例3
请参阅图4所示,是根据本申请一个实施方式的计算机可读存储介质600。计算机可读存储介质600上存储有计算机可读指令。当计算机可读指令由处理器运行时,可执行参照以上附图描述的根据本申请实施方式的一种基于rocksdb与spdk的用户态磁盘分区方案。存储介质600包括但不限于例如易失性存储器和/或非易失性存储器。易失性存储器例如可包括随机存取存储器(RAM)和高速缓冲存储器(cache)等。非易失性存储器例如可包括只读存储器(ROM)、硬盘、闪存等。
另外,根据本申请的实施方式,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请提供了非暂时性机器可读存储介质,所述非暂时性机器可读存储介质存储有机器可读指令,所述机器可读指令能够由处理器运行以执行与本申请提供的方法步骤对应的指令,例如:一种基于rocksdb与spdk的用户态磁盘分区方案。在该计算机程序被中央处理单元(CPU)执行时,执行本申请的方法中限定的上述功能。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线网络或无线网络方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘。
本领域普通技术人员可以意识到,结合本发明中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
最后:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于rocksdb与spdk的用户态磁盘分区方案,其特征在于,包括:
S1:根据用户创建分区请求,进行分区创建;
S2:分区创建完成后,对每个分区加载数据;
S3:数据加载完成后,读写每个分区的IO。
2.根据权利要求1所述的一种基于rocksdb与spdk的用户态磁盘分区方案,其特征在于,所述分区创建的方法包括:
S101:通过spdk接口扫描主机上所有的nvme磁盘,获取磁盘数据;将磁盘数据持久化到rocksdb中;
S102:用户发起创建分区请求,分区请求中包括分区信息;
S103:根据用户的创建分区请求,判断是否进行分区创建。
3.根据权利要求2所述的一种基于rocksdb与spdk的用户态磁盘分区方案,其特征在于,所述步骤S101中磁盘数据包括磁盘序列号、磁盘存储容量以及逻辑块地址。
4.根据权利要求3所述的一种基于rocksdb与spdk的用户态磁盘分区方案,其特征在于,所述步骤S102中分区信息包括指定磁盘序列号、分区名称、分区在磁盘的起始地址和结束地址、分区大小以及分区类型。
5.根据权利要求4所述的一种基于rocksdb与spdk的用户态磁盘分区方案,其特征在于,步骤S103中判断是否进行分区创建的方法包括:
检查磁盘剩余容量是否满足分区信息;
若磁盘剩余容量满足分区信息,则从磁盘剩余空间中划分出一个指定的分区,将分区进行格式化,在创建分区的前4K空间写入superblock信息,并将分区信息持久化到rocksdb中。
6.根据权利要求5所述的一种基于rocksdb与spdk的用户态磁盘分区方案,其特征在于,所述superblock信息包括文件存储系统的元数据信息和关键参数,元数据信息包括文件存储系统的结构和组织方式。
7.根据权利要求6所述的一种基于rocksdb与spdk的用户态磁盘分区方案,其特征在于,分区加载数据的方法包括:
S201:将计算机进行重启,从rocksdb中加载所有磁盘数据和分区信息;
S202:根据磁盘数据和分区信息重新计算每个磁盘的容量参数;
S203:加载每个分区的superblock信息,并且校验superblock信息的正确性。
8.根据权利要求7所述的一种基于rocksdb与spdk的用户态磁盘分区方案,其特征在于,所述步骤S202中容量参数包括磁盘已用容量和磁盘剩余容量。
9.根据权利要求8所述的一种基于rocksdb与spdk的用户态磁盘分区方案,其特征在于,所述用户根据所需数据读写分区的IO的方法包括:
S301:用户请求调用读写IO接口以读写所需数据,并发送用户参数;
S302:计算机管理进程收到用户请求后,根据用户参数从rocksdb中查找分区信息;
S303:将分区信息和用户参数转换为对磁盘的操作参数。
10.根据权利要求9所述的一种基于rocksdb与spdk的用户态磁盘分区方案,其特征在于,所述步骤S301中用户参数包括分区名称、所需数据在分区中的逻辑块地址以及所需数据的逻辑块个数。
CN202311703009.4A 2023-12-12 2023-12-12 一种基于rocksdb与spdk的用户态磁盘分区方案 Pending CN117724657A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311703009.4A CN117724657A (zh) 2023-12-12 2023-12-12 一种基于rocksdb与spdk的用户态磁盘分区方案

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311703009.4A CN117724657A (zh) 2023-12-12 2023-12-12 一种基于rocksdb与spdk的用户态磁盘分区方案

Publications (1)

Publication Number Publication Date
CN117724657A true CN117724657A (zh) 2024-03-19

Family

ID=90204535

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311703009.4A Pending CN117724657A (zh) 2023-12-12 2023-12-12 一种基于rocksdb与spdk的用户态磁盘分区方案

Country Status (1)

Country Link
CN (1) CN117724657A (zh)

Similar Documents

Publication Publication Date Title
US10430286B2 (en) Storage control device and storage system
US9069468B2 (en) Pooled partition layout and representation
US20090240750A1 (en) Memory system and data access method
CN113296696A (zh) 一种数据的访问方法、计算设备及存储介质
CN109902034B (zh) 快照创建方法、装置、电子设备及机器可读存储介质
CN110716845B (zh) 一种Android系统的日志信息读取的方法
CN109804359A (zh) 用于将数据回写到存储设备的系统和方法
CN103970557A (zh) 存储设备启动系统的方法及存储设备
CN113568582B (zh) 数据管理方法、装置和存储设备
CN111666046B (zh) 一种数据存储方法、装置及设备
US9588884B2 (en) Systems and methods for in-place reorganization of device storage
CN106709014B (zh) 一种文件系统转换方法及装置
CN113434470B (zh) 数据分布方法、装置及电子设备
CN115480692A (zh) 一种数据压缩方法及装置
CN117131014A (zh) 数据库迁移方法、装置、设备及存储介质
CN109508140B (zh) 存储资源管理方法、装置、电子设备及电子设备、系统
CN117724657A (zh) 一种基于rocksdb与spdk的用户态磁盘分区方案
US11467777B1 (en) Method and system for storing data in portable storage devices
CN115017098A (zh) 一种文件系统的管理方法及装置
CN111444114B (zh) 一种非易失性内存中数据的处理方法、装置及系统
CN113849317A (zh) 一种内存池资源使用方法及相关装置
CN108415982B (zh) 数据库的处理方法和装置
CN112817749A (zh) 应用于嵌入式系统的存储分区方法、装置及存储介质
CN112286725A (zh) 数据处理方法、装置及电子设备
CN111651177A (zh) 基于安卓平台的写号方法、设备及计算机可读介质

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