元数据管理方法、电子设备及计算机程序产品与流程

    专利查询2022-07-07  276

    1.本技术涉及云存储
    技术领域
    :,特别涉及一种元数据管理方法、电子设备及计算机程序产品。
    背景技术
    ::2.目前,主流的存储类型主要有三种:块存储、文件存储和对象存储。其中,对象存储有着块存储的高速直接访问磁盘的优点,同时兼具文件存储的分布式共享特点。因此,对象存储正逐渐在云计算存储服务领域占据越来越重要的地位。3.对象存储本质上是网络存储系统,一般通过应用程序接口(applicationprogramminginterface,api)的形式进行访问。但是,普通用户很难通过写代码调用api的形式访问对象存储系统。s3fs是google开发的一款支持将对象存储中的存储桶(bucket)以文件形式导出的文件系统接口,兼容可移植操作系统接口(portableoperatingsysteminterface,posix)语义。s3fs是基于用户空间文件系统(filesysteminuserspace,fuse)开发文件系统,允许linux和macosx挂载s3的存储桶在本地文件系统,s3fs能够保持对象原来的格式。因此,可借助s3fs系统来实现将对象存储转换为文件存储,这样一来,普通用户就可以像访问文件存储系统一样访问对象存储系统。4.当用户操作文件时产生用于请求元数据的访问请求,部署了s3fs服务的设备接收到访问请求后,先判断内存中是否存在请求的元数据。若内存中没有,则通过网络从s3云端请求元数据。5.然而,文件存储系统的日常使用中,用户对文件的大量操作产生大量的访问请求,使得元数据的访问和更新十分频繁。由于部署了s3fs服务的设备的内存空间有限,导致s3fs服务需频繁从s3云端获取元数据,不仅响应速度慢,耗费大量资源,而且当s3云端无法正常访问时,也会导致s3fs服务无法处理用户请求,影响用户体验。技术实现要素:6.本技术提供一种元数据管理方法、电子设备及可读存储介质,通过将元数据存储在本地的持久化数据库中,减少s3fs服务和s3云端的交互,提高响应速度的同时,降低资源消耗。7.第一方面,本技术实施例提供一种元数据管理方法,应用于s3fs服务,所述方法包括:8.从s3云端获取挂载的存储桶内的元数据;9.将所述存储桶内的元数据写入持久化数据库,所述持久化数据库是为所述s3fs服务创建的用于保存元数据的本地数据库。10.一种可行的实现方式中,所述从s3云端获取挂载的存储桶内的元数据,包括:向所述s3云端发送获取请求,以请求获取所述存储桶对应的文件信息列表;11.接收来自所述s3云端的获取响应,所述获取响应携带所述文件信息列表;12.将所述文件信息列表发布到多线程请求队列中,以通过所述多线程请求队列中的线程请求所述文件信息列表中各文件的元数据,并将请求到的元数据写入所述数据库。13.一种可行的实现方式中,所述将所述存储桶内的元数据写入持久化数据库之后,还包括:14.处理用户发送的文件访问请求;15.若所述文件访问请求触发了元数据的更新操作,则更新所述持久化数据库以及本地内存中对应的元数据;16.向所述用户发送文件访问响应。17.一种可行的实现方式中,所述更新所述持久化数据库以及本地内存中对应的元数据,包括:18.当所述更新操作为新增时,生成新的元数据;19.将所述新的元数据写入所述持久化数据库以及本地内存。20.一种可行的实现方式中,所述更新所述持久化数据库以及本地内存中对应的元数据,包括:21.当所述更新操作为修改时,从所述持久化数据库中查询出待修改的元数据并修改后,对本地内存中的所述待修改的元数据进行修改。22.一种可行的实现方式中,所述更新所述持久化数据库以及本地内存中对应的元数据,包括:23.当所述更新操作为删除时,从本地内存中删除待删除的元数据后,从所述持久化数据库中删除所述待删除的元数据。24.一种可行的实现方式中,所述更新所述持久化数据库以及本地内存中对应的元数据之后,还包括:25.记录所述元数据的更新操作;26.基于所述记录将所述元数据的更新操作同步至所述s3云端。27.一种可行的实现方式中,所述基于所述记录将所述元数据的更新操作同步至所述s3云端,包括:28.在将所述文件访问请求对应的文件更新操作同步至所述s3云端的同时,基于所述记录将所述元数据的更新操作同步至所述s3云端。29.一种可行的实现方式中,所述基于所述记录将所述元数据的更新操作同步至所述s3云端,包括:30.根据预设元数据同步周期,将所述记录中未同步的所述元数据的更新操作同步至所述s3云端。31.一种可行的实现方式中,当所述s3fs服务是重新部署的s3fs服务时,所述挂载的存储桶是重新部署s3fs服务之前,所述s3fs服务已挂载的存储桶。32.一种可行的实现方式中,所述从s3云端获取挂载的存储桶内的元数据之前,还包括:33.清空所述持久化数据库。34.一种可行的实现方式中,当所述s3fs服务是初始部署的s3fs服务时,所述挂载的存储桶是所述s3fs服务初始挂载的存储桶。35.第二方面,本技术实施例提供一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时使得所述电子设备实现如上第一方面或第一方面各种可能的实现方式所述的方法。36.第三方面,本技术实施例提供一种包含计算程序的计算机程序产品,所述计算机程序被处理器执行时实现如上第一方面或第一方面各种可能的实现方式所述的方法。37.本技术实施例提供的元数据管理方法、电子设备及计算机程序产品,s3fs服务预先获取s3云端的存储桶内每个对象的元数据,把各对象的元数据写入s3fs服务的持久化数据库。采用该种方案,通过将元数据存储在持久化数据库中,使得用户通过s3fs服务操作文件的过程中,s3fs服务可直接基于本地存储的元数据,对访问请求进行处理,无需从s3云端获取元数据,降低了s3fs服务和s3云端的交互次数,提高响应速度的同时,降低资源消耗,并提高网络可靠性。附图说明38.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。39.图1是本技术实施例提供的元数据管理方法的网络架构示意图;40.图2是本技术实施例提供的元数据管理方法的流程图;41.图3是本技术实施例提供的元数据管理方法的另一个流程图;42.图4为本技术实施例提供的一种电子设备的结构示意图。具体实施方式43.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。44.现有的s3fs服务仅将元数据缓存在内存中,由于部署了s3fs服务的设备的内存空间有限,导致大量的访问请求对应的元数据都要从s3云端设备获取。s3fs服务和s3云端交互频繁,响应速度慢,且耗费大量资源。而且,当s3fs服务与s3云端设备之间的网络异常时,则无法获取到元数据,导致对象存储转换成的文件存储不可用,进而导致用户操作失败。45.基于此,本技术实施例提供一种元数据管理方法、电子设备及计算机程序产品,通过对s3fs服务进行改造,使得改造后的s3fs服务可将元数据存储在持久化数据库中,减少s3fs服务和s3云端的交互,提高响应速度的同时,降低资源消耗,并提高网络可靠性。46.本技术实施例相关名词解释如下:47.存储桶(bucket):用户用来管理存储对象的存储空间,类似于文件存储系统里面的根目录或磁盘分区,对象存储系统通过存储桶来管理对象。48.文件存储系统:一种存储和组织计算机数据的方法,它使得对其存取和查找变得容易。文件存储系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件存储系统来保存数据只需要记住这个文件的所属目录和文件名。49.元数据:用于描述数据的数据,主要是描述文件的属性,如文件的属主、权限、修改时间、创建时间等。50.文件:可以称之为数据,每个文件有自己的元数据。本技术实施例中,文件存储系统存储的数据称之为文件,对象存储系统存储的数据称之为对象。可以理解的是,同一份数据即可基于文件进行管理,也可基于对象进行管理,用户对文件的操作,可以转换为用户对对象的操作。例如,用户新增一个文件,相当于新增一个对象;用户删除一个文件,相当于删除一个对象。51.持久化数据库:指为s3fs服务创建的持久化数据库,该数据库是一个能够持久化保存的数据库,可以基于rocksdb、redis或其他类型的数据库技术实现,用于保存用户像访问文件存储系统时访问对象存储系统的过程中涉及的元数据,它区别于内存,需创建在磁盘上。一般而言,在使用本技术的技术方案时,需要预先为s3fs服务划分磁盘空间,如在设备上添加新的磁盘,以用于为s3fs服务的持久化数据库存储数据。52.云计算里,存储类型相关的术语通常为文件存储、对象存储等,一般不称作文件存储系统、对象存储系统。可以理解的是,将对象存储转换为文件存储,是指将基于对象存储系统进行管理的对象数据转换为基于文件存储系统进行管理的文件数据。下文中若未做特殊说明,对象存储等同于对象存储系统,文件存储等同于文件存储系统。53.图1是本技术实施例提供的元数据管理方法的网络架构示意图。请参照图1,该网络架构包括s3fs服务11和s3云端12。s3fs服务11部署在终端设备或网关等设备上,用户可通过s3fs服务以文件的形式访问数据。当一个s3fs服务11挂载了对象存储中的存储桶后,用户就可以像访问文件一样访问存储桶中的对象。54.s3云端12是提供简易存储服务(simplestorageservice,s3)的平台,可以部署在云端的服务器或服务器集群,以存储桶的形式管理对象数据,换言之,s3云端以对象存储的方式对数据进行存储。55.下面,基于图1所示实施环境,对本技术实施例提供的元数据管理方法进行详细说明。示例性的,请参照图2。56.图2是本技术实施例提供的元数据管理方法的流程图。本实施例是从s3fs服务的角度进行说明。本实施例包括:57.201、从s3云端获取挂载的存储桶内的元数据。58.202、将所述存储桶内的元数据写入持久化数据库,所述持久化数据库是为所述s3fs服务创建的用于保存元数据的本地数据库。59.在实施中,持久化数据库创建在本地磁盘上,可用于数据的持久化存储,是区别于内存的缓存方式,s3fs将从s3云端获取的元数据写入持久化数据库中,进行持久化存储。因此,采用本技术实施例提供的元数据管理方法,在用户使用过程中,直接基于本地持久化数据库即可获得元数据,无需频繁从s3云端获取元数据,大幅降低了s3fs服务和s3云端的交互次数,提升了访问响应速度的同时,降低资源消耗,同时也避免了网络等其他因素对访问处理的影响。尤其是在大文件的使用场景下,可明显提升处理效率。60.在实施中,一个s3fs服务挂载一个存储桶,当需要对多个存储桶中的对象进行操作时,可在设备上部署多个s3fs服务,s3fs服务将挂载的存储桶中的对象以文件的形式展示给用户,以供用户进行操作。61.为了快速地对用户访问请求进行响应,本技术的实施例中,s3fs服务在启动过程中可预先从s3云端获取挂载的存储桶相关的元数据,即在正常处理用户访问请求前,预先完成元数据的全量同步。如图3所示,图3是本技术实施例提供的元数据管理方法的另一个流程图。本实施例从s3fs服务的角度进行说明。本实施例包括:62.301、s3fs服务在挂载时,确定是否需要进行全量同步,若需要全量同步,则执行步骤302;否则执行步骤305。63.在实施中,s3fs服务在启动过程中需进行存储桶的挂载,以实现将该存储桶内的对象数据用文件的方式提供给用户操作。一般而言,需要全量同步情形包含两种:初始挂载存量存储桶和重新部署用于同一个存储桶的s3fs服务,其中,初始挂载是指s3fs服务首次挂载存储桶;重新部署用于同一个存储桶的s3fs服务是指:先前已部署过s3fs服务,并完成了存储桶的挂载,当因设备异常等原因需要重新部署且该服务挂载的存储桶不变。换言之,在启动过程中,当s3fs服务所挂载的存储桶内有存量数据时,则需要预先从云端获取该存储桶中的全部元数据并写入持久化数据库,使得用户访问请求达到时,可直接基于数据库中的元数据进行响应。可以理解的是,全量同步的过程就是s3fs重建数据库的过程。64.示例性的,s3fs服务可直接根据技术人员配置信息来确定是否需要全量同步,技术人员可根据s3fs挂载的存储桶内是否有存量数据来设置配置信息,并启动s3fs服务。65.302、清空持久化数据库。66.在挂载的过程中,s3fs服务会在本地磁盘创建持久化数据库,用于元数据的缓存。在实施中,创建持久化数据库就是open一个数据库,数据库的名称是可以重复的,如果创建的目录下已创建过相同名称的数据库,那么就相当于打开了旧的数据库,旧的数据库中会有残留的数据,为了防止数据库残留的旧数据对后续的操作产生影响,可在创建持久化数据库后,全量同步前,将持久化数据库清空。67.采用该种方案,全量同步前清空持久化数据库,确保全量同步后持久化数据库内的元数据都是同一个存储桶内各对象的元数据,而不存在其他对象的元数据或存有先前的旧数据,保证同步过程中不会出错,提升数据可靠性高。68.303、从s3云端拉取挂载的存储桶内的元数据。69.当存储桶内的对象比较多、元数据比较多时,s3fs服务多次从s3云端拉取元数据并写入持久化数据库,重复多次直到获取到全部元数据。70.304、将各对象的元数据写入持久化数据库。71.在一较佳实施例中,s3fs服务通过多个线程从s3云端同步拉取元数据,每个线程负责存储桶内不同文件的元数据并将获取到的元数据写入持久化数据库中,一个线程可以负责一个或多个文件。72.可选的,上述实施例中,s3fs服务从s3云端获取挂载的存储桶内的元数据时,首先,向所述s3云端发送获取请求,以请求获取所述存储桶对应的文件信息列表。接着,s3fs服务接收来自所述s3云端的获取响应,所述获取响应携带所述文件信息列表。之后,s3fs服务将所述文件信息列表发布到多线程请求队列中,以通过所述多线程请求队列中的线程请求所述文件信息列表中各文件的元数据,并将请求到的元数据写入所述数据库。73.示例性的,s3fs服务利用主线程向s3云端发送获取请求,通过主线程获取存包含存储桶内所有对象名称的文件信息列表,采用的命令可以是“get/bucket”等,本技术实施例并不限制。获取到文件信息列表后,s3fs服务通过哈希(hash)算法等,将文件信息列表中指示的对象分配给多个线程。例如,存储桶内一共有10个对象,s3fs服务利用5个线程获取元数据,每个线程负责2个对象。74.之后,多个线程中的各线程同步获取自身负责的对象的元数据,s3fs服务将这些元数据写入持久化数据库。s3fs服务将所有线程获取到的元数据写入持久化数据库后,主线程更新标识,进入下一步的启动流程。75.采用该种方案,s3fs服务通过多线程同步功能获取元数据,提高元数据获取效率。76.可选的,上述实施例中,当多线程中存在负责至少两个对象的线程时,该线程从s3云端依次获取至少两个对象中各对象的元数据。例如,线程a负责对象1、对象2和对象3,则线程a先获取对象1的元数据,获取到对象1的元数据之后获取对象2的元数据,获取到对象2的元数据后获取对象3的元数据。获取的顺序可以随机设定或根据预设的规则设定。77.采用该种方案,当一个线程负责多个对象时,依次从s3云端获取每个对象的元数据,保证能够获取到该线程负责的每个对象的元数据,提高可靠性。78.305、完成启动流程。79.示例性的,s3fs服务执行其他初始化流程,进而完成启动。例如,初始化后续用于操作日志记录和执行同步的线程。80.可以理解的是,在完成步骤305之前,用户无法使用s3fs服务。81.完成正常启动流程后,用户可基于s3fs服务操作所挂载的存储桶内的文件,由于已完成元数据的全量同步,当用户访问请求触发元数据操作时,可直接基于持久化数据库中的元数据完成相应的操作,无需再向s3云端进行获取。如此一来,s3fs服务在无需与s3云端交互的情况下,就能完成访问请求的处理,提升了处理效率,同时也避免了交互异常导致的无法正常响应的问题。82.上述实施例中,主要讲述了s3fs服务从s3云端全量同步元数据的过程。元数据同步全量后,用户操作文件的过程中,可能会触发元数据的查询、更新以及更新后的同步。下面,对元数据的更新进行详细说明。83.元数据更新过程中,s3fs服务接收来自用户的文件访问请求,若所述文件访问请求触发了元数据的更新操作,则s3fs服务更新所述持久化数据库以及本地内存中对应的元数据。更新之后,s3fs服务即可向用户反馈文件访问响应。84.示例性的,用户的文件访问请求可包含新建文件、修改文件、删除文件等操作,一般而言,在文件操作过程中所涉及的元数据操作会一并封装在文件访问请求中,因此,一个文件访问请求可包括两类请求,一类是针对文件元数据的操作请求,一类是针对文件数据本身的操作请求。85.可以理解的是,s3fs服务在接收到文件访问请求时,需要对其进行处理,在处理过程中,会涉及文件数据的操作,同时也可能涉及元数据的操作,本技术实施例主要针对元数据的操作进行优化,对于文件数据的处理均按照常规的操作进行,不再赘述。值得注意的是,本技术实施例中,s3fs服务在处理文件访问请求的过程中,可直接基于内存及持久化数据库获取需要操作的元数据,无需从s3云端获取,相对于现有实现方式来说,由于省略了处理过程中向云端获取元数据的过程,请求处理效率会明显提升。86.一般而言,元数据的更新是从属于文件操作的。例如,用户新建文件会触发新增元数据,用户修改文件会触发修改元数据,用户删除文件会触发删除元数据。此外,用户也可直接对元数据进行更新操作,例如修改访问权限。针对元数据的操作请求可包含查询、新增、删除和修改,在处理这些操作请求时,s3fs服务直接对内存、持久化数据库中的元数据进行相应的操作,即可完成文件访问请求中针对元数据的操作。同时,s3fs服务记录元数据的更新操作,如记录在日志中,并基于更新同步机制将该些更新操作同步至s3云端,使得s3云端可基于日志记录同步更新s3云端的元数据记录,从而保证本地元数据与云端元数据的一致。87.下面,对s3fs服务如何基于元数据的更新操作更新内存和持久化数据库中的元数据进行详细说明。88.当所述更新操作为新增时,s3fs服务可根据更新操作生成新的元数据,之后,将新的元数据写入所述持久化数据库以及本地内存。89.示例性的,当用户的文件访问请求触发元数据的新增时,由于是新建数据,则内存和持久化数据库中不存在该新建数据对应的元数据。这种情况下,s3fs服务根据新增信息生成新的元数据,如文件的大小、创建时间、权限等。之后,s3fs服务先在持久化数据库中新增该元数据,从而完成持久化数据库的更新,在持久化数据库更新完成后,可再将元数据写入内存。由于内存数据的读取速度较数据库更快,将元数据更新至内存,可进一步提升元数据的获取速度,进而实现对请求处理效率的优化。90.当所述更新操作为删除时,s3fs服务需先从内存中删除待删除文件对应的元数据,再从持久化数据库中删除待删除文件对应的元数据。91.示例性的,当更新操作为删除时,s3fs服务先查询内存,若内存中存在待删除的元数据,则删除该元数据,从而完成对内存的更新。之后,s3fs服务查询持久化数据库,并删除持久化数据库中待删除的元数据从而完成对持久化数据库的更新。在删除元数据的过程中,先删除内存、再删除持久化数据库中的待删除元数据,不仅可保证内存与持久化数据库中的数据同步,也可在一定程度上避免在元数据删除过程中,s3fs服务在处理其他请求时从内存中获取了需要待删除的元数据,从而导致请求处理异常。值得注意的是,若s3fs服务未能在持久化数据库中查询到待删除的元数据,则直接终止对该文件访问请求的处理,并向用户反馈处理异常的信息。92.当所述更新操作为修改时,s3fs服务从持久化数据库中查询出待修改的元数据并修改后,对本地内存中的所述待修改的元数据进行修改。93.可以理解的是,元数据的修改实质是先删除再新增,因此,在处理元数据的修改时,可根据上述新增和删除的处理方式来实现,不再赘述。94.s3fs服务完成元数据的更新操作后,需对元数据的更新操作进行记录,例如记录对应的操作日志,后续基于记录将元数据的更新操作同步至s3云端。95.在一实施中,当s3fs服务在本地完成文件访问请求的处理后,需要将处理后的文件数据发送至s3云端,此时,可将操作日志一并发送给s3云端,使得s3云端可基于操作日志同步更新元数据。较佳地,在将操作日志一并发送时,可将当前所有未同步的更新操作都发送至s3云端,不仅可保证当前请求对应的更新操作可同步至s3云端,也可提升同步效率、节省网络资源。96.可以理解的是,有些文件访问请求在处理完成后,并不需要向s3云端同步文件数据,如此一来,该请求所触发的元数据更新操作则无法同步至s3云端,在一实施中,可根据预设元数据同步周期,将记录中未同步的元数据的更新操作同步至所述s3云端。具体而言,可对操作日志中的同步状态进行标识,如设置是否已同步的字段标识,定期将操作日志中状态为未同步的记录发送至s3云端,其中,预设周期可通过设定的时间来确定,如5分钟更新一次;也可根据日志中未同步的记录量来确定,如当未同步记录超过100条时,即将所有未同步记录发送至s3云端,并指示s3云端基于更新操作对云端保存的元数据进行更新。97.上述实施例中,发生元数据更新时,s3fs服务对本地持久化数据库进行更新,使得本地持久化数据库中的元数据是最新状态,以为后续的文件访问请求处理提供数据基础,使得s3fs服务在处理用户请求的过程中可直接基于本地元数据即可完成请求处理,无需再向s3云端获取相应的元数据。同时,将更新操作同步至s3云端,s3云端基于更新操作对云端的元数据进行同步更新,如此一来,保证了s3云端元数据的更新。当s3fs服务重新挂载时,可从s3云端全量同步到最新的元数据,而不会因为云端数据不同步而发生异常。98.图4为本技术实施例提供的一种电子设备的结构示意图。如图4所示,该电子设备400例如为部署了s3fs服务的设备,该电子设备400包括:99.处理器41和存储器42;100.所述存储器42存储计算机指令;101.所述处理器41执行所述存储器42存储的计算机指令,使得所述处理器41执行如上s3fs服务实施的元数据管理方法。102.处理器41的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。103.可选地,该电子设备400还包括通信部件43。其中,处理器41、存储器42以及通信部件43可以通过总线44连接。104.本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,所述计算机指令被处理器执行时用于实现如上s3fs服务实施的元数据管理方法。105.本技术实施例还提供一种计算机程序产品,该计算机程序产品包含计算机程序,计算机程序被处理器执行时实现如上s3fs服务实施的元数据管理方法。106.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本
    技术领域
    :中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求书指出。107.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求书来限制。当前第1页12当前第1页12
    转载请注明原文地址:https://tc.8miu.com/read-935.html

    最新回复(0)