CN114153787A - 一种文件管理方法、装置、计算机设备及存储介质 - Google Patents

一种文件管理方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN114153787A
CN114153787A CN202111475124.1A CN202111475124A CN114153787A CN 114153787 A CN114153787 A CN 114153787A CN 202111475124 A CN202111475124 A CN 202111475124A CN 114153787 A CN114153787 A CN 114153787A
Authority
CN
China
Prior art keywords
file
metadata
data block
resource
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
CN202111475124.1A
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.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network 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 Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202111475124.1A priority Critical patent/CN114153787A/zh
Publication of CN114153787A publication Critical patent/CN114153787A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/122File system administration, e.g. details of archiving or snapshots using management policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种文件管理方法、装置、计算机设备及存储介质。本方案在文件系统中增加用于存储资源文件的元数据信息的元数据文件层,以及用于存储资源文件的文件数据的数据块文件层,通过数据块文件将文件系统中的多个文件进行合并,以此,可以减少文件系统中的资源文件的数量,并通过数据块文件对资源文件的数据进行管理,从而可以提高文件系统中的资源文件的管理效率。

Description

一种文件管理方法、装置、计算机设备及存储介质
技术领域
本申请涉及计算机技术领域,具体涉及一种文件管理方法、装置、计算机设备及存储介质。
背景技术
在游戏运行期间,各种游戏资源会被频繁的从磁盘调入调出。随着游戏资源的种类、数量的增加,为了对游戏资源进行统一管理,多数游戏引擎采用资源管理器载入并管理构成游戏所需的无数资源。
相关技术中,资源管理器会大量使用文件系统,游戏引擎通过包装原生的文件系统接口,作为游戏引擎专用的文件接口,以此来管理指定目录下的文件资源。但是,由于文件的数量为指数级上升,导致文件系统管理文件资源的速度变慢。
发明内容
本申请实施例提供一种文件管理方法、装置、计算机设备及存储介质,可以提高文件系统中的资源文件的管理效率。
本申请实施例提供了一种文件管理方法,包括:
接收基于游戏引擎的大文件系统的文件写入指令,根据所述文件写入指令获取待写入资源文件的文件信息,其中,所述大文件系统包括元数据管理层和数据块管理层,所述元数据管理层用于管理所述大文件系统中的资源文件的元数据,所述数据库管理层用于管理所述大文件系统中的资源文件的文件数据;
根据所述文件信息以及所述元数据管理层中的元数据文件,从所述数据块管理层的数据块中确定目标数据块,其中,所述元数据文件包括所述大文件系统中的资源文件的元数据信息;
通过所述大文件系统将所述待写入资源文件的文件数据写入所述目标数据块。
相应的,本申请实施例还提供了一种文件管理装置,包括:
第一接收单元,用于接收基于游戏引擎的大文件系统的文件写入指令,根据所述文件写入指令获取待写入资源文件的文件信息,其中,所述大文件系统包括元数据管理层和数据块管理层,所述元数据管理层用于管理所述大文件系统中的资源文件的元数据,所述数据库管理层用于管理所述大文件系统中的资源文件的文件数据;
第一确定单元,用于根据所述文件信息以及所述元数据管理层中的元数据文件,从所述数据块管理层的数据块中确定目标数据块,其中,所述元数据文件包括所述大文件系统中的资源文件的元数据信息;
第一写入单元,用于通过所述大文件系统将所述待写入资源文件的文件数据写入所述目标数据块。
在一些实施例中,第一确定单元包括:
第一确定子单元,用于根据所述文件信息确定所述待写入资源文件对应的索引信息;
查找子单元,用于基于所述索引信息在所述元数据文件中查找所述文件信息,得到查找结果;
第二确定子单元,用于通过所述查找结果从所述数据块管理层的数据块中确定所述目标数据块。
在一些实施例中,第二确定子单元具体用于:
若所述查找结果指示所述元数据文件中存在所述文件信息,则从所述数据块管理层的数据块中确定所述待写入资源文件对应的数据块,得到所述目标数据块;
若所述查找结果指示所述元数据文件中不存在所述文件信息,则在所述数据块管理层中创建新的数据块,得到所述目标数据块。
在一些实施例中,第一确定单元还包括:
移除子单元,用于移除所述目标数据块中已有的资源文件数据,得到处理后目标数据块。
在一些实施例中,第一写入单元包括:
第一写入子单元,用于将所述待写入资源文件的文件数据写入所述处理后目标数据块。
在一些实施例中,第一写入单元包括:
第二确定子单元,用于根据所述文件信息从所述目标数据块中确定目标存储位置;
第二写入子单元,用于将所述待写入资源文件的文件数据写入所述目标存储位置。
在一些实施例中,第二确定子单元具体用于:
获取所述目标数据块的剩余存储空间;
根据所述文件数据和所述文件长度从所述剩余存储空间中选取存储位置,得到所述目标存储位置。
在一些实施例中,该装置还包括:
生成单元,用于根据所述文件信息以及所述目标数据块生成所述待写入资源文件的目标元数据信息;
第二写入单元,用于在所述元数据文件中写入所述目标元数据信息。
在一些实施例中,第二写入单元具体用于:
检测所述元数据文件中是否包括所述待写入资源文件的历史元数据信息;
若所述元数据文件中包括所述历史元数据信息,则基于所述目标元数据信息对所述历史元数据信息进行更新。
在一些实施例中,该装置还包括:
检测单元,用于检测所述元数据文件的使用状态;
获取单元,用于若所述使用状态指示所述元数据文件处于使用中,则获取所述元数据文件的备用元数据文件。
在一些实施例中,第二写入单元包括:
第三写入子单元,用于在所述备用元数据文件中写入所述目标元数据信息。
在一些实施例中,改装置还包括:
第二接收单元,用于接收基于所述大文件系统的文件读取指令,根据所述读取指令获取待读取资源文件的文件路径;
第二确定单元,用于基于所述文件路径从所述元数据文件中确定所述待读取资源文件的元数据信息;
第三确定单元,用于根据所述待读取资源文件的元数据信息从所述元数据管理层的数据块中确定所述待读取资源文件对应的数据块;
读取单元,用于从所述待读取资源文件对应的数据块中读取所述待读取资源文件的文件数据。
在一些实施例中,该装置还包括:
第三接收单元,用于接收针对所述待写入资源文件的下载指令,根据所述下载指令启动所述大文件系统的多个线程对所述待写入资源文件进行下载。
在一些实施例中,第一写入单元包括:
第四写入子单元,用于通过所述多个线程将所述待写入资源文件的文件数据写入所述目标数据块。
相应的,本申请实施例还提供了一种计算机设备,包括存储器,处理器及存储在储存器上并可在处理器上运行的计算机程序,其中,处理器执行本申请实施例任一提供的文件管理方法。
相应的,本申请实施例还提供了一种存储介质,存储介质存储有多条指令,指令适于处理器进行加载,以执行如上的文件管理方法。
本申请实施例通过在文件系统中增加用于存储资源文件的元数据信息的元数据文件层,以及用于存储资源文件的文件数据的数据块文件层,通过数据块文件将文件系统中的多个文件进行合并,以此,可以减少文件系统中的资源文件的数量,并通过数据块文件对资源文件的数据进行管理,从而可以提高文件系统中的资源文件的管理效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种文件管理方法的流程示意图。
图2为本申请实施例提供的一种文件管理方法的文件系统的结构框图。
图3为本申请实施例提供的另一种文件管理方法的文件系统的结构框图。
图4为本申请实施例提供的一种文件管理方法的数据存储结构示意图。
图5为本申请实施例提供的一种文件管理方法的数据存储结构示意图。
图6为本申请实施例提供的另一种文件管理方法的流程示意图。
图7为本申请实施例提供的一种文件管理装置的结构框图。
图8为本申请实施例提供的计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种文件管理方法、装置、存储介质及计算机设备。具体地,本申请实施例的文件管理方法可以由计算机设备执行,其中,该计算机设备可以为服务器等设备。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
例如,该计算机设备可以是服务器,接收基于游戏引擎的大文件系统的文件写入指令,根据文件写入指令获取待写入资源文件的文件信息,其中,大文件系统包括元数据管理层和数据块管理层,元数据管理层用于管理大文件系统中的资源文件的元数据,数据库管理层用于管理大文件系统中的资源文件的文件数据;根据文件信息以及元数据管理层中的元数据文件,从数据块管理层的数据块中确定目标数据块,其中,元数据文件包括大文件系统中的资源文件的元数据信息;通过大文件系统将待写入资源文件的文件数据写入目标数据块。
基于上述问题,本申请实施例提供第一种文件管理方法、装置、计算机设备及存储介质,可以提高文件系统中的资源文件的管理效率。
以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
本申请实施例提供一种文件管理方法,该方法可以由终端或服务器执行,本申请实施例以文件管理方法由服务器执行为例来进行说明。
如图1所示,图1为本申请实施例提供的一种文件管理方法的流程示意图。该文件管理方法的具体流程可以如下:
101、接收基于游戏引擎的大文件系统的文件写入指令,根据文件写入指令获取待写入资源文件的文件信息。
相关技术中,多数游戏引擎会采用某种类型的资源管理器,载入并管理构成三维游戏所需的多个资源文件。每个资源管理器都会大量使用文件系统,因此,游戏引擎会包装原生的文件系统接口,作为游戏引擎专用的文件接口。Messiah作为成熟的游戏引擎,提供了通用的文件访问接口,可以访问指定目录下的文件。
其中,文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NANDFlash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。
例如,请参阅图2,图2为本申请实施例提供的一种文件管理方法的文件系统的结构框图。图2展示了Messiah引擎目前的多文件系统(Multi FileSystem)的结构框图,MultiFileSystem封装了多个原始的文件系统(Native FileSystem),每个Native FileSystem提供了通用的文件访问接口,可以访问指定目录下的文件。
其中,Multi FileSystem提供了非常简洁的文件访问接口,当访问某个文件的时候,优先查找访问本地数据/补丁(LocalData/Patch)目录,其次是包(Package)目录,接下来是引擎(Engine)目录,最后查找访问本地数据(LocalData)目录。Patch逻辑可以将最新的Patch文件放到LocalData/Patch目录下,以使得在游戏启动后便可以访问最新的文件,Multi FileSystem较好的支持了游戏的Patch功能。
然而,在开发过程中,文件的数量通常是指数级上升的。面对巨大的文件数量,Messiah封装的多文件系统可能存在访问速度较慢等问题。
为了解决上述多文件系统中文件访问速度慢的问题,本申请方案在原有的MultiFileSystem中插入新的文件系统Compact FileSystem,Compact FileSystem包括两层目录,分别可以为:本地数据/元数据补丁(LocalData/CompactPatch)和元数据包(CompactPackage)。具体的,通过在多文件系统中插入Compact FileSystem的两层目录,合成新的文件系统,也即大文件系统。
例如,请参阅图3,图3为本申请实施例提供的另一种文件管理方法的文件系统的结构框图。图3展示了本申请实施例的大文件系统的结构框图。增加新的两层目录后,大文件系统的目录包括:本地数据/补丁、本地数据/元数据补丁(LocalData/CompactPatch)、包、元数据包(CompactPackage)、引擎、本地数据。
其中,大文件系统的文件访问的优先级从高到低依次可以为:LocalData/Patch、LocalData/CompactPatch、Package、CompactPackage、Engine、LocalData。
在本申请实施例中,大文件系统除了提供原始文件系统所需要的文件函数接口以外,还提供了将LocalData/Patch目录的文件转移到LocalData/CompactPatch目录的功能,方便线上使用,在游戏启动时可以合并Patch目录的小文件。
具体的,当大文件系统功能开启时,Patch阶段下载的文件会自动写入CompactPatch目录,在游戏启动的时候,可以将LocalData/Patch目录下的文件转移到LocalData/CompactPatch目录中,不影响Patch逻辑,可以完美地兼容旧引擎。
其中,文件写入指令指示在大文件系统中写入资源文件,资源文件指的是运行游戏所需的各种资源,比如,资源文件可以包括:UI(User Interface,用户界面)、着色器、脚本、模型、贴图、音频等资源。那么,待写入资源文件也即指的是需要写入大文件系统中的资源文件。具体的,待写入资源文件的文件信息指的是文件的属性信息,文件信息可以包括文件类型、文件长度、文件数据等信息。
其中,大文件系统包括元数据管理层(LocalData/CompactPatch)和数据块管理层(CompactPackage),元数据管理层可以用于管理大文件系统中的资源文件的元数据,元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能;数据库管理层可以用于管理大文件系统中的资源文件的文件数据,文件数据也即资源文件中包括的数据。
102、根据文件信息以及元数据管理层中的元数据文件,从数据块管理层的数据块中确定目标数据块。
其中,元数据文件指的是大文件系统中元数据管理层目录下的文件,元数据文件中包括有大文件系统中各资源文件的元数据信息,元数据文件的文件后缀名可以为:Compact。
在本申请实施例中,为了管理大文件系统中大量的资源文件,为元数据文件设计了新的数据存储结构。例如,请参阅图4,图4为本申请实施例提供的一种文件管理方法的数据存储结构示意图。图4中的版本标识(version)指的是元数据文件的版本标识,比如,版本标识可以为:V1、V2、V3等,数值越大,可以表示元数据文件的版本越新;数据块数量(blocknum)指的是数据块的数量;资源文件数量(filenum)指的是资源文件的数量;在资源文件数量后面存储有每一数据快的名称,然后是每一资源文件元数据信息。
其中,元数据信息中包括有:资源文件的文件路径(filepath)、资源文件所在的数据块标识,资源文件存储在数据块中的偏移位置,以及资源文件的文件长度。
其中,文件路径是指文件存储的位置。例如:E:\work\市场资料\市场计划.doc,就是一个文件路径。指的是:一个Word文件“市场计划”,存储在e盘下的“work”文件夹内的“市场计划”文件夹内。若要打开这个文件,按照文件路径逐级找到此文件,即可进行相应的操作。
文件长度也即文件大小,指的是在文件系统中占用的存储空间的大小。偏移位置也即指的是资源文件在数据块中的位置。
其中,数据块,也即block,指的是大文件系统中的数据块管理层目录下的文件,block是数据库中的最小存储和处理单位,包含块本身的头信息数据等。
具体的,数据块中包括有大文件系统中各资源文件的文件数据,数据块的文件后缀名可以为:block。数据块也即整合了大量资源文件数据的一个数据存储文件。从数据块中读取文件数据需要首先获取资源文件的元数据信息。
具体的,本申请实施例中基于游戏引擎的大文件系统支持多个大文件,每一个大文件为一个后缀名为block的文件,也即每一个大文件指的是一个数据块。数据块通过在大文件系统的引擎层由一个CompactBlockHandler类进行管理,CompactBlockHandler的成员变量restSpace维护了大文件中的文件未占用信息。
在一些实施例中,为了提高大文件系统的文件写入效率,步骤“根据文件信息以及元数据管理层中的元数据文件,从数据块管理层的数据块中确定目标数据块”,可以包括以下操作:
根据文件信息确定待写入资源文件对应的索引信息;
基于索引信息在元数据文件中查找文件信息,得到查找结果;
通过查找结果从数据块管理层的数据块中确定目标数据块。
其中,文件信息包括待写入资源文件的文件路径、文件数据和文件长度。进一步的,根据待写入资源文件的文件路径确定索引信息,可以通过哈希算法确定文件路径对应的哈希桶。索引信息指的是文件路径与哈希桶的对应关系。
具体的,哈希算法指的是将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。可以用于快速查找和加密算法。
在本申请实施例中,资源文件的文件路径可以对应一个哈希桶,哈希桶指的是用于盛放不同key链表(也即哈希表)的容器,哈希表是根据设定的哈希函数和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,所得存储位置称为哈希地址或散列地址。
进一步的,将待写入资源文件的文件路径的字符串经过哈希对应到一个哈希桶中。例如,命名为0a0001和0a0002的资源文件可以对应到0a这个哈希桶,也就是可以写入0a.block这个数据块中。
在确定文件路径的索引信息之后,便可以根据索引信息在元数据文件中查找待写入资源文件的文件信息,从而得到查找结果。其中,由于待写入资源文件可以为大文件系统中已有的资源文件的更新文件,则大文件系统的元数据文件中可以存储有该待写入资源文件的元数据信息,即可以确定查找结果为元数据文件中存在文件信息;或者待写入资源文件可以为大文件系统中不包括的资源文件,则大文件系统的元数据文件中未存储有该待写入资源文件的元数据信息,即可以确定查找结果为元数据文件中不存在文件信息。进一步的,根据文件信息的查找结果执行后续操作。
在一些实施例中,为了进一步提高资源文件的写入效率,步骤“通过查找结果从数据块管理层的数据块中确定目标数据块”,可以包括以下操作:
若查找结果指示元数据文件中存在文件信息,则从数据块管理层的数据块中确定待写入资源文件对应的数据块,得到目标数据块;
若查找结果指示元数据文件中不存在文件信息,则在数据块管理层中创建新的数据块,得到目标数据块。
其中,若查找结果指示元数据文件中存在文件信息,则相应的数据管理层的数据块中存储有该待写入资源文件的历史文件数据,可以从数据管理层的数据块中确定存储该待写入资源文件的历史文件数据的数据块,即可以得到目标数据块。
例如,查找结果指示元数据文件中存在文件信息,数据管理层包括:数据块1、数据块2、数据块3,根据文件信息确定存储有待写入资源文件的历史文件数据的数据块可以为数据块1,则可以确定数据块1为目标数据块。
其中,若查找结果指示元数据文件中不存在文件信息,表示数据管理层的数据块中未存储有该待写入资源文件的文件数据,则可以在数据管理层的数据块中创建新的数据块,即可以得到目标数据块。
例如,查找结果指示元数据文件中不存在文件信息,数据管理层包括:数据块1、数据块2、数据块3,可以在数据管理层的数据块中创建新的数据块:数据块4,则可以确定数据块4为目标数据块。
在一些实施例中,若待写入资源文件为大文件系统中已有的资源文件,为了节省文件系统的存储空间,在步骤“从数据块管理层的数据块中确定待写入资源文件对应的数据块,得到目标数据块”之后,还可以包括以下步骤:
移除目标数据块中已有的资源文件数据,得到处理后目标数据块;
则步骤“将待写入资源文件的文件数据写入目标数据块”,可以包括以下步骤:
将待写入资源文件的文件数据写入处理后目标数据块。
其中,目标数据块中已有的资源文件数据指的是历史时间段存储的待写入资源文件的初始文件数据,在将当前待写入资源文件的数据写入目标数据块之前,可以将初始文件数据进行清理,避免占用多余的存储空间。
进一步的,在对目标数据块进行数据清除之后,便可以得到处理后目标数据块,然后可以将待写入资源文件的资源文件数据写入处理后目标数据块。
在一些实施例中,为了保证大文件系统中资源文件的安全性,元数据文件中的数据为二进制数据,数据块中的数据为二进制数据。
具体的,大文件系统维护的文件目录包括有block文件(数据块)和Compact文件(元数据文件),block文件中按序存放了二进制数据文件,Compact文件中存放了二进制元信息数据。若有用户恶意通过文件重命名或者篡改文件数据后,游戏都无法正常启动,因此,大文件系统具有较高的安全性。
103、通过大文件系统将待写入资源文件的文件数据写入目标数据块。
在确定目标数据块之后,即可以将待写入资源文件的文件数据写入目标数据块,以将待写入资源文件写入大文件系统中。
在一些实施例中,为了提高资源文件写入效率,步骤“通过大文件系统将待写入资源文件的文件数据写入目标数据块”,可以包括以下操作:
根据文件信息从目标数据块中确定目标存储位置;
将待写入资源文件的文件数据写入目标存储位置。
首先,根据待写入资源文件的文件信息从目标数据块中确定目标存储位置,该目标存储位置为待写入资源文件的文件数据写入目标数据块中的位置。
在一些实施例中,文件信息至少包括文件数据和文件长度,为了快速确定在目标数据块中的存储位置,步骤“根据文件信息从目标数据块中确定目标存储位置”,可以包括以下操作:
获取目标数据块的剩余存储空间;
根据文件数据和文件长度从剩余存储空间中选取存储位置,得到目标存储位置。
在本申请实施例中,数据块中的文件紧密排列存储,例如,请参阅图5,图5为本申请实施例提供的另一种文件管理方法的数据存储结构示意图。图5示出了数据块中的文件存储结构,比如,数据块可以为数据块1,该数据块1中存储有:文件1、文件2、文件3、文件4、...、文件n。此时,数据块1中的文件1至文件n存储有文件数据,则待写入资源文件的文件数据可以存储在文件n之后,然后,根据文件数据和文件长度从文件n后面的存储位置中选取满足文件长度的存储位置,得到目标存储位置。
在一些实施例中,若目标数据块中已存储的资源文件已删除,比如,对于图5中的资源文件,若将文件2和文件3进行删除。则在存储待写入资源文件的文件数据时,可以首先判断文件2和文件3的存储位置是否满足待写入资源文件的文件长度,若满足,则可以将待写入资源文件的文件数据存储在文件2和文件3的位置,以此,可以提高对数据库的文件存储的管理。
在一些实施例中,为了方便后续对大文件系统中待写入资源文件的读取,在步骤“在通过大文件系统将待写入资源文件的文件数据写入目标数据块”之后,还可以包括以下步骤:
根据文件信息以及目标数据块生成待写入资源文件的目标元数据信息;
在元数据文件中写入目标元数据信息。
具体的,根据文件信息中的待写入资源文件的文件名称、文件长度、文件路径,以及待写入资源文件的文件数据在目标数据块中的存储位置,生成待写入资源文件的元数据信息,得到目标元数据信息,然后,在大文件系统的元数据管理层的元数据文件中存储该目标元数据信息,以此,实现根据通过目标元数据信息快速对待写入资源文件的文件数据的读取。
在一些实施例中,为了进一步提高对大文件系统中待写入资源文件的读取效率,步骤“在元数据文件中写入目标元数据信息”,可以包括以下操作:
检测元数据文件中是否包括待写入资源文件的历史元数据信息;
若元数据文件中包括历史元数据信息,则基于目标元数据信息对历史元数据信息进行更新。
其中,历史元数据信息指的是待写入资源文件的初始元数据信息,比如,待写入资源文件可以为已有资源文件的更新版本,则初始元数据信息可以为该已有资源文件的元数据信息。
具体的,检测元数据文件中是否包括待写入资源文件的历史元数据信息,可以通过待写入资源文件的文件路径确定索引信息,可以通过哈希算法确定文件路径对应的哈希桶。索引信息指的是文件路径与哈希桶的对应关系。
若存在与待写入资源文件的文件路径对应的哈希桶,则可以确定元数据文件中包括历史元数据信息,此时可以通过目标元数据信息对历史元数据进行更新,得到更新后的待写入资源文件的元数据信息。
在一些实施例中,为了避免在元数据文件中写入元数据信息失败,在步骤“在元数据文件中写入目标元数据信息”之前,还可以包括以下步骤:
检测元数据文件的使用状态;
若使用状态指示元数据文件处于使用中,则获取元数据文件的备用元数据文件;
则步骤“在元数据文件中写入目标元数据信息”,可以包括以下操作:
在备用元数据文件中写入目标元数据信息。
其中,使用状态表示当前元数据文件中的数据是否被使用,也即是否被访问或者编辑更新等。
在本申请实施例中,为元数据文件设置有备用原数据文件,备用元数据文件也即元数据文件的备份文件,当检测到原数据文件的使用状态为使用中时,可以获取元数据文件的备用元数据文件,通过在备用元数据文件中写入目标元数据信息,以实现对待写入资源文件的元数据信息的存储,其中,备用元数据文件中存储有与元数据文件相同的元数据信息,以保证元数据文件的一致性。
例如,大文件系统的元数据信息可以存储在resource_x.Compact文件中,其中,resource_x.Compact中的x可以表示0-9的数字。具体的,resource_1.Compact可以为元数据文件,则可以设置resource_2.Compact为备用原数据文件。进一步的,当需要写入元数据信息时,若检测到resource_1.Compact处于使用中时,可以将需要写入的元数据信息写入resource_2.Compact中,以此,可以避免在写入Compact文件的时候,进程突然被关闭,导致Compact文件损坏,下次启动的时候没有可用的Compact索引文件,游戏无法正常启动的问题。
在一些实施例中,为了提高大文件系统中资源文件的读取效率,该方法还可以包括以下步骤:
接收基于大文件系统的文件读取指令,根据读取指令获取待读取资源文件的文件路径;
基于文件路径从元数据文件中确定待读取资源文件的元数据信息;
根据待读取资源文件的元数据信息从元数据管理层的数据块中确定待读取资源文件对应的数据块;
从待读取资源文件对应的数据块中读取待读取资源文件的文件数据。
具体的,当接收到对于大文件系统的文件读取指令时,根据文件读取指令确定需要读取的待读取资源文件,获取该待读取资源文件的文件信息,比如,可以获取待读取资源文件的文件路径。
进一步的,根据待读取资源文件的文件路径从大文件系统的元数据文件中查找与该文件路径对应的元数据信息,即可以得到待读取资源文件的元数据信息,该元数据信息中可以包括待读取资源文件对应存储的数据块,然后,从待读取资源文件对应的数据块中读取待读取资源文件的文件数据,即可以从该数据块中读取待读取资源文件的文件数据。
在一些实施例中,为了提高资源文件写入速度,在步骤“接收基于游戏引擎的大文件系统的文件写入指令”之前,还可以包括以下操作:
接收针对待写入资源文件的下载指令,根据下载指令启动大文件系统的多个线程对待写入资源文件进行下载;
则步骤“通过大文件系统将待写入资源文件的文件数据写入目标数据块”,可以包括以下操作:
通过多个线程将待写入资源文件的文件数据写入目标数据块。
本申请实施例中,在对待写入资源文件进行写入操作之前,可以首先下载待写入资源文件。
具体的,在大文件系统中的Patch逻辑的脚本层开启了多个下载线程,通过多个下载线程同时对待写入资源文件进行下载,可以加快下载速度。
进一步的,在通过多线程下载待写入资源文件完成后,可以将待写入资源文件写入本地磁盘。其中,为了充分利用多线程并行下载优势,大文件系统写文件的流程中也加入了释放全局解释锁的逻辑,并且添加了一个自旋锁writeSpinLock,避免两个线程同时写一个文件。
其中,全局解释器锁(Global Interpreter Lock,GIL)是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行。自旋锁是专为防止多处理器并发而引入的一种锁,它在内核中大量应用于中断处理等部分。
具体的,通过多个线程将待写入资源文件的文件数据写入目标数据块的流程可以如下:获取待写入资源文件的饿文件名称、文件数据、文件长度,释放全局解释锁,获取自旋锁,然后通过多线程向大文件系统的目标数据块中写入待写入资源文件的文件数据,然后获取全局解释锁,并释放自旋锁。
本申请实施例公开了一种文件管理方法,该方法包括:接收基于游戏引擎的大文件系统的文件写入指令,根据文件写入指令获取待写入资源文件的文件信息,其中,大文件系统包括元数据管理层和数据块管理层,元数据管理层用于管理大文件系统中的资源文件的元数据,数据库管理层用于管理大文件系统中的资源文件的文件数据,进一步的,根据文件信息以及元数据管理层中的元数据文件,从数据块管理层的数据块中确定目标数据块,其中,元数据文件包括大文件系统中的资源文件的元数据信息,然后,通过大文件系统将待写入资源文件的文件数据写入目标数据块。本方案通过将文件系统中的资源文件存储至block大文件中,通过block大文件进行管理,可以减少文件数量,将同时需要大量访问的文件放在同个block中进行管理,还可降低文件读写的开销。
根据上述介绍的内容,下面将举例来进一步说明本申请的文件管理方法。请参阅图6,图6为本申请实施例提供的另一种文件管理方法的流程示意图,以该文件管理方法应用于对游戏文件系统中的文件管理为例,具体流程可以如下:
201、获取游戏文件系统中已下载的游戏补丁文件的文件信息。
其中,游戏文件系统指的是用于管理游戏中资源文件的文件系统,比如,游戏中的资源文件可以包括:UI(User Interface,用户界面)、着色器、脚本、模型、贴图、音频等资源。
具体的,游戏文件系统可以包括5层目录,分别为如下各目录:本地数据/补丁(LocalData/Patch)、本地数据/元数据补丁(LocalData/CompactPatch)、包(Package)、元数据包(CompactPackage)、引擎(Engine)、本地数据(LocalData)。Patch逻辑将最新的Patch文件放到LocalData/Patch目录下,当游戏启动后便可以管理最新的文件,该游戏文件系统可以支持游戏的Patch功能。
其中,每一层目录表示一个文件访问接口,文件系统可以通过文件访问接口管理每一层目录下的资源文件,各目录的访问优先级由高到低可以依次为:LocalData/Patch、LocalData/CompactPatch、Package、CompactPackage、Engine、LocalData。
比如,当文件系统管理某一资源文件时,可以优先查找管理LocalData/Patch目录、其次是LocalData/CompactPatch目录、然后是Package目录、接下来是CompactPackage目录、然后是Engine目录、最后是LocalData目录,直至查找到需要管理的资源文件。
具体的,在本申请实施例中增加了LocalData/CompactPatch和CompactPackage两层目录。其中,LocalData/CompactPatch层用于存储游戏文件系统中各资源文件的元数据(记录各个资源文件存储的位置,Compact为后缀的二进制文件);CompactPackage层用于存储游戏文件系统中各资源文件的block数据(实际资源文件存储的地方,block为后缀)。
在本申请实施例中,下载的游戏补丁文件首先可以存放在LocalData/Patch目录下,然后将LocalData/Patch中的已下载的游戏补丁文件转移至LocalData/CompactPatch目录中进行文件写入操作。
然后,获取游戏补丁文件的文件信息,比如,文件信息可以包括游戏补丁文件的文件名称、文件数据、文件路径以及文件长度等。
202、根据文件信息以及游戏文件系统的元数据文件,从游戏文件系统的游戏数据存储块中确定目标游戏数据存储块。
首先,根据游戏补丁文件的文件路径确定游戏文件系统的元数据文件中是否存储有该游戏补丁文件的元数据信息,具体的,可以根据确定的哈希算法确定文件路径对应的索引,游戏文件系统可以通过索引尝试在元数据文件中查找游戏补丁文件的元数据信息。
若在元数据文件中查找到游戏补丁文件的元数据信息,则可以根据游戏补丁文件的元数据信息确定存储游戏补丁文件的游戏数据存储块,得到目标游戏数据存储块。
若在元数据文件中未查找到游戏补丁文件的元数据信息,则可以根据游戏补丁文件的元数据信息在游戏文件系统中创建新的游戏数据存储块,得到目标游戏数据存储块。
203、根据文件信息从目标游戏数据存储块中确定目标存储位置。
具体的,根据文件信息中的文件数据以及文件长度,从目标游戏数据存储块中选取合适的存储位置,即可以得到目标存储位置,具体方式已在上述实施例中进行说明,在此不做多赘述。
204、将所述游戏补丁文件的文件数据存储至目标存储位置。
进一步的,游戏文件系统可以将游戏补丁文件的文件数据写入目标游戏数据存储块的目标存储位置,以此,完成对游戏补丁文件的文件数据的存储。通过游戏数据存储块的方式,可以将多个游戏补丁文件集中存储,进行管理。当游戏补丁文件的文件数量较多时,将多个文件合并为大文件,可以提高文件管理效率。
205、根据文件信息与目标存储位置生成游戏补丁文件的元数据信息,并将所述元数据信息存储至元数据文件。
具体的,根据文件信息中的文件名称、文件长度、文件数据,以及游戏补丁文件在目标游戏数据存储块中的目标存储位置,可以得到游戏补丁文件的元数据信息,然后将元数据信息写入游戏文件系统的元数据文件中,以方便后续对游戏补丁文件的读取效率。
本申请实施例公开了一种文件管理方法,该方法包括:获取游戏文件系统中已下载的游戏补丁文件的文件信息,根据文件信息以及游戏文件系统的元数据文件,从游戏文件系统的游戏数据存储块中确定目标游戏数据存储块,根据文件信息从目标游戏数据存储块中确定目标存储位置,将所述游戏补丁文件的文件数据存储至目标存储位置,根据文件信息与目标存储位置生成游戏补丁文件的元数据信息,并将所述元数据信息存储至元数据文件,以此,可以提高对游戏文件系统中游戏补丁文件的读写效率。
为便于更好的实施本申请实施例提供的文件管理方法,本申请实施例还提供一种基于上述文件管理方法的文件管理装置。其中名词的含义与上述文件管理方法中相同,具体实现细节可以参考方法实施例中的说明。
请参阅图7,图7为本申请实施例提供的一种文件管理装置的结构框图,该装置包括:
第一接收单元301,用于接收基于游戏引擎的大文件系统的文件写入指令,根据所述文件写入指令获取待写入资源文件的文件信息,其中,所述大文件系统包括元数据管理层和数据块管理层,所述元数据管理层用于管理所述大文件系统中的资源文件的元数据,所述数据库管理层用于管理所述大文件系统中的资源文件的文件数据;
第一确定单元302,用于根据所述文件信息以及所述元数据管理层中的元数据文件,从所述数据块管理层的数据块中确定目标数据块,其中,所述元数据文件包括所述大文件系统中的资源文件的元数据信息;
第一写入单元303,用于通过所述大文件系统将所述待写入资源文件的文件数据写入所述目标数据块。
在一些实施例中,第一确定单元302可以包括:
第一确定子单元,用于根据所述文件信息确定所述待写入资源文件对应的索引信息;
查找子单元,用于基于所述索引信息在所述元数据文件中查找所述文件信息,得到查找结果;
第二确定子单元,用于通过所述查找结果从所述数据块管理层的数据块中确定所述目标数据块。
在一些实施例中,第二确定子单元具体用于:
若所述查找结果指示所述元数据文件中存在所述文件信息,则从所述数据块管理层的数据块中确定所述待写入资源文件对应的数据块,得到所述目标数据块;
若所述查找结果指示所述元数据文件中不存在所述文件信息,则在所述数据块管理层中创建新的数据块,得到所述目标数据块。
在一些实施例中,第一确定单元302还可以包括:
移除子单元,用于移除所述目标数据块中已有的资源文件数据,得到处理后目标数据块。
在一些实施例中,第一写入单元303可以包括:
第一写入子单元,用于将所述待写入资源文件的文件数据写入所述处理后目标数据块。
在一些实施例中,第一写入单元303可以包括:
第二确定子单元,用于根据所述文件信息从所述目标数据块中确定目标存储位置;
第二写入子单元,用于将所述待写入资源文件的文件数据写入所述目标存储位置。
在一些实施例中,第二确定子单元具体用于:
获取所述目标数据块的剩余存储空间;
根据所述文件数据和所述文件长度从所述剩余存储空间中选取存储位置,得到所述目标存储位置。
在一些实施例中,该装置还包括:
生成单元,用于根据所述文件信息以及所述目标数据块生成所述待写入资源文件的目标元数据信息;
第二写入单元,用于在所述元数据文件中写入所述目标元数据信息。
在一些实施例中,第二写入单元具体用于:
检测所述元数据文件中是否包括所述待写入资源文件的历史元数据信息;
若所述元数据文件中包括所述历史元数据信息,则基于所述目标元数据信息对所述历史元数据信息进行更新。
在一些实施例中,该装置还包括:
检测单元,用于检测所述元数据文件的使用状态;
获取单元,用于若所述使用状态指示所述元数据文件处于使用中,则获取所述元数据文件的备用元数据文件。
在一些实施例中,第二写入单元包括:
第三写入子单元,用于在所述备用元数据文件中写入所述目标元数据信息。
在一些实施例中,改装置还包括:
第二接收单元,用于接收基于所述大文件系统的文件读取指令,根据所述读取指令获取待读取资源文件的文件路径;
第二确定单元,用于基于所述文件路径从所述元数据文件中确定所述待读取资源文件的元数据信息;
第三确定单元,用于根据所述待读取资源文件的元数据信息从所述元数据管理层的数据块中确定所述待读取资源文件对应的数据块;
读取单元,用于从所述待读取资源文件对应的数据块中读取所述待读取资源文件的文件数据。
在一些实施例中,该装置还包括:
第三接收单元,用于接收针对所述待写入资源文件的下载指令,根据所述下载指令启动所述大文件系统的多个线程对所述待写入资源文件进行下载。
在一些实施例中,第一写入单元303可以包括:
第四写入子单元,用于通过所述多个线程将所述待写入资源文件的文件数据写入所述目标数据块。
本申请实施例公开了一种文件管理装置,通过第一接收单元301接收基于游戏引擎的大文件系统的文件写入指令,根据所述文件写入指令获取待写入资源文件的文件信息,其中,所述大文件系统包括元数据管理层和数据块管理层,所述元数据管理层用于管理所述大文件系统中的资源文件的元数据,所述数据库管理层用于管理所述大文件系统中的资源文件的文件数据,第一确定单元302根据所述文件信息以及所述元数据管理层中的元数据文件,从所述数据块管理层的数据块中确定目标数据块,其中,所述元数据文件包括所述大文件系统中的资源文件的元数据信息,第一写入单元303通过所述大文件系统将所述待写入资源文件的文件数据写入所述目标数据块。以此,可以提高文件系统中的资源文件的管理效率。
相应的,本申请实施例还提供一种计算机设备,该计算机设备可以为服务器。如图8所示,图8为本申请实施例提供的计算机设备的结构示意图。该计算机设备400包括有一个或者一个以上处理核心的处理器401、有一个或一个以上计算机可读存储介质的存储器402及存储在存储器402上并可在处理器上运行的计算机程序。其中,处理器401与存储器402电性连接。本领域技术人员可以理解,图中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
处理器401是计算机设备400的控制中心,利用各种接口和线路连接整个计算机设备400的各个部分,通过运行或加载存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行计算机设备400的各种功能和处理数据,从而对计算机设备400进行整体监控。
在本申请实施例中,计算机设备400中的处理器401会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能:
接收基于游戏引擎的大文件系统的文件写入指令,根据文件写入指令获取待写入资源文件的文件信息,其中,大文件系统包括元数据管理层和数据块管理层,元数据管理层用于管理大文件系统中的资源文件的元数据,数据库管理层用于管理大文件系统中的资源文件的文件数据;根据文件信息以及元数据管理层中的元数据文件,从数据块管理层的数据块中确定目标数据块,其中,元数据文件包括大文件系统中的资源文件的元数据信息;通过大文件系统将待写入资源文件的文件数据写入目标数据块。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
可选的,如图8所示,计算机设备400还包括:触控显示屏403、射频电路404、音频电路405、输入单元406以及电源407。其中,处理器401分别与触控显示屏403、射频电路404、音频电路405、输入单元406以及电源407电性连接。本领域技术人员可以理解,图8中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
触控显示屏403可用于显示图形用户界面以及接收用户作用于图形用户界面产生的操作指令。触控显示屏403可以包括显示面板和触控面板。其中,显示面板可用于显示由用户输入的信息或提供给用户的信息以及计算机设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-EmittingDiode)等形式来配置显示面板。触控面板可用于收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并生成相应的操作指令,且操作指令执行对应程序。可选的,触控面板可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器401,并能接收处理器401发来的命令并加以执行。触控面板可覆盖显示面板,当触控面板检测到在其上或附近的触摸操作后,传送给处理器401以确定触摸事件的类型,随后处理器401根据触摸事件的类型在显示面板上提供相应的视觉输出。在本申请实施例中,可以将触控面板与显示面板集成到触控显示屏403而实现输入和输出功能。但是在某些实施例中,触控面板与触控面板可以作为两个独立的部件来实现输入和输出功能。即触控显示屏403也可以作为输入单元406的一部分实现输入功能。
在本申请实施例中,通过处理器401执行游戏应用程序在触控显示屏403上生成图形用户界面,图形用户界面上的虚拟场景中包含至少一个技能控制区域,技能控制区域中包含至少一个技能控件。该触控显示屏403用于呈现图形用户界面以及接收用户作用于图形用户界面产生的操作指令。
射频电路404可用于收发射频信号,以通过无线通信与网络设备或其他计算机设备建立无线通讯,与网络设备或其他计算机设备之间收发信号。
音频电路405可以用于通过扬声器、传声器提供用户与计算机设备之间的音频接口。音频电路405可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路405接收后转换为音频数据,再将音频数据输出处理器401处理后,经射频电路404以发送给比如另一计算机设备,或者将音频数据输出至存储器402以便进一步处理。音频电路405还可能包括耳塞插孔,以提供外设耳机与计算机设备的通信。
输入单元406可用于接收输入的数字、字符信息或用户特征信息(例如指纹、虹膜、面部信息等),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
电源407用于给计算机设备400的各个部件供电。可选的,电源407可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源407还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管图8中未示出,计算机设备400还可以包括摄像头、传感器、无线保真模块、蓝牙模块等,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
由上可知,本实施例提供的计算机设备,接收基于游戏引擎的大文件系统的文件写入指令,根据文件写入指令获取待写入资源文件的文件信息,其中,大文件系统包括元数据管理层和数据块管理层,元数据管理层用于管理大文件系统中的资源文件的元数据,数据库管理层用于管理大文件系统中的资源文件的文件数据;根据文件信息以及元数据管理层中的元数据文件,从数据块管理层的数据块中确定目标数据块,其中,元数据文件包括大文件系统中的资源文件的元数据信息;通过大文件系统将待写入资源文件的文件数据写入目标数据块。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的任一种文件管理方法中的步骤。例如,该计算机程序可以执行如下步骤:
接收基于游戏引擎的大文件系统的文件写入指令,根据文件写入指令获取待写入资源文件的文件信息,其中,大文件系统包括元数据管理层和数据块管理层,元数据管理层用于管理大文件系统中的资源文件的元数据,数据库管理层用于管理大文件系统中的资源文件的文件数据;
根据文件信息以及元数据管理层中的元数据文件,从数据块管理层的数据块中确定目标数据块,其中,元数据文件包括大文件系统中的资源文件的元数据信息;
通过大文件系统将待写入资源文件的文件数据写入目标数据块。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种文件管理方法中的步骤,因此,可以实现本申请实施例所提供的任一种文件管理方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种文件管理方法、装置、存储介质及计算机设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (15)

