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

基于ZNSSSD的文件系统控制方法、装置及设备与流程

2023-01-02 18:29:40 来源:中国专利 TAG:

基于zns ssd的文件系统控制方法、装置及设备
技术领域
1.本技术涉及存储技术领域,特别是涉及一种基于zns ssd的文件系统控制方法、装置、设备及计算机可读存储介质。


背景技术:

2.分区命名空间固态硬盘(zoned name space solid state drive,zns ssd)是从开放通道固态硬盘(open channel solid state drive,开放通道ssd)基础上发展而来,将闪存转换层(flash translation layer,ftl)从ssd内部迁移到上层,方便用户可以根据不同的需要,灵活定制闪存转换层。
3.然而,当前基于zns ssd搭建文件系统,需要用户使用支持分区块驱动(zone block drive,zbd)的内核版本,但是成熟的zbd特性需要较高的内核版本或专门定制的内核版本,对于某些用户并不适用(特性用户对内核版本升级敏感排斥)。


技术实现要素:

4.本技术的目的是提供一种基于zns ssd的文件系统控制方法、装置、设备及计算机可读存储介质,实现基于zns ssd的用户态文件系统,避免内核适配开发工作,弥补不支持升级内核版本的用户灵活定制文件系统的需求。
5.为解决上述技术问题,本技术提供一种基于zns ssd的文件系统控制方法,包括:当自预设的用户空间文件系统接口接收到创建基于zns ssd的文件系统的创建命令时,调用预设的用于实现zns ssd的闪存转换层以及zns ssd分区存储管理功能的用户态管理模块,以根据所述创建命令加载目标文件系统的元数据、并确定所述目标文件系统与目标zns ssd的挂载点,将所述目标zns ssd挂载于所述目标文件系统以完成所述创建命令;当接收到基于所述用户空间文件系统接口的对所述目标文件系统的系统调用命令后,调用所述用户态管理模块根据所述目标文件系统的元数据执行所述系统调用命令。
6.可选的,所述目标文件系统的元数据具体包括:所述目标文件系统的目录信息,所述目标文件系统中文件的信息,所述目标文件系统中的文件在所述目标zns ssd中对应的逻辑区块地址,所述目标zns ssd的分区信息,所述目标zns ssd的分区与所述目标zns ssd逻辑区块地址的关联关系。
7.可选的,根据所述创建命令加载目标文件系统的元数据,具体为:调用非关系型数据库以根据所述创建命令加载所述文件系统元数据。
8.可选的,所述非关系型数据库具体为远程字典服务数据库。
9.可选的,所述调用所述用户态管理模块根据所述目标文件系统的元数据执行所述系统调用命令,具体包括:根据所述系统调用命令读取目标元数据;根据所述目标元数据检验所述系统调用命令的合法性;
如果所述系统调用命令合法,则执行所述系统调用命令;如果所述系统调用命令不合法,则返回系统调用失败的信息。
10.可选的,所述根据所述目标元数据检验所述系统调用命令的合法性,具体包括:根据所述目标元数据判断所述系统调用命令在所述目标zns ssd中的目标访问分区的分区状态是否符合执行所述系统调用命令的分区状态;如果符合,则确认所述系统调用合法;如果不符合,则确认所述系统调用不合法。
11.可选的,所述根据所述目标元数据判断所述系统调用命令在所述目标zns ssd中的目标访问分区的分区状态是否符合执行所述系统调用命令的分区状态,具体包括:解析得到所述系统调用命令要访问的目标文件地址;根据所述目标元数据确定与所述目标文件地址在所述目标zns ssd中对应的逻辑区块地址,以及对应的所述目标访问分区;查询得到所述目标访问分区的分区状态;判断所述目标访问分区的分区状态是否符合执行所述系统调用命令的分区状态。
12.可选的,当所述系统调用命令为写命令时,所述判断所述目标访问分区的分区状态是否符合执行所述系统调用命令的分区状态,具体包括:判断所述目标访问分区的分区状态是否为不可写状态;如果是,则确定所述目标访问分区的分区状态不符合执行所述系统调用命令的分区状态;如果否,则确定所述目标访问分区的分区状态符合执行所述系统调用命令的分区状态。
13.可选的,还包括:判断所述系统调用命令是否包含操作用户数据命令;如果不包含,则返回系统调用成功的信息;如果包含,则进入所述根据所述目标元数据检验所述系统调用命令的合法性的步骤。
14.可选的,所述执行所述系统调用命令,具体为:根据所述系统调用命令,对所述目标zns ssd的目标访问分区执行所述操作用户数据命令。
15.可选的,在执行所述系统调用命令之后,还包括:判断所述系统调用命令是否执行成功;如果是,则返回与所述系统调用命令对应的用户数据以及系统调用成功的信息;如果否,则返回系统调用失败的信息。
16.为解决上述技术问题,本技术还提供一种基于zns ssd的文件系统控制方法,包括:当接收到创建基于zns ssd的文件系统的创建请求时,根据所述创建请求生成基于预设的用户空间文件系统接口调用文件系统服务器预先部署的用户态管理模块的创建命令,以使所述文件系统服务器根据所述创建命令加载目标文件系统的元数据、并确定所述目标文件系统与目标zns ssd的挂载点,将所述目标zns ssd挂载于所述目标文件系统以
完成所述创建命令;当接收到对所述目标文件系统的用户操作请求后,根据所述用户操作请求生成基于所述用户空间文件系统接口的系统调用命令,以基于所述用户空间文件系统接口调用所述用户态管理模块执行所述系统调用命令;其中,所述用户态管理模块用于实现zns ssd的闪存转换层以及zns ssd分区存储管理功能。
17.为解决上述技术问题,本技术还提供一种基于zns ssd的文件系统控制装置,包括:第一创建单元,用当自预设的用户空间文件系统接口接收到创建基于zns ssd的文件系统的创建命令时,调用预设的用于实现zns ssd的闪存转换层以及zns ssd分区存储管理功能的用户态管理模块,以根据所述创建命令加载目标文件系统的元数据、并确定所述目标文件系统与目标zns ssd的挂载点,将所述目标zns ssd挂载于所述目标文件系统以完成所述创建命令;第一调用单元,用于当接收到基于所述用户空间文件系统接口的对所述目标文件系统的系统调用命令后,调用所述用户态管理模块根据所述目标文件系统的元数据执行所述系统调用命令。
18.为解决上述技术问题,本技术还提供一种基于zns ssd的文件系统控制装置,包括:第二创建单元,用于当接收到创建基于zns ssd的文件系统的创建请求时,根据所述创建请求生成基于预设的用户空间文件系统接口调用文件系统服务器预先部署的用户态管理模块的创建命令,以使所述文件系统服务器根据所述创建命令加载目标文件系统的元数据、并确定所述目标文件系统与目标zns ssd的挂载点,将所述目标zns ssd挂载于所述目标文件系统以完成所述创建命令;第二调用单元,用于当接收到对所述目标文件系统的用户操作请求后,根据所述用户操作请求生成基于所述用户空间文件系统接口的系统调用命令,以基于所述用户空间文件系统接口调用所述用户态管理模块执行所述系统调用命令;其中,所述用户态管理模块用于实现zns ssd的闪存转换层以及zns ssd分区存储管理功能。
19.为解决上述技术问题,本技术还提供一种基于zns ssd的文件系统控制设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序,所述计算机程序被所述处理器执行时实现如上述任意一项所述基于zns ssd的文件系统控制方法的步骤。
20.为解决上述技术问题,本技术还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意一项所述基于zns ssd的文件系统控制方法的步骤。
21.本技术所提供的基于zns ssd的文件系统控制方法,通过预先部署实现目标zns ssd的闪存转换层以及目标zns ssd分区存储管理功能的用户态管理模块,以及用于调用该用户态管理模块的用户空间文件系统接口,则可以自用户空间文件系统接口接收创建基于
zns ssd的文件系统的创建命令,并调用用户态管理模块完成对目标文件系统的创建;而在接收到对目标文件系统的系统调用命令时,调用用户态管理模块根据目标文件系统的元数据执行系统调用命令。由此本技术提供了一种基于zns ssd的用户态文件系统实现办法,无需用户升级到支持分区块驱动的内核版本,避免内核适配开发工作,即可实现利用zns ssd灵活定制客户化的文件系统,缩短开发周期,提高产品交付效率,乃至方便数据迁移。
22.本技术还提供一种基于zns ssd的文件系统控制装置、设备及计算机可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
23.为了更清楚的说明本技术实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
24.图1为本技术实施例提供的第一种基于zns ssd的文件系统控制方法的流程图;图2为本技术实施例提供的第二种基于zns ssd的文件系统控制方法的流程图;图3为本技术实施例提供的第三种基于zns ssd的文件系统控制方法的流程图;图4为本技术实施例提供的一种基于zns ssd的文件系统控制装置的结构示意图;图5为本技术实施例提供的另一种基于zns ssd的文件系统控制装置的结构示意图;图6为本技术实施例提供的第一种基于zns ssd的文件系统控制设备的结构示意图;图7为本技术实施例提供的第二种基于zns ssd的文件系统控制设备的结构示意图。
具体实施方式
25.本技术的核心是提供一种基于zns ssd的文件系统控制方法、装置、设备及计算机可读存储介质,实现基于zns ssd的用户态文件系统,避免内核适配开发工作,弥补不支持升级内核版本的用户灵活定制文件系统的需求。
26.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
27.实施例一图1为本技术实施例提供的第一种基于zns ssd的文件系统控制方法的流程图。
28.如图1所示,本技术实施例提供的基于zns ssd的文件系统控制方法具体包括:s101:预先部署基于用户空间文件系统(filesystems in user space,fuse)接口调用的用于实现目标zns ssd的闪存转换层以及对目标zns ssd的分区存储管理功能的用户态管理模块。
29.s102:当自用户空间文件系统接口接收到创建基于zns ssd的文件系统的创建命
令时,调用用户态管理模块,以根据创建命令加载目标文件系统的元数据、并确定目标文件系统与目标zns ssd的挂载点,将目标zns ssd挂载于目标文件系统以完成创建命令。
30.s103:当自用户空间文件系统接口接收到对目标文件系统的系统调用命令时,调用用户态管理模块以根据目标文件系统的元数据执行系统调用命令。
31.本技术实施例提供的基于zns ssd的文件系统控制方法可以应用于一台挂载有zns ssd的存储服务器或一个挂载有zns ssd的存储集群中。
32.对于s101来说,zns ssd相较于普通ssd的区别就在于zns ssd将闪存转换层由ssd内部迁移到了上层,从而可以由用户根据不同的需要来灵活定制闪存转换层,但是用户设备想要搭建文件系统或调用文件系统均需要支持分区块驱动的内核,换言之,当用户设备没有分区块驱动内核的情况下,就无法创建使用基于zns ssd的文件系统。对此本技术实施例提供的基于zns ssd的文件系统控制方法提供了另外一种创建及调用基于zns ssd的文件系统的方法,能够绕过内核开发适配工作。具体地,本技术实施例提供的基于zns ssd的文件系统控制方法通过预先部署用户空间文件系统接口及用户态管理模块,通过用户空间文件系统接口调用用户态管理模块的方式,使内核版本不支持分区块驱动的用户设备,能够在用户态操作zns ssd数据,实现对zns ssd的文件系统的创建与读写等基本功能。
33.在传统的ssd上,闪存转换层位于文件系统与闪存之间,为文件系统提供了虚拟的磁盘,可以使得ssd表现出类似磁盘的行为,从而使得面向磁盘开发的应用程序(比如数据库应用)不需要做任何修改,就可以直接运行在以ssd作为存储介质的存储系统上。而本技术实施例提供的基于zns ssd的文件系统控制方法为实现对zns ssd的用户态操作,预先部署的用户态管理模块需要实现目标zns ssd的闪存转换层功能,从而实现对文件系统到zns ssd的地址映射的控制等功能。
34.需要说明的是,由于zns ssd中逻辑区块地址(logical block addresses,lba)到物理区块地址(physical block addresses,pba)的对应关系是固定的,故本技术实施例提供的用户态管理模块只需管理目标文件系统文件地址与目标zns ssd对外提供的逻辑区块地址的映射关系即可。
35.同时,zns ssd的zns代表了主机软件和基于闪存的ssd之间一种新的功能划分,zns ssd将其容量划分为分区(zone),每个分区可以按照任意顺序读取,但必须按顺序写入,这些特性允许zns ssd改善其内部数据放置,从而通过更高的写吞吐量、更低的qos和更大的容量获得更高的性能。zns ssd中的分区管理除了每个分区对应一段固定的逻辑区块地址外,还包括每个分区的状态值,通常包括:空区(zse:empty)、隐式打开状态(zsio:implicitly opened)、只读状态(zsro:read only)、离线状态(zso:offline)、显式打开状态(zseo:explicitly opened)、关闭状态(zsc:closed)、满区(zsf:full),即zns ssd上的分区将处于这七种状态中的一种。在这七种状态中,空区(zse:empty)和满区(zsf:full)状态将被明显标识出来;只读状态(zsro:read only)和离线状态(zso:offline)是当前硬盘的闪存失败时使用的错误状态,在整个硬盘生命周期结束时才会出现,许多以分区存储为目标的软件不会对这些状态做任何事情,一旦一个分区进入其中一种状态,就会简单地将整个设备视为死机;处于隐式打开状态(zsio:implicitly opened)、显式打开状态(zseo:explicitly opened)和关闭状态(zsc:closed)这三种状态之一的分区被认为是活动的,在任何给定时间,硬盘往往会限制可以打开(显式或隐式)或活动区域的数量。产生这些限制
是因为活动区域或开放区域需要一些额外的跟踪信息。对于每个活动区域,硬盘需要跟踪写指针,该指针指示该区域已经使用了多少容量以及对该区域的下一次写操作将在何处进行。写指针对于满区或空区不需要,因为满区不能接受更多的写操作,空区将从区域的开头写入。
36.故在本技术实施例提供的基于zns ssd的文件系统控制方法中,预先部署的用户态管理模块还需要实现目标zns ssd的分区存储管理功能,以获取zns ssd的分区状态、实现对zns ssd的分区管理,在调用文件系统时确定将写数据写入哪个分区或在读数据时从哪个分区获取数据等。
37.此外,在目标zns ssd的分区存储管理功能中,需要对目标zns ssd的元数据进行维护。通常采用数据库功能对目标zns ssd的元数据进行维护。在本技术实施例中,目标文件系统的元数据具体可以包括:目标文件系统的目录信息,目标文件系统的文件信息,目标文件系统的目录项信息,目标文件系统中文件与目标zns ssd中zns盘的逻辑区块地址的对应关系,分区逻辑区块地址与文件的对应关系,目标zns ssd的zns盘信息,目标zns ssd的分区信息,目标zns ssd的分区中无效逻辑区块地址的信息,目标zns ssd中用于垃圾回收的预留分区的信息,目标zns ssd中可用分区的信息。
38.由此,本技术实施例提供的用户态管理模块替换原本需要在内核实现的分区块驱动的功能,实现对zns ssd的用户态管理。
39.在完成上述部署后之后,对于s102来说,用户可以基于内核版本不支持分区块驱动的用户设备选择创建基于zns ssd的文件系统,用户设备根据用户的创建请求,调用预先部署的用户空间文件系统接口,进而调用设于目标zns ssd的存储系统的用户态管理模块加载用户所需要创建的目标文件系统的元数据(在首次创建文件系统时,需要生成如文件目录等元数据,在已有文件系统时,则加载关联的已有文件系统的元数据),确定可以分配给目标文件系统的目标zns ssd,将目标zns ssd挂载于目标文件系统,完成对目标文件系统的创建。
40.对于s103来说,当用户需要访问目标文件系统以进行读写数据等操作时,用户设备根据用户的调用请求生成系统调用命令,调用用户空间文件系统接口,进而调用用户态管理模块,以将系统调用命令转换为对目标zns ssd的操作,完成用户所需对目标文件系统的操作。
41.本技术实施例提供的基于zns ssd的文件系统控制方法,通过预先部署实现目标zns ssd的闪存转换层以及目标zns ssd分区存储管理功能的用户态管理模块,以及用于调用该用户态管理模块的用户空间文件系统接口,则可以自用户空间文件系统接口接收创建基于zns ssd的文件系统的创建命令,并调用用户态管理模块完成对目标文件系统的创建;而在接收到对目标文件系统的系统调用命令时,调用用户态管理模块根据目标文件系统的元数据执行系统调用命令。由此本技术实施例提供了一种基于zns ssd的用户态文件系统实现办法,无需用户升级到支持分区块驱动的内核版本,避免内核适配开发工作,即可实现利用zns ssd灵活定制客户化的文件系统,缩短开发周期,提高产品交付效率,乃至方便数据迁移。
42.实施例二在上述实施例的基础上,在本技术实施例提供的基于zns ssd的文件系统控制方
法中,为提高访问目标文件系统时的性能,优选采用非关系型数据库(not only sql,nosql)来维护目标文件系统的元数据。则通过预先基于非关系型数据库生成并管理文件系统的元数据,s102中根据创建命令加载目标文件系统的元数据,具体可以为:调用非关系型数据库以根据创建命令加载文件系统元数据。
43.进一步的,选用的非关系型数据库可以为远程字典服务数据库(remote dictionary server,redis),利用远程字典服务数据库的关键字-值(key-value)的结构特点,便于以文件、目录为中心,维护文件和目录的相关信息。
44.可以理解的是,根据用户定制文件系统的功能不同,可以选择不同类型的数据库以满足高效管理元数据的需求。
45.以采用远程字典服务数据库为例,则本技术实施例提供一种数据结构规划如表1所示。
46.表1 目标zns ssd的元数据数据库结构
实施例三在上述实施例的基础上,本技术实施例进一步对用户态管理模块进行说明。
47.用户态管理模块是一个多进程程序,启动程序需要的配置参数至少包括与数据库的连接信息、挂载文件系统的目录路径、目标zns ssd的设备信息等。
48.在本技术实施例提供的基于zns ssd的文件系统控制方法中,s101:预先部署基于用户空间文件系统接口调用的用于实现目标zns ssd的闪存转换层以及对目标zns ssd的分区存储管理功能的用户态管理模块,具体可以包括:检验目标zns ssd的可用状态、用于存储元数据的数据库的可用状态、文件系统挂载目录的可用状态以及文件系统挂载目录所包含的文件状态,并对目标zns ssd进行信息校验;若目标zns ssd可用、数据库可用、文件系统挂载目录可用且文件系统挂载目录下包含文件信息,且目标zns ssd通过信息校验,则启动垃圾回收线程、分区监控线程和文件服务进程;其中,垃圾回收线程用于执行对目标zns ssd的分区回收任务;分区监控线程用于
执行对目标zns ssd的分区标识更新任务;文件服务进程用于执行用户空间文件系统接口对外提供的zns ssd文件系统的业务逻辑。
49.在具体实施中,用户态管理模块的启动过程可以包括:初始化、zns ssd盘信息校验、启动垃圾回收线程、启动分区监控线程、启动文件服务进程几个步骤。
50.其中,首先进行用户态管理模块的初始化过程,初始化目标zns ssd的相关设备和相关文件,判断各设备和文件是否可用。根据目标zns ssd的设备信息,查询设备是否可用,如果不可用,则程序退出。检验存储元数据的数据库(远程字典服务数据库)是否正常连接,如果不能正常连接,则程序退出。判断文件系统挂载目录是否可用,如果不可用,则程序退出。若文件系统挂载目录可用,判断文件系统挂载目录下是否已包含文件等信息,如果不包含,则提示信息错误,程序退出。
51.而后进行目标zns ssd的信息校验,具体为校验目标zns ssd中的zns盘的信息。对目标zns ssd进行信息校验,具体包括:自数据库查询目标zns ssd的zns盘信息;若无法获取zns盘信息,则基于目标zns ssd构造zns盘信息;若获取到zns盘信息,则对zns盘信息进行信息校验;若zns盘信息通过信息校验,则确认目标zns ssd通过信息校验;若zns盘信息未通过信息校验或zns盘信息构造失败,则确认目标zns ssd未通过信息校验。
52.在远程字典服务数据库中,目标zns ssd的zns盘信息对应的关键字key为zns:sn。如果查询不到zns盘信息,则提示用户“是否初始化盘信息”,如果用户不同意初始化,则程序退出;如果用户同意初始化,则执行构造zns盘信息的步骤。基于目标zns ssd构造zns盘信息,具体可以包括:根据预设配置参数中的预设zns盘信息,对目标zns ssd下发识别(identify)指令获取目标zns ssd的zns盘序列号,以构造zns盘序列号数据(在数据库中对应的关键字key:zns:sn);根据预设zns盘信息,对目标zns ssd下发报告分区(report-zone)指令获取目标zns ssd的zns盘分区信息,以构造分区标识数据(在数据库中对应的关键字key:zone:id);以zns盘序列号数据和分区标识数据为zns盘信息。
53.其中,预设配置参数来源于用户态管理模块中预先编写的程序。
54.如果查询到了zns盘信息,或构造出了zns盘信息,则执行对zns盘信息进行信息校验的步骤。
55.对zns盘信息进行信息校验,具体包括:根据预设配置参数中的预设zns盘信息,对目标zns ssd下发识别(identify)指令获取目标zns ssd的zns盘序列号;根据预设zns盘信息,对目标zns ssd下发报告分区(report-zone)指令获取目标zns ssd的zns盘分区信息;若zns盘信息中的zns盘序列号数据(在数据库中对应的关键字key:zns:sn)与zns盘序列号一致,且zns盘信息中的分区标识数据(在数据库中对应的关键字key:zone:id)与zns盘分区信息一致,则确认zns盘信息通过信息校验;
若zns盘信息中的zns盘序列号数据(在数据库中对应的关键字key:zns:sn)与zns盘序列号不一致,和/或zns盘信息中的分区标识数据(在数据库中对应的关键字key:zone:id)与zns盘分区信息不一致,则确认zns盘信息未通过信息校验。
56.对zns盘信息进行校验,首先是从目标zns ssd获取真实的zns盘信息,再与从数据库中查询到的zns盘信息进行对比,如果一致则目标zns ssd的zns盘信息通过信息校验,如果不一致则目标zns ssd的zns盘信息未通过信息校验。
57.当执行外对目标zns ssd的初始化过程以及通过对目标zns ssd的信息校验,则可以顺次或分别执行启动垃圾回收线程、启动分区监控线程、启动文件服务进程的步骤。
58.其中,垃圾回收线程执行对目标zns ssd的分区回收任务,具体可以包括:每间隔第一指定时间段,根据目标zns ssd中zns盘的可使用数据量以及目标zns ssd中的可用分区数判断是否需要回收分区;若需要回收分区,则根据目标zns ssd的分区中无效逻辑区块地址的信息以及各无效分区中逻辑区块地址的数量选定待回收分区;执行对待回收分区的有效数据的数据迁移操作后,对待回收分区进行初始化以及状态更新。
59.启动垃圾回收线程,首先启动定时器,每隔第一指定时间段,结合目标zns ssd中zns盘的可使用数据量以及目标zns ssd中的可用分区数等信息判断是否需要回收分区。如果需要回收分区,则可以根据目标zns ssd的分区中无效逻辑区块地址的信息(在数据库中对应的关键字key:zone:id:discard)挑选无效逻辑区块地址个数多的分区进行数据回收,该分区即为待回收分区。在待回收分区的候选分区列表(在数据库中对应的关键字key:op:zone)中选择一个新的分区,该分区即为待回收分区的目标分区。将待回收分区中的有效数据搬移至目标分区,并更新远程字典服务数据库中的关键字文件与zns盘的逻辑区块地址lba的对应关系(在数据库中对应的关键字key:l2p:文件路径)和关键字分区逻辑区块地址lba与文件的对应关系(在数据库中对应的关键字key:zoneid:lba:offset:size)。在将待回收分区的有效数据搬移至目标分区后,对待回收分区进行初始化,并放入候选分区列表中,更新分区状态信息(在数据库中对应的关键字key:zone:id)。
60.分区监控线程执行对目标zns ssd的分区标识更新任务,具体可以包括:每间隔第二指定时间段,对目标zns ssd下发报告分区(report-zone)指令以获取目标zns ssd的最新分区状态,并根据最新分区状态更新数据库中的分区标识数据(在数据库中对应的关键字key:zone:id);对目标zns ssd下发获取日志(logpage)命令,以获取目标zns ssd的硬盘日志中的zns盘信息,并根据zns盘信息更新数据库中的分区标识数据(在数据库中对应的关键字key:zone:id)。
61.其中,具体在目标zns ssd的硬盘日志中获取smart字段、错误(error)字段、已更新分区列表(changed zone list)等信息,并根据获取的信息更新数据库中对应的分区标识数据(在数据库中对应的关键字key:zone:id)。
62.启动文件服务进程,来实现用户空间文件系统(fuse)接口对外提供服务的业务逻辑,对基于目标zns ssd的目标文件系统进行文件、目录进行增删改查。
63.其中,对目标文件系统中的目录增删改查,具体包括更新对应的文件或者目录路
径(在数据库中对应的关键字key:文件或者目录路径)、目录项信息(在数据库中对应的关键字key:set:目录路径)等。
64.对目标文件系统中的文件增删改查,具体包括:文件读操作,查询文件与zns盘的逻辑区块地址lba的对应关系(在数据库中对应的关键字key:l2p:文件路径),按照顺序对目标zns ssd下发读操作,如果读失败,返回错误,否则返回对应的用户数据;文件新建或者追加数据操作,从当前可用的分区列表(在数据库中对应的关键字key:active:zone)中获取1个可用分区,查询对应wp,即获取到新的逻辑区块地址,将文件数据下发到目标zns ssd的zns盘上对应的逻辑区块地址上;并更新文件与zns盘的逻辑区块地址lba的对应关系(在数据库中对应的关键字key:l2p:文件路径)、分区逻辑区块地址lba与文件的对应关系(在数据库中对应的关键字key:zoneid:lba:offset:size);如果当前分区的容量使用完,需要再次从当前可用的分区列表(在数据库中对应的关键字key:active:zone)中获取1个新的分区信息,更新上个分区的状态关键字key“分区标识”(zone:id),数据同上面操作更新文件与zns盘的逻辑区块地址lba的对应关系(在数据库中对应的关键字key:l2p:文件路径)、分区逻辑区块地址lba与文件的对应关系(在数据库中对应的关键字key:zoneid:lba:offset:size),重复上面操作,直到所有用户数据下发完毕;如果当前可用的分区列表(在数据库中对应的关键字key:active:zone)中无数据,从候选分区列表(在数据库中对应的关键字key:op:zone)中获取新的分区,并放入当前可用的分区列表(在数据库中对应的关键字key:active:zone)中;文件修改操作,首先查询文件与zns盘的逻辑区块地址lba的对应关系(在数据库中对应的关键字key:l2p:文件路径)获取修改的逻辑区块地址lba a;申请新的逻辑区块地址lba b用于存放新数据,将新数据下发到目标zns ssd盘上对应的lba b上,并用lba b更新文件与zns盘的逻辑区块地址lba的对应关系(在数据库中对应的关键字key:l2p:文件路径),分区逻辑区块地址lba与文件的对应关系(在数据库中对应的关键字key:zoneid:lba:offset:size);将lba a的地址添加到分区中无效逻辑区块地址lba的信息(在数据库中对应的关键字key:zone:id:discard);查询文件信息,返回文件信息或目录信息(在数据库中对应的关键字key:文件或者目录路径)对应的数据。
65.需要说明的是,上述步骤为对用户态管理模块执行对目标文件系统中的文件增删改查的原理进行说明,这些步骤之间不存在顺序关系。
66.实施例四图2为本技术实施例提供的第二种基于zns ssd的文件系统控制方法的流程图。
67.在上述实施例的基础上,在本技术实施例提供的基于zns ssd的文件系统控制方法中,s102中调用用户态管理模块根据目标文件系统的元数据执行系统调用命令,具体可以包括:根据系统调用命令读取目标元数据;根据目标元数据检验系统调用命令的合法性;如果系统调用命令合法,则执行系统调用命令;如果系统调用命令不合法,则返回系统调用失败的信息。
ssd中对应的逻辑区块地址当前处于不可写状态时,则禁止执行写数据的系统调用。
75.为加快响应,本技术实施例提供的基于zns ssd的文件系统控制方法还可以包括:判断系统调用命令是否包含操作用户数据命令;如果不包含,则返回系统调用成功的信息;如果包含,则进入根据目标元数据检验系统调用命令的合法性的步骤。
76.即是说,在检验系统调用命令的合法性之前,可以先查看系统调用命令是否包含操作用户数据命令,即是否需要访问目标zns ssd,如果需要再检验系统调用命令的合法性,如果不需要则无需访问目标zns ssd。例如当用户只需要访问目标文件系统的元数据时,则无需进行判断系统调用命令是否合法的步骤。
77.而在系统调用命令包含操作用户数据命令时,则进一步在确认系统调用命令的合法性后,再访问目标zns ssd对用户数据进行操作。则s102中执行系统调用命令,具体为:根据系统调用命令,对目标zns ssd的目标访问分区执行操作用户数据命令。
78.进一步的,为使操作流畅,在本技术实施例提供的基于zns ssd的文件系统控制方法中,在执行系统调用命令之后,还包括:判断系统调用命令是否执行成功;如果是,则返回与系统调用命令对应的用户数据以及系统调用成功的信息;如果否,则返回系统调用失败的信息。
79.通过检验系统调用命令是否成功执行后,向用户设备反馈相应的系统调用成功的信息或系统调用失败的信息,便于用户查看对基于zns ssd的目标文件系统的调用结果。
80.在上述可选实施方式的基础上,本技术实施例提供一种优选的基于zns ssd的文件系统控制方法,如图2所示,包括:s201:当自预设的用户空间文件系统接口接收到创建基于zns ssd的文件系统的创建命令时,启动数据库,加载目标文件系统的元数据。
81.s202:调用用户态管理模块,确定目标文件系统与目标zns ssd的挂载点,将目标zns ssd挂载于目标文件系统以完成创建命令。
82.s203:循环等待系统调用。
83.s204:当接收到基于用户空间文件系统接口的对目标文件系统的系统调用命令后,调用用户态管理模块读取目标文件系统的元数据,判断是否成功读取目标文件系统的元数据;如果是,则进入s205;如果否,则进入s212。
84.s205:判断系统调用命令是否包含操作用户数据命令;如果是,则进入s206,如果否,则进入s207;s206:查询数据库获取目标zns ssd中的目标访问分区的信息和对应的逻辑区块地址,进入s208。
85.s207:返回目标文件系统的元数据和系统调用成功的信息。
86.s208:根据目标访问分区的分区状态判断操作用户数据命令(系统调用命令)是否合法;如果是,则进入s209;如果否,则进入s212。
87.s209:对目标zns ssd的目标访问分区执行操作用户数据命令。
88.s210:判断系统调用命令是否执行成功;如果是,则进入s211;如果否,则进入s212。
89.s211:返回与系统调用命令对应的用户数据以及系统调用成功的信息。
90.s212:返回系统调用失败的信息。
91.该优选的基于zns ssd的文件系统控制方法的具体实施方式可以参考上文所述,在此不再赘述。
92.实施例五图3为本技术实施例提供的第三种基于zns ssd的文件系统控制方法的流程图。
93.基于上述实施例可以看到基于存储服务器为不具备分区块驱动内核的用户设备提供基于zns ssd的用户态文件系统的实现方法,而本技术实施例提供一种基于该用户设备实现的基于zns ssd的文件系统控制方法,如图3所示,包括:s301:当接收到创建基于zns ssd的文件系统的创建请求时,根据创建请求生成基于预设的用户空间文件系统接口调用文件系统服务器预先部署的用户态管理模块的创建命令,以使文件系统服务器根据创建命令加载目标文件系统的元数据、并确定目标文件系统与目标zns ssd的挂载点,将目标zns ssd挂载于目标文件系统以完成创建命令。
94.s302:当接收到对目标文件系统的用户操作请求后,根据用户操作请求生成基于用户空间文件系统接口的系统调用命令,以基于用户空间文件系统接口调用用户态管理模块执行系统调用命令。
95.其中,用户态管理模块用于实现目标zns ssd的闪存转换层以及目标zns ssd的分区存储管理功能。
96.在具体实施中,当用户在用户设备上操作想要创建或访问基于zns ssd的文件系统,通过预先部署的转换脚本,将创建请求转换为创建命令,将用户操作请求转换为系统调用命令,并通过预先部署的用户空间文件系统接口调用文件系统服务器预先部署的用户态管理模块,实现基于zns ssd的用户态文件系统,弥补现有技术中不具备分区块驱动内核的用户设备无法提供基于zns ssd的文件系统的技术空白。
97.上文详述了基于zns ssd的文件系统控制方法对应的各个实施例,在此基础上,本技术还公开了与上述方法对应的基于zns ssd的文件系统控制装置、设备及计算机可读存储介质。
98.实施例六图4为本技术实施例提供的一种基于zns ssd的文件系统控制装置的结构示意图。
99.如图4所示,本技术实施例提供的基于zns ssd的文件系统控制装置包括:部署单元401,用于预先部署基于用户空间文件系统接口调用的用于实现目标zns ssd的闪存转换层以及对所述目标zns ssd的分区存储管理功能的用户态管理模块;第一创建单元402,用于当自用户空间文件系统接口接收到创建基于zns ssd的文件系统的创建命令时,调用用户态管理模块,以根据创建命令加载目标文件系统的元数据、并确定目标文件系统与目标zns ssd的挂载点,将目标zns ssd挂载于目标文件系统以完成创建命令;第一调用单元403,用于当自用户空间文件系统接口接收到对目标文件系统的系统调用命令时,调用用户态管理模块以根据目标文件系统的元数据执行系统调用命令。
100.由于装置部分的实施例六与方法部分的实施例一至四相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
101.实施例七图5为本技术实施例提供的另一种基于zns ssd的文件系统控制装置的结构示意图。
102.如图5所示,本技术实施例提供的基于zns ssd的文件系统控制装置包括:第二创建单元501,用于当接收到创建基于zns ssd的文件系统的创建请求时,根据创建请求生成基于预设的用户空间文件系统接口调用文件系统服务器预先部署的用户态管理模块的创建命令,以使文件系统服务器根据创建命令加载目标文件系统的元数据、并确定目标文件系统与目标zns ssd的挂载点,将目标zns ssd挂载于目标文件系统以完成创建命令;第二调用单元502,用于当接收到对目标文件系统的用户操作请求后,根据用户操作请求生成基于用户空间文件系统接口的系统调用命令,以基于用户空间文件系统接口调用用户态管理模块执行系统调用命令;其中,用户态管理模块用于实现目标zns ssd的闪存转换层以及目标zns ssd的分区存储管理功能。
103.由于装置部分的实施例七与方法部分的实施例五相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
104.实施例八图6为本技术实施例提供的第一种基于zns ssd的文件系统控制设备的结构示意图。
105.如图6所示,应用于挂载有zns ssd的存储系统,本技术实施例提供的第一种基于zns ssd的文件系统控制设备包括:存储器610,用于存储计算机程序611;处理器620,用于执行计算机程序611,该计算机程序611被处理器620执行时实现如上述实施例一至实施例四中任意实施方案提供的所述基于zns ssd的文件系统控制方法的步骤。
106.其中,处理器620可以包括一个或多个处理核心,比如3核心处理器、8核心处理器等。处理器620可以采用数字信号处理dsp(digital signal processing)、现场可编程门阵列fpga(field-programmable gate array)、可编程逻辑阵列pla(programmable logic array)中的至少一种硬件形式来实现。处理器620也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器cpu(central processing unit);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器620可以集成有图像处理器gpu(graphics processing unit),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器620还可以包括人工智能ai(artificial intelligence)处理器,该ai处理器用于处理有关机器学习的计算操作。
107.存储器610可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器610还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器610至少用于存储以下计算机程序611,其中,该计算机程序611被处理器620加载并执行之后,能够实现前述任一实施例公
开的基于zns ssd的文件系统控制方法中的相关步骤。另外,存储器610所存储的资源还可以包括操作系统612和数据613等,存储方式可以是短暂存储或者永久存储。其中,操作系统612可以为windows。数据613可以包括但不限于上述方法所涉及到的数据。
108.在一些实施例中,基于zns ssd的文件系统控制设备还可包括有显示屏630、电源640、通信接口650、输入输出接口660、传感器670以及通信总线680。
109.本领域技术人员可以理解,图6中示出的结构并不构成对基于zns ssd的文件系统控制设备的限定,可以包括比图示更多或更少的组件。
110.本技术实施例提供的基于zns ssd的文件系统控制设备,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如上所述的基于zns ssd的文件系统控制方法,效果同上。
111.实施例九图7为本技术实施例提供的第二种基于zns ssd的文件系统控制设备的结构示意图。
112.如图7所示,应用于用户设备侧,本技术实施例提供的第二种基于zns ssd的文件系统控制设备包括:存储器710,用于存储计算机程序711;处理器720,用于执行计算机程序711,该计算机程序711被处理器720执行时实现如上述实施例五提供的所述基于zns ssd的文件系统控制方法的步骤。
113.其中,处理器720可以包括一个或多个处理核心,比如3核心处理器、8核心处理器等。处理器720可以采用数字信号处理dsp(digital signal processing)、现场可编程门阵列fpga(field-programmable gate array)、可编程逻辑阵列pla(programmable logic array)中的至少一种硬件形式来实现。处理器720也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器cpu(central processing unit);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器720可以集成有图像处理器gpu(graphics processing unit),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器720还可以包括人工智能ai(artificial intelligence)处理器,该ai处理器用于处理有关机器学习的计算操作。
114.存储器710可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器710还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器710至少用于存储以下计算机程序711,其中,该计算机程序711被处理器720加载并执行之后,能够实现前述任一实施例公开的基于zns ssd的文件系统控制方法中的相关步骤。另外,存储器710所存储的资源还可以包括操作系统712和数据713等,存储方式可以是短暂存储或者永久存储。其中,操作系统712可以为windows。数据713可以包括但不限于上述方法所涉及到的数据。
115.在一些实施例中,基于zns ssd的文件系统控制设备还可包括有显示屏730、电源740、通信接口750、输入输出接口760、传感器770以及通信总线780。
116.本领域技术人员可以理解,图7中示出的结构并不构成对基于zns ssd的文件系统控制设备的限定,可以包括比图示更多或更少的组件。
117.本技术实施例提供的基于zns ssd的文件系统控制设备,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如上所述的基于zns ssd的文件系统控制方法,效果同上。
118.实施例十需要说明的是,以上所描述的装置、设备实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
119.另外,在本技术各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
120.集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本技术各个实施例所述方法的全部或部分步骤。
121.为此,本技术实施例还提供一种计算机可读存储介质,应用于挂载有zns ssd的存储系统,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如本技术实施例一至实施例四的任意方案中提供的基于zns ssd的文件系统控制方法的步骤。
122.或者,本技术实施例还提供一种计算机可读存储介质,应用于用户设备侧,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如本技术实施例五提供的基于zns ssd的文件系统控制方法的步骤。
123.该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器rom(read-only memory)、随机存取存储器ram(random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
124.本实施例中提供的计算机可读存储介质所包含的计算机程序能够在被处理器执行时实现如上所述的基于zns ssd的文件系统控制方法的步骤,效果同上。
125.以上对本技术所提供的一种基于zns ssd的文件系统控制方法、装置、设备及计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
126.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献