一种文件管理方法、装置与介质
文献发布时间:2023-06-19 11:32:36
技术领域
本申请涉及互联网技术领域,特别是涉及一种文件管理方法、装置与介质。
背景技术
随着人工智能(Artificial Intelligence,AI)的快速发展,越来越多的科研企业和高校研究人员在AI平台上进行深度学习模型的训练,AI平台的一项重要功能是通过计算节点对网络存储(Network Storage)的文件进行读写操作,网络存储都是通过网络挂载到各个计算节点上。
目前,AI平台对于文件的操作,一般需要进行展示操作和传输操作,但是展示之前需要不断地通过网络进行文件目录的大小统计,传输之前也需要进行文件目录分块、打包,需要了解文件目录结构以及文件大小,以此判断磁盘空间剩余。由于文件的分块存放,就目前技术来说,对于大规模集群的AI平台的文件读写和传输,由于网络等各种原因,读写速度异常缓慢,文件目录的遍历在并发的情况下效率非常低,读取有时会出现lock导致卡住的情况。同时,文件目录的遍历会占用AI平台的大量资源,导致集群读写I/O较高,这会对其他模型的正常训练造成影响,也会影响到AI平台中其它模块的使用。
基于此,如何提高文件目录遍历读写时的速度、降低文件输出对AI平台资源的占用是本领域技术人员亟待解决的技术问题。
发明内容
本申请的目的是提供一种文件管理方法、装置与介质,用于提高文件目录遍历读写时的速度,降低文件输出对AI平台I/O资源的占用。
为解决上述技术问题,本申请提供一种文件管理方法,包括:
获取文件系统的文件目录;
为所述文件目录构建文件目录标签;
在获取到计算节点的获取请求时,将所述文件目录标签发送至所述计算节点;
其中,所述文件目录标签包括所述文件目录的至少一种参数。
优选地,在所述获取文件系统的文件目录之后,还包括:
通过哈希算法对所述文件目录进行排码以构建文件目录有序队列。
优选地,在所述为所述文件目录构建文件目录标签之后,还包括:
监控所述文件目录;
在所述文件目录发生变化的情况下,更新所述文件目录标签。
优选地,所述在所述文件目录发生变化的情况下,更新所述文件目录标签,具体包括:
锁定所述文件目录标签;
根据所述文件目录的变化情况,对所述文件目录标签进行修改;
释放所述文件目录标签。
优选地,所述监控所述文件目录具体为:
通过Inotify对所述文件目录进行监控。
优选地,在所述通过Inotify对所述文件目录进行监控之后,还包括:
获取Inotify发送的所述文件目录的变化列表。
优选地,所述获取请求具体在所述计算节点进行文件传输时发送。
为解决上述技术问题,本申请还提供一种文件管理装置,包括:
获取模块,用于获取文件系统的文件目录;
构建模块,用于为所述文件目录构建文件目录标签;
发送模块,用于在获取到计算节点的获取请求时,将所述文件目录标签发送至所述计算节点;
其中,所述文件目录标签包括所述文件目录的至少一种参数。
为解决上述技术问题,本申请还提供一种文件管理装置,包括存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如所述的文件管理方法的步骤。
为解决上述技术问题,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如所述的文件管理方法的步骤。
本申请所提供的文件管理方法,针对文件系统的文件目录进行标签制作,由于该文件目录标签里包括文件目录的至少一种参数,例如文件目录的大小、文件目录下的文件夹个数以及文件个数等,因此AI平台通过计算节点进行文件读取和传输时,尤其是在对大文件操作时,可以直接获取到文件目录标签,避免了计算节点通过网络对文件的大小和个数的统计操作,保证了文件通过I/O在网络上的使用效率,提高了文件目录遍历读写时的速度。同时,又由于读写速度的提高,所以降低了文件输出对AI平台I/O资源的占用,提高了模型训练的效率,提高了AI平台的算法人员使用AI平台的性能体验。
此外,本申请所提供的文件管理装置与介质与上述方法对应,效果同上。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种文件管理系统的组成架构;
图2为本申请实施例提供的一种文件管理方法的流程图;
图3为本申请实施例提供的一种文件管理装置的结构示意图;
图4为本申请另一实施例提供的文件管理装置的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
随着人工智能相关产业的蓬勃发展,越来越多的科研企业和高校的研究人员对计算力的要求以及对计算资源的统一管控也是越来越高,AI训练平台有效解决了企业或科研机构对计算力的要求。对文件目录进行遍历读写的性能关乎AI平台相关算法人员的工作效率,因此如何在计算节点上对网络存储的文件进行高效读写操作,如何提升文件读写的性能,提高训练模型效率,成为影响AI平台的性能的重要指标。
目前涉及大规模集群的文件读写和传输,主要瓶颈点在于集群网络,然而涉及到AI平台的集群的文件读写和传输的性能瓶颈点不仅是集群网络,还包括训练任务对计算节点的CPU资源使用情况,这些影响因素在一定程度上影响着算法研究人员对文件的读写效率。一些企业单位通过管理端建立单一网络存储,然后将网络存储共享到各个计算节点上,另一些条件优越的企业单位选择分布式网络存储对文件进行操作,不管是单一网络存储还是分布式网络存储,AI平台在对文件进行展示操作和传输操作时,都需要不断地通过网络进行文件目录的大小统计,还需要进行文件目录分块、打包,需要了解文件目录结构以及文件大小,以此判断磁盘空间剩余。由于文件的分块存放,就目前技术来说,对于大规模集群的AI平台的文件读写和传输,由于网络等各种原因,读写速度异常缓慢,文件目录的遍历在并发的情况下效率非常低,读取有时会出现lock导致卡住的情况。同时,文件目录的遍历会占用AI平台的大量资源,导致集群读写I/O较高,这会对其他模型的正常训练造成影响,也会影响到AI平台中其它模块的使用。
鉴于目前存在的上述问题,本申请提供一种文件管理方法、装置与介质,用于提高文件目录遍历读写时的速度,降低文件输出对AI平台I/O资源的占用。
为了便于理解,下面对本申请的技术方案所适用的系统架构进行介绍。参见图1所示出的本申请提供的一种文件管理系统的组成架构。
如图1所示,本申请所提供的文件管理系统可以包括计算节点1和网络存储2。网络存储2通过网络挂载到各个计算节点1上,计算节点1具体为AI平台的计算节点。AI平台通过计算节点1对网络存储2的文件进行读写操作。
在具体实施中,本申请提供的文件管理方法应用于网络存储2的管理节点,网络存储2的结构可以是直连式存储、网络附加存储或者存储区域网的形式。网络存储2包括存储器件(例如磁盘阵列、CD/DVD驱动器、磁带驱动器或可移动的存储介质)和内嵌系统软件,可提供跨平台文件共享功能。网络存储2通常在一个LAN上占有自己的管理节点,无需应用服务器的干预,允许用户在网络上存取数据,在这种配置中,网络存储集中管理和处理网络上的所有数据,将负载从应用或企业服务器上卸载下来,有效降低总拥有成本,保护用户投资。
进一步地,网络存储2的管理节点获取到文件系统的文件目录之后,主要结合Inotify对文件系统中存储的文件进行监控并为文件目录构建文件目录标签,在文件目录发生变化时,例如用户新增文件或者文件夹、删除文件或者文件夹、修改文件内容时,实时更新文件目录标签。
对网络存储2中的文件目录进行标签制作后,AI平台的使用主要有以下四个方面:第一,用于AI平台文件管理展示文件目录以及展示目录的大小。第二,当用户对文件目录操作时可以了解文件目录大小,AI平台提供文件目录的文件个数太多或者文件太大的提醒,在选择是否打开文件目录时,防止对文件操作造成网络存储2卡死的现象。第三,数据集通过网络存储缓存到计算节点本地时,避免统计文件大小,统计文件大小主要用于计算磁盘缓存空间大小剩余,避免通过网络计算数据集目录的大小以及I/O遍历统计相关操作。第四,在进行数据集目录缓存到本地或者文件目录的拷贝传输时,AI平台需要对文件目录进行分块,执行每一块来计算进度信息和实现断点续传功能,这就需要对存储端文件目录每层级的个数和大小非常清楚,文件目录标签避免了通过网络进行计算文件个数和大小造成的lock死锁现象。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。
图2为本申请实施例提供的一种文件管理方法的流程图。参见图2所示,该文件管理方法包括:
S10:获取文件系统的文件目录。
在具体实施中,文件系统是管理算法人员训练脚本、模型、数据集、训练日志等文件的存储系统,网络存储的管理节点通过Inotify获取文件系统的文件目录,Inotify是一个Linux特性,本申请中,Inotify主要用于监控文件系统操作,比如读取、写入和创建,不进行数据的实时同步更新。Inotify反应灵敏,用法非常简单,并且比cron任务的繁忙轮询高效得多。
需要说明的是,通常情况下,Inotify与应用软件结合比较紧密,比如Inotify-tools、rsync等来解决分布式集群文件一致性的问题。Inotify对Linux系统的监控效果比较好,针对百万级文件数量差异同步记录,利用内核接口Inotify可以监控文件系统下文件的各种变化情况,不进行实时同步,避免了目前使用过程出现的实时同步带来的文件频繁发送文件列表的问题。
S11:为文件目录构建文件目录标签。其中,文件目录标签包括文件目录的至少一种参数。
在具体实施中,文件目录包括用户的家目录、共享目录和数据集目录,这些目录存放了AI平台训练模型的脚本、训练后的模型和日志,数据集目录存放了海量的图片、文件标签等。在网络存储中为文件目录构建文件目录标签,文件目录的参数可以是文件目录的大小、文件目录下的文件夹的个数、大小、创建时间、修订时间、修订用户以及文件的个数、大小、创建时间、修订时间和修订用户。本实施例中,主要记录的信息包括文件目录的大小(SIZE),文件目录每层级的文件个数(FILENUM)和文件夹个数(DIRNUM)。例如:文件目录:/data,文件目录标签结构:目录名:/data,文件大小:10T,文件结构:文件夹数100个,文件数10000个。文件目录的大小用于数据集本地缓存拷贝时记录磁盘空间大小,对于文件数量较多的文件缓存过程,需要进行分块传输,记录文件目录的子目录下文件夹数量和文件数量(不包括子目录的子目录文件),则不需要再进行文件夹目录的统计操作。
需要说明的是,本申请中提到的文件目录的大小是文件目录中的文件所占用的存储空间,也可以理解为文件目录中的字节数,通常情况下以带前缀的字节数表示。文件实际所占磁盘空间取决于文件系统,文件系统的最大文件大小取决于保留存储尺寸信息的位数量,及文件系统的总大小。文件目录的大小可以是文件系统中总的文件大小的累积,也可以是文件系统中某个文件夹中所包含文件的大小。
S12:在获取到计算节点的获取请求时,将文件目录标签发送至计算节点。
进一步地,获取请求具体在计算节点进行文件传输时发送。
在具体实施中,AI平台需要对文件目录进行分块,执行每一块来计算进度信息和实现断点续传功能,这就需要对网络存储端的文件目录每层级的个数和大小都非常清楚,当AI平台需要对文件系统中的文件进行读写时,即需要通过计算节点进行文件传输时,计算节点向网络存储发送获取请求,网络存储获取到计算节点的获取请求时,将文件目录标签发送至计算节点,避免计算节点通过网络进行计算文件个数和大小造成lock死锁现象。
可以理解,获取请求还可以是计算节点在空闲状态下向网络存储发送,网络存储获取到计算节点的获取请求时,将文件目录标签发送至计算节点,以便于计算节点将文件目录标签缓存至本地存储,当AI平台需要对文件系统中的文件进行读写时,可以直从本地存储中获取文件目录标签,进一步提升文件目录的操作效率,保证AI训练平台的业务稳定运行。
在另一种实施例中,网络存储向计算节点发送文件目录标签时,为了保证传输的安全性,还可以在发送之前对文件目录标签进行加密,加密方式可以是对称加密或者非对称加密,还可以采用MD5算法进行加密,相适应的,计算节点可以通过对应的密钥对获取到的文件目录标签进行解密。
进一步地,为了减少传输过程中的网络压力,进一步减少数据传输量,网络存储还可以在发送之前对文件目录标签进行压缩,相适应的,计算节点可以通过对应的方式对获取到的文件目录标签进行解压缩。
本实施例所提供的文件管理方法,针对文件系统的文件目录进行标签制作,由于该文件目录标签里包括文件目录的至少一种参数,例如文件目录的大小、文件目录下的文件夹个数以及文件个数等,因此AI平台通过计算节点进行文件读取和传输时,尤其是在对大文件操作时,可以直接获取到文件目录标签,避免了计算节点通过网络对文件的大小和个数的统计操作,保证了文件通过I/O在网络上的使用效率,提高了文件目录遍历读写时的速度。同时,又由于读写速度的提高,所以降低了文件输出对AI平台I/O资源的占用,提高了模型训练的效率,提高了AI平台的算法人员使用AI平台的性能体验。
由于网络存储大多为分布式文件系统,众多的节点组成一个文件系统网络。每个节点可以分布在不同的地点,通过网络进行节点间的通信和数据传输。计算节点获取到各个节点中的文件目录时,文件目录可能是零散的、混乱的。因此,作为一种优选地实施例,在S10之后,还包括:
通过哈希算法对文件目录进行排码以构建文件目录有序队列。
在具体实施中,哈希散列函数能使AI平台对文件目录有序队列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位。一般可以通过直接寻址法或者随机数法对文件目录进行排码,当然还可以使用别的算法,本申请对此不作限定。
由于文件目录为AI平台使用的文件,读写较多,因此需要进行文件目录的监控的配置,利用分布式的方式进行文件目录监控。进一步地,在S11之后,还包括:
监控文件目录;
在文件目录发生变化的情况下,更新文件目录标签。
在具体实施中,本申请主要结合AI平台,根据网络存储中文件目录的使用情况,分别对家目录、共享目录和数据集目录配置对应的监控路径,每个监控路径的使用方式不同,监控产生的目录标签也不同。例如数据集目录只有新增和删除,没有修改,在AI平台使用的过程中只进行读,不进行写;用户的家目录需要对文件进行读写操作,监控产生的目录标签会比数据集多一些。
进一步地,监控文件目录具体为:
通过Inotify对文件目录进行监控。
在通过Inotify对文件目录进行监控之后,还包括:
获取Inotify发送的文件目录的变化列表。
网络存储中的管理节点结合Inotify高效的内核特性,对文件目录进行实时监控,文件目录的变化主要有以下三种情况:新增文件和文件夹、减少文件和文件夹、修改文件内容,针对不同的文件变化,Inotify会发送文件目录的变化列表给管理节点,以便于管理节点对存储的文件目录标签进行更新。
本实施例所提供的文件管理方法,基于Inotify高效的内核特性,对文件目录的变化进行监控并更新文件目录标签,由于网络存储是通过网络挂载到各个计算节点上,在AI平台进行文件操作时,有文件的展示功能、文件的拷贝功能、文件的磁盘监控功能,减少了通过网络进行计算文件大小和文件个数的过程,降低AI平台的CPU资源使用情况,充分利用网络传输速率,提高文件的传输速度、展示速度、校验磁盘速度,不影响AI平台训练速度,提高训练效率。
在上述实施例的基础上,在文件目录发生变化的情况下,更新文件目录标签,具体包括:
锁定文件目录标签;
根据文件目录的变化情况,对文件目录标签进行修改;
释放文件目录标签。
在具体实施中,先锁定文件目录标签,不允许计算节点或者其它节点访问,网络存储的管理节点根据Inotify发送的文件目录的变化列表,对文件目录标签进行修改及更新,更新之后对文件目录标签进行释放,表示其他用户可以开始访问文件目录标签。
本实施例所提供的文件管理方法,在修改文件目录标签之前进行锁定,修改结束后释放,保证了计算节点能够获取到最新的文件目录标签,提高了AI平台训练准确度。
在上述实施例中,对于文件管理方法进行了详细描述,本申请还提供文件管理装置对应的实施例。需要说明的是,本申请从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
图3为本申请实施例提供的一种文件管理装置的结构示意图。如图3所示,基于功能模块的角度,该装置包括:
获取模块10,用于获取文件系统的文件目录;
构建模块11,用于为文件目录构建文件目录标签;
发送模块12,用于在获取到计算节点的获取请求时,将文件目录标签发送至计算节点;
其中,文件目录标签包括文件目录的至少一种参数。
在上述实施例的基础上,作为一种优选地实施例,该装置还包括:
排码模块,通过哈希算法对文件目录进行排码以构建文件目录有序队列;
获取模块10,还用于监控文件目录;
构建模块11,还用于在文件目录发生变化的情况下,更新文件目录标签。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本申请实施例所提供的文件管理装置,针对文件系统的文件目录进行标签制作,由于该文件目录标签里包括文件目录的至少一种参数,例如文件目录的大小、文件目录下的文件夹个数以及文件个数等,因此AI平台通过计算节点进行文件读取和传输时,尤其是在对大文件操作时,可以直接获取到文件目录标签,避免了计算节点通过网络对文件的大小和个数的统计操作,保证了文件通过I/O在网络上的使用效率,提高了文件目录遍历读写时的速度。同时,又由于读写速度的提高,所以降低了文件输出对AI平台I/O资源的占用,提高了模型训练的效率,提高了AI平台的算法人员使用AI平台的性能体验。
图4为本申请另一实施例提供的文件管理装置的结构图,如图4所示,基于硬件结构的角度,该装置包括:存储器20,用于存储计算机程序;
处理器21,用于执行计算机程序时实现如上述实施例中文件管理方法的步骤。
本实施例提供的文件管理装置可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的文件管理方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括Windows、Unix、Linux等。
在一些实施例中,文件管理装置还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
本领域技术人员可以理解,图4中示出的结构并不构成对文件管理装置的限定,可以包括比图示更多或更少的组件。
本申请实施例提供的文件管理装置,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:针对文件系统的文件目录进行标签制作,由于该文件目录标签里包括文件目录的至少一种参数,例如文件目录的大小、文件目录下的文件夹个数以及文件个数等,因此AI平台通过计算节点进行文件读取和传输时,尤其是在对大文件操作时,可以直接获取到文件目录标签,避免了计算节点通过网络对文件的大小和个数的统计操作,保证了文件通过I/O在网络上的使用效率,提高了文件目录遍历读写时的速度。同时,又由于读写速度的提高,所以降低了文件输出对AI平台I/O资源的占用,提高了模型训练的效率,提高了AI平台的算法人员使用AI平台的性能体验。
最后,本申请还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本申请所提供的一种文件管理方法、装置与介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
- 文件管理装置、文件管理方法、文件管理方法程序以及记录该文件管理方法程序的记录介质
- 文件管理装置、文件管理系统、存储介质及文件管理方法