1.一种文件管理方法,其特征在于,所述方法包括:
接收基于游戏引擎的大文件系统的文件写入指令,根据所述文件写入指令获取待写入资源文件的文件信息,其中,所述大文件系统包括元数据管理层和数据块管理层,所述元数据管理层用于管理所述大文件系统中的资源文件的元数据,所述数据库管理层用于管理所述大文件系统中的资源文件的文件数据;
根据所述文件信息以及所述元数据管理层中的元数据文件,从所述数据块管理层的数据块中确定目标数据块,其中,所述元数据文件包括所述大文件系统中的资源文件的元数据信息;
通过所述大文件系统将所述待写入资源文件的文件数据写入所述目标数据块。
2.根据权利要求1所述的方法,其特征在于,所述根据所述文件信息以及所述元数据管理层中的元数据文件,从所述数据块管理层的数据块中确定目标数据块,包括:
根据所述文件信息确定所述待写入资源文件对应的索引信息;
基于所述索引信息在所述元数据文件中查找所述文件信息,得到查找结果;
通过所述查找结果从所述数据块管理层的数据块中确定所述目标数据块。
3.根据权利要求2所述的方法,其特征在于,所述通过所述查找结果从所述数据块管理层的数据块中确定所述目标数据块,包括:
若所述查找结果指示所述元数据文件中存在所述文件信息,则从所述数据块管理层的数据块中确定所述待写入资源文件对应的数据块,得到所述目标数据块;
若所述查找结果指示所述元数据文件中不存在所述文件信息,则在所述数据块管理层中创建新的数据块,得到所述目标数据块。
4.根据权利要求3所述的方法,其特征在于,在所述从所述数据块管理层的数据块中确定所述待写入资源文件对应的数据块,得到所述目标数据块之后,还包括:
移除所述目标数据块中已有的资源文件数据,得到处理后目标数据块;
所述将所述待写入资源文件的文件数据写入所述目标数据块,包括:
将所述待写入资源文件的文件数据写入所述处理后目标数据块。
5.根据权利要求1所述的方法,其特征在于,所述通过所述大文件系统将所述待写入资源文件的文件数据写入所述目标数据块,包括:
根据所述文件信息从所述目标数据块中确定目标存储位置;
将所述待写入资源文件的文件数据写入所述目标存储位置。
6.根据权利要求5所述的方法,其特征在于,所述文件信息至少包括文件数据和文件长度;
所述根据所述文件信息从所述目标数据块中确定目标存储位置,包括:
获取所述目标数据块的剩余存储空间;
根据所述文件数据和所述文件长度从所述剩余存储空间中选取存储位置,得到所述目标存储位置。
7.根据权利要求1所述的方法,其特征在于,在所述通过所述大文件系统将所述待写入资源文件的文件数据写入所述目标数据块之后,还包括:
根据所述文件信息以及所述目标数据块生成所述待写入资源文件的目标元数据信息;
在所述元数据文件中写入所述目标元数据信息。
8.根据权利要求7所述的方法,其特征在于,所述在所述元数据文件中写入所述目标元数据信息,包括:
检测所述元数据文件中是否包括所述待写入资源文件的历史元数据信息;
若所述元数据文件中包括所述历史元数据信息,则基于所述目标元数据信息对所述历史元数据信息进行更新。
9.根据权利要求7所述的方法,其特征在于,在所述元数据文件中写入所述目标元数据信息之前,还包括:
检测所述元数据文件的使用状态;
若所述使用状态指示所述元数据文件处于使用中,则获取所述元数据文件的备用元数据文件;
所述在所述元数据文件中写入所述目标元数据信息,包括:
在所述备用元数据文件中写入所述目标元数据信息。
10.根据权利要求1所述的方法,其特征在于,还包括:
接收基于所述大文件系统的文件读取指令,根据所述读取指令获取待读取资源文件的文件路径;
基于所述文件路径从所述元数据文件中确定所述待读取资源文件的元数据信息;
根据所述待读取资源文件的元数据信息从所述元数据管理层的数据块中确定所述待读取资源文件对应的数据块;
从所述待读取资源文件对应的数据块中读取所述待读取资源文件的文件数据。
11.根据权利要求1所述的方法,其特征在于,在所述接收基于游戏引擎的大文件系统的文件写入指令之前,还包括:
接收针对所述待写入资源文件的下载指令,根据所述下载指令启动所述大文件系统的多个线程对所述待写入资源文件进行下载;
所述通过所述大文件系统将所述待写入资源文件的文件数据写入所述目标数据块,包括:
通过所述多个线程将所述待写入资源文件的文件数据写入所述目标数据块。
12.根据权利要求1至11任一项所述的方法,其特征在于,所述元数据文件中的数据为二进制数据,所述数据块中的数据为二进制数据。
13.一种文件管理装置,其特征在于,所述装置包括:
第一接收单元,用于接收基于游戏引擎的大文件系统的文件写入指令,根据所述文件写入指令获取待写入资源文件的文件信息,其中,所述大文件系统包括元数据管理层和数据块管理层,所述元数据管理层用于管理所述大文件系统中的资源文件的元数据,所述数据库管理层用于管理所述大文件系统中的资源文件的文件数据;
第一确定单元,用于根据所述文件信息以及所述元数据管理层中的元数据文件,从所述数据块管理层的数据块中确定目标数据块,其中,所述元数据文件包括所述大文件系统中的资源文件的元数据信息;
第一写入单元,用于通过所述大文件系统将所述待写入资源文件的文件数据写入所述目标数据块。
14.一种计算机设备,包括存储器,处理器及存储在存储器上并在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如权利要求1至12任一项所述的文件管理方法。
15.一种存储介质,其特征在于,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至12任一项所述的文件管理方法。
CN202111475124.1A 2021-12-03 2021-12-03 一种文件管理方法、装置、计算机设备及存储介质 Pending CN114153787A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111475124.1A CN114153787A (zh) 2021-12-03 2021-12-03 一种文件管理方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111475124.1A CN114153787A (zh) 2021-12-03 2021-12-03 一种文件管理方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN114153787A true CN114153787A (zh) 2022-03-08

Family

ID=80452533

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111475124.1A Pending CN114153787A (zh) 2021-12-03 2021-12-03 一种文件管理方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN114153787A (zh)

Similar Documents

Publication Publication Date Title
US9292217B2 (en) Logical volume space sharing
JP5886447B2 (ja) ロケーション非依存のファイル
EP3369010A1 (en) Reducing resource consumption associated with storage and operation of containers
CN108073423B (zh) 一种加速器加载方法、系统和加速器加载装置
CN110520844A (zh) 云管理平台、虚拟机管理方法及其系统
CN110162429A (zh) 系统修复方法、服务器及存储介质
CN112882746B (zh) 应用程序的更新方法、装置、存储介质及计算机设备
CN115576600A (zh) 基于代码变更的差异处理方法、装置、终端及存储介质
CN110233904B (zh) 设备更新方法、装置、系统、存储介质以及计算机设备
CN104517067A (zh) 访问数据的方法、装置及系统
CN114610680A (zh) 分布式文件系统元数据管理方法、装置、设备及存储介质
JP2023518136A (ja) ファイル処理方法、装置、電子デバイス、記憶媒体、及びプログラム
US10127270B1 (en) Transaction processing using a key-value store
CN111008079B (zh) 进程管理方法、装置、存储介质及电子设备
US11928082B1 (en) Container image file system performance enhancement
CN114153787A (zh) 一种文件管理方法、装置、计算机设备及存储介质
CN111382136A (zh) 文件系统镜像及文件请求方法
CN118120212A (zh) 一种文件去重方法、装置和设备
CN114817160A (zh) 文件解压方法、装置、电子设备及计算机可读存储介质
CN112559568A (zh) 一种虚拟物品确定方法、装置及计算机可读存储介质
CN114095533A (zh) 云游戏账号登录方法、装置、计算机设备及存储介质
CN115964061A (zh) 插件更新方法、装置、电子设备和计算机可读存储介质
CN115113989A (zh) 事务执行方法、装置、计算设备及存储介质
CN112426722A (zh) 节点图的热更新方法、装置、存储介质及计算机设备
US11645200B2 (en) Reducing load balancing work stealing

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