CN114579514B - 一种基于多计算节点的文件处理方法、装置及设备 - Google Patents

一种基于多计算节点的文件处理方法、装置及设备 Download PDF

Info

Publication number
CN114579514B
CN114579514B CN202210439031.1A CN202210439031A CN114579514B CN 114579514 B CN114579514 B CN 114579514B CN 202210439031 A CN202210439031 A CN 202210439031A CN 114579514 B CN114579514 B CN 114579514B
Authority
CN
China
Prior art keywords
directory
file
node
identifier
management node
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.)
Active
Application number
CN202210439031.1A
Other languages
English (en)
Other versions
CN114579514A (zh
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.)
Alibaba China Co Ltd
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba China Co Ltd
Alibaba Cloud Computing 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 Alibaba China Co Ltd, Alibaba Cloud Computing Ltd filed Critical Alibaba China Co Ltd
Priority to CN202210439031.1A priority Critical patent/CN114579514B/zh
Publication of CN114579514A publication Critical patent/CN114579514A/zh
Application granted granted Critical
Publication of CN114579514B publication Critical patent/CN114579514B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种基于多计算节点的文件处理方法、装置及设备,该方法包括:获取待读取的第一文件对应的第一标识;确定第一计算节点的本地目录中是否包括所述第一标识;本地目录用于记录第一计算节点的存储介质中已缓存文件的元信息;如果否,从目录管理节点的团体目录中获取第一标识对应的第一元信息;团体目录用于记录目录管理节点对应的各计算节点的存储介质中已缓存文件的元信息;第一元信息包括第二计算节点的访问地址,且第二计算节点的存储介质中已缓存第一文件;基于第二计算节点的访问地址获取第一标识对应的第一文件。通过本申请的技术方案,能够提升集群系统的存储容量,减轻文件存储系统的存储压力,提升文件存储系统的服务能力。

Description

一种基于多计算节点的文件处理方法、装置及设备
技术领域
本申请涉及互联网技术领域,尤其是一种基于多计算节点的文件处理方法、装置及设备。
背景技术
随着互联网技术的发展,大数据化成为一种趋势,多种线上及线下的数据中心场景中,数据不断增多,这对计算能力及存储能力提出了更高要求。在可能的实现方式中,为了管理海量数据,可以采用文件存储系统将计算与存储分离,文件存储系统可通过自身的存储能力为计算节点提供存储服务。文件存储系统的存储空间一般由多台存储服务器构成,将这些存储服务器称为存储节点,每个存储节点均配置有一个或多个硬盘。文件存储系统的存储能力受到硬盘数量、数据中心网络接入能力和物理空间等因素的限制,文件存储系统的总存储容量有限,且文件存储系统能够服务的计算节点数量有限。在文件存储系统服务的计算节点数量较多、数据海量和弹性计算节点较多时,文件存储系统很难满足网络中的计算通信的需求,致使文件存储系统的服务效率较低,影响用户的使用体验,无法满足用户的使用需求。
发明内容
第一方面,本申请提供一种基于多计算节点的文件处理方法,文件管理系统包括目录管理节点和多个计算节点,所述方法应用于第一计算节点,包括:获取待读取的第一文件对应的第一标识;确定所述第一计算节点的本地目录中是否包括所述第一标识;其中,所述本地目录用于记录第一计算节点的存储介质中已缓存文件的元信息;如果否,则从目录管理节点的团体目录中获取所述第一标识对应的第一元信息;其中,所述团体目录用于记录所述目录管理节点对应的各计算节点的存储介质中已缓存文件的元信息;其中,所述第一元信息包括第二计算节点的访问地址,且所述第二计算节点的存储介质中已缓存所述第一文件;基于所述第二计算节点的访问地址获取所述第一标识对应的第一文件。
第二方面,本申请提供一种基于多计算节点的文件处理方法,文件管理系统包括多个目录管理节点和多个计算节点,针对每个目录管理节点,所述目录管理节点对应至少两个计算节点,所述方法应用于第一目录管理节点,包括:接收第一目录管理节点对应的第一计算节点发送的代理查询请求,所述代理查询请求包括第一文件对应的第一标识;其中,所述代理查询请求是所述第一计算节点的本地目录未包括所述第一标识时发送,且所述本地目录用于记录所述第一计算节点的存储介质中已缓存文件的元信息;若第一目录管理节点的团体目录包括所述第一标识,则从所述团体目录中获取所述第一标识对应的第一元信息,其中,所述团体目录用于记录第一目录管理节点对应的各计算节点的存储介质中已缓存文件的元信息;若所述团体目录不包括所述第一标识,则将所述代理查询请求发送给第二目录管理节点,以使第二目录管理节点从第二目录管理节点的团体目录中获取所述第一标识对应的第一元信息,并将所述第一元信息发送给第一目录管理节点;向所述第一计算节点发送代理查询响应,所述代理查询响应包括所述第一标识对应的第一元信息,所述第一元信息包括第二计算节点的访问地址,且第二计算节点的存储介质中已缓存所述第一文件,以使第一计算节点基于第二计算节点的访问地址获取所述第一标识对应的第一文件。
第三方面,本申请提供一种基于多计算节点的文件处理装置,文件管理系统包括目录管理节点和多个计算节点,所述装置应用于第一计算节点,包括:获取模块,用于获取待读取的第一文件对应的第一标识;确定模块,用于确定所述第一计算节点的本地目录中是否包括所述第一标识;所述本地目录用于记录第一计算节点的存储介质中已缓存文件的元信息;所述获取模块,还用于若所述本地目录不包括所述第一标识,则从目录管理节点的团体目录中获取所述第一标识对应的第一元信息;其中,所述目录管理节点的团体目录用于记录所述目录管理节点对应的各计算节点的存储介质中已缓存文件的元信息;其中,所述第一元信息包括第二计算节点的访问地址,且所述第二计算节点的存储介质中已缓存所述第一文件;读取模块,用于基于所述第二计算节点的访问地址,从所述第二计算节点的存储介质中获取所述第一标识对应的第一文件。
第四方面,本申请提供一种基于多计算节点的文件处理装置,文件管理系统包括多个目录管理节点和多个计算节点,针对每个目录管理节点,所述目录管理节点对应至少两个计算节点,所述装置应用于第一目录管理节点,包括:接收模块,用于接收第一目录管理节点对应的第一计算节点发送的代理查询请求,代理查询请求包括第一文件对应的第一标识;其中,所述代理查询请求是所述第一计算节点的本地目录未包括所述第一标识时发送,且所述本地目录用于记录所述第一计算节点的存储介质中已缓存文件的元信息;获取模块,用于若第一目录管理节点的团体目录包括所述第一标识,则从所述团体目录中获取所述第一标识对应的第一元信息,其中,所述团体目录用于记录第一目录管理节点对应的各计算节点的存储介质中已缓存文件的元信息;若所述团体目录不包括所述第一标识,则将所述代理查询请求发送给第二目录管理节点,以使第二目录管理节点从第二目录管理节点的团体目录中获取所述第一标识对应的第一元信息,将第一元信息发送给第一目录管理节点;发送模块,用于向所述第一计算节点发送代理查询响应,代理查询响应包括所述第一标识对应的第一元信息,第一元信息包括第二计算节点的访问地址,且第二计算节点的存储介质中已缓存所述第一文件,以使第一计算节点基于第二计算节点的访问地址获取所述第一标识对应的第一文件。
第五方面,本申请提供一种电子设备,包括:处理器和机器可读存储介质,机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;处理器用于执行机器可执行指令,以实现上述基于多计算节点的文件处理方法。
由以上技术方案可见,本申请实施例中,通过设置记录单个计算节点中已缓存文件的元信息的本地目录和记录多个计算节点中已缓存文件的元信息的团体目录,在第一文件为第一计算节点中已缓存文件时,第一计算节点可基于本地目录从第一计算节点中获取第一文件,在第一文件为目录管理节点对应计算节点中已缓存文件时,第一计算节点可基于目录管理节点的团体目录从第二计算节点中获取第一文件。上述方式能够将计算节点的本地存储构建成一个附加的弹性缓存池,从而提升集群系统的存储容量,并减轻文件存储系统的存储压力,提升文件存储系统的服务能力。上述方式能够充分利用网络拓扑中存在距离的特性,优化缓存数据传输机制来提升文件读性能。采用去中心化的架构来设计弹性缓存池,可以有效防止单点故障以及单点带来的性能瓶颈。
附图说明
图1是基于多计算节点的文件处理方法的流程示意图;
图2是基于多计算节点的文件处理方法的流程示意图;
图3A和图3B是本申请一种实施方式中的文件管理系统的结构示意图;
图3C和图3D是本申请一种实施方式中的元数据表项的结构示意图;
图4是基于多计算节点的文件处理方法的流程示意图;
图5A和图5B是基于多计算节点的文件处理方法的流程示意图;
图6是基于多计算节点的文件处理方法的流程示意图;
图7是基于多计算节点的文件处理方法的流程示意图;
图8A和图8B是基于多计算节点的文件处理装置的结构示意图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在介绍本申请实施例的技术方案之前,先介绍与本申请有关的技术术语。
文件存储系统:用于实现文件存储的系统,可以是NAS(Network AttachedStorage,网络附加存储)系统,也可以是其它类型的存储系统,对此不做限制。NAS系统是一种对外通过网络共享其存储内容的、文件存储空间的总称。
文件存储系统的存储空间一般由多台存储服务器构成,本实施例中将这些存储服务器称为存储节点,每个存储节点均配置有一个或多个硬盘。
Kubernetes(K8s):Kubernetes是一个开源的、用于管理云平台中多个主机上容器的应用。Kubernetes提供了应用部署、规划、更新和维护的机制。
缓存池:缓存池一般是更靠近存储数据消费者的、IO带宽更快的数据存储硬件,保存了文件存储系统中的部分文件供存储数据消费者更快的使用。
在线上及线下的数据中心场景中,常采用K8s等容器管理工具构建计算节点,或者由大量物理服务器构建计算节点。对于集中或分布的存储场景,可以使用计算和存储分离的思想,使用文件存储系统为计算节点提供存储服务。文件存储系统受数据中心物理空间、服务器所能插入硬盘数量和数据中心网络接入能力等因素的限制,在一些计算节点数量多、计算数据海量和伴随着大量计算节点弹入弹出的场景中,文件存储系统的存储容量及数据调度能力可能无法支撑网络中的计算通信需求,影响文件存储系统的服务质量,进而降低用户使用体验。比如说,计算和存储之间的配合上存在如下问题:
文件存储系统无法满足弹性需求:在大规模的虚拟计算集群中,伴随着成本、应用特性等问题,计算过程中往往有大量计算节点的弹入弹出需求,而大量的弹入弹出对于文件存储系统的存储容量也提出了不断变化的需求,但是,文件存储系统不能满足此类弹性要求,只能以计算集群所预计的最大并发数,来预估服务能力上限以及存储容量需求等,并以此来规划存储资源(如存储节点管理的资源、存储容量资源、存储网络资源等)的分配。
集群总的存储容量有限,但数据往往存在很多的冗余副本:虚拟计算集群本身是构建在物理集群上的,往往物理集群规划构建时,文件存储系统的服务能力上限已经确定,为了数据安全性考虑,在集群运行过程中,文件存储系统应尽量避免频繁扩容,此时,不断增长的计算需求(往往是由于物理集群上不断增加的任务带来)和不断消耗的存储总是会带来矛盾,而文件存储系统往往会限制计算节点的扩张。但是,考虑到真实场景中,多个计算节点在整个计算过程中往往会重复对同样的文件进行操作,那么,若充分利用计算节点中的缓存资源,可以有效减轻文件存储系统的存储压力,提升服务能力上限。
集群内网络能力无法充分释放:大量的计算场景,往往需要为计算预留存储带宽,甚至建设专门的计算网络以满足瞬时并发的大量通信,如AI训练。但是,在实际运行网络中计算通信呈现瞬时并发的特点,从而导致计算网络高性能需求(高吞吐、低时延),但从时间维度观察使用频率低的特征。若可以充分利用计算网络的空闲时间来服务存储,则可以大大提升物理集群的整体效率。
下面结合示例对数据中心场景中,文件存储系统可能存在的问题进行说明。
在一种高性能计算(high performance computing,HPC)场景中,可基于计算节点的本地存储资源,开发一套缓存预取机制和缓存老化机制,以提升文件访问的时延并减轻对象存储目标(object storage target,OST)侧的压力。多节点读取数据可能因并发加载同一数据而出现加载文件失败,读操作可能会受到限制;同时高速缓冲存储器(cache)容量较小,无法缓存超大文件。在随机读的场景中命中率较低,降低了文件存储系统的服务能力。
在另一种数据中心场景中,可以通过中心管理节点来管理多个计算节点的存储,构建一个分布式的存储池。但是,基于中心管理节点的设计架构,容易因中心管理节点的故障造成存储系统不可用。在大量计算节点弹入弹出的场景中,中心管理设备也可能受到自身管理调度能力的限制,而无法高效合理的分配计算节点资源,致使文件存储系统的服务能力降低。
有鉴于此,本申请实施例中提供一种文件处理方法,通过在计算节点维护一个本地目录,以及利用网络拓扑感知的能力,在每个网络节点(如物理交换机或者虚拟交换机等)下维护一个目录管理节点,通过在目录管理节点维护一个团体目录,从而将所有计算节点的部分本地存储构成一个大的缓存池,由于所有计算节点都是可以弹性的,所以随着计算节点的弹入弹出,缓存池也具有灵活弹性的特点。其中,本地目录包括单个计算节点中缓存文件的元信息,团体目录包括多个计算节点(即目录管理节点对应的多个计算节点,这些计算节点与目录管理节点连接在同一个网络节点)中缓存文件的元信息,即团体目录记录这些计算节点已缓存到本地存储(如内存、本地硬盘等)中文件的元信息。
通过维护本地目录和团体目录,能够将计算节点的本地存储空间构建为附加的弹性缓存池,扩展集群系统的容量上限,同时可以主动根据目录获取文件数据,无需中心管理节点的管理调度,提升了文件存储系统的服务能力。
以下结合具体实施例,对本申请实施例的技术方案进行说明。
本申请实施例提出一种基于多计算节点的文件处理方法,文件管理系统包括目录管理节点和多个计算节点,该方法可以应用于第一计算节点,第一计算节点是所有计算节点中的任一计算节点。参见图1所示,该方法包括:
步骤101、获取待读取的第一文件对应的第一标识。
步骤102、确定第一计算节点的本地目录中是否包括该第一标识;其中,本地目录用于记录第一计算节点的存储介质中已缓存文件的元信息。如果否,则执行步骤103。如果是,则从第一计算节点的本地目录中获取第一标识对应的第二元信息,第二元信息包括第一文件对应的存储地址;基于第一文件对应的存储地址获取第一标识对应的第一文件,即从本地存储介质中获取第一文件。
步骤103、从目录管理节点的团体目录中获取该第一标识对应的第一元信息;其中,该团体目录用于记录目录管理节点对应的各计算节点的存储介质中已缓存文件的元信息;其中,第一元信息可以包括第二计算节点的访问地址(如IP地址等),且第二计算节点的存储介质中已缓存该第一文件。
在一种可能的实施方式中,文件管理系统包括多个目录管理节点,各目录管理节点对应至少两个计算节点,第一计算节点可以向第一计算节点对应的第一目录管理节点发送代理查询请求,以使第一目录管理节点在团体目录包括该第一标识时,从该团体目录中获取该第一标识对应的第一元信息,在团体目录不包括该第一标识时,从第二目录管理节点的团体目录中获取该第一标识对应的第一元信息。第一计算节点接收第一目录管理节点针对代理查询请求返回的代理查询响应,该代理查询响应包括该第一标识对应的第一元信息。
步骤104、基于第二计算节点的访问地址获取第一标识对应的第一文件。
在一种可能的实施方式中,文件管理系统还包括存储节点(如文件管理系统还包括文件存储系统,即NAS系统等,即存储节点也可以称为NAS节点),且存储节点用于存储文件。若第一计算节点未从目录管理节点的团体目录中获取到第一标识对应的第一元信息,则可以从存储节点获取第一标识对应的第一文件。在从存储节点获取第一标识对应的第一文件之后,可以在第一计算节点的存储介质中缓存第一文件,并在第一计算节点的本地目录中记录第一文件对应的第二元信息,该第二元信息包括第一文件对应的第一标识和第一文件对应的存储地址。第一计算节点将第一文件对应的第一元信息发送给第一计算节点对应的第一目录管理节点,由第一目录管理节点在团体目录中记录第一元信息,第一元信息包括第一文件对应的第一标识和第一计算节点的访问地址。
示例性的,基于第二计算节点的访问地址获取第一标识对应的第一文件,可以包括但不限于:将目录管理节点的团体目录中第一标识对应的读计数器加预设数值(如1);基于第二计算节点的访问地址,从第二计算节点的存储介质中获取第一标识对应的第一文件;在第一文件获取完成之后,将目录管理节点的团体目录中第一标识对应的读计数器减预设数值。
示例性的,基于第一文件对应的存储地址获取第一标识对应的第一文件,可以包括但不限于:将第一计算节点的本地目录中第一标识对应的读计数器加预设数值(如1);基于第一文件对应的存储地址,从第一计算节点的存储介质中获取第一标识对应的第一文件;在第一文件获取完成之后,将第一计算节点的本地目录中第一标识对应的读计数器减预设数值。
在一种可能的实施方式中,第一计算节点还可以获取待写入的第二文件对应的第二标识;向目录管理节点发送文件写通知消息,文件写通知消息包括第二标识,以使目录管理节点基于第二标识禁止针对第二文件的新增读请求,并在目录管理节点的团体目录中第二标识对应的读计数器为零后,从目录管理节点对应的各计算节点的存储介质中删除第二文件,从目录管理节点的团体目录中删除第二标识对应的元信息,并从目录管理节点对应的各计算节点的本地目录中删除第二标识对应的元信息。然后,第一计算节点可以接收目录管理节点针对写通知消息返回的文件写结果消息,若该文件写结果消息表示第二文件已成功删除,则第一计算节点可以将第二文件写入到存储节点。
示例性的,文件管理系统可以包括至少两个网络节点,针对每个网络节点:该网络节点下连接至少两个计算节点,从至少两个计算节点中选取一个计算节点作为目录管理节点,且该目录管理节点对应这至少两个计算节点;或,该网络节点下连接至少两个计算节点和非计算节点,将该非计算节点选取为目录管理节点,且该目录管理节点对应这至少两个计算节点。
由以上技术方案可见,本申请实施例中,通过设置记录单个计算节点中已缓存文件的元信息的本地目录和记录多个计算节点中已缓存文件的元信息的团体目录,在第一文件为第一计算节点中已缓存文件时,第一计算节点可基于本地目录从第一计算节点中获取第一文件,在第一文件为目录管理节点对应计算节点中已缓存文件时,第一计算节点可基于目录管理节点的团体目录从第二计算节点中获取第一文件。上述方式能够将计算节点的本地存储构建成一个附加的弹性缓存池,从而提升集群系统的存储容量,并减轻文件存储系统的存储压力,提升文件存储系统的服务能力。上述方式能够充分利用网络拓扑中存在距离的特性,优化缓存数据传输机制来提升文件读性能。采用去中心化的架构来设计弹性缓存池,可以有效防止单点故障以及单点带来的性能瓶颈。
基于与上述方法同样的申请构思,本申请实施例中还提出另一种基于多计算节点的文件处理方法,文件管理系统可以包括多个目录管理节点和多个计算节点,针对每个目录管理节点,该目录管理节点对应至少两个计算节点,该方法可以应用于第一目录管理节点,且第一目录管理节点可以是所有目录管理节点中的任一目录管理节点。参见图2所示,为该方法的流程示意图,包括:
步骤201、接收第一目录管理节点对应的第一计算节点发送的代理查询请求,该代理查询请求包括第一文件对应的第一标识;其中,该代理查询请求是第一计算节点的本地目录未包括该第一标识时发送的,且第一计算节点的本地目录用于记录第一计算节点的存储介质中已缓存文件的元信息。
步骤202、若第一目录管理节点的团体目录包括该第一标识,则从该团体目录中获取该第一标识对应的第一元信息,其中,该团体目录用于记录第一目录管理节点对应的各计算节点的存储介质中已缓存文件的元信息。或者,若该团体目录不包括该第一标识,则将该代理查询请求发送给第二目录管理节点,以使第二目录管理节点从第二目录管理节点的团体目录中获取该第一标识对应的第一元信息,并将该第一元信息发送给第一目录管理节点。
步骤203、向第一计算节点发送代理查询响应,该代理查询响应包括第一标识对应的第一元信息,该第一元信息可以包括第二计算节点的访问地址,且第二计算节点的存储介质中已缓存该第一文件,以使第一计算节点基于第二计算节点的访问地址从第二计算节点获取该第一标识对应的第一文件。
在一种可能的实施方式中,若第一目录管理节点的团体目录不包括该第一标识,且第二目录管理节点的团体目录不包括该第一标识,则第一目录管理节点向第一计算节点发送查询失败响应,以使第一计算节点从文件管理系统的存储节点获取第一标识对应的第一文件,并在第一计算节点的存储介质中缓存该第一文件,在第一计算节点的本地目录中记录第一文件对应的第二元信息,且该第二元信息包括第一文件对应的第一标识和所述第一文件对应的存储地址。以及,第一目录管理节点接收第一计算节点发送的第一文件对应的第一元信息,在第一目录管理节点的团体目录中记录该第一元信息,该第一元信息可以包括第一文件对应的第一标识和第一计算节点的访问地址。
在一种可能的实施方式中,第一目录管理节点可以接收第一计算节点发送的文件写通知消息,文件写通知消息包括第二文件对应的第二标识;基于第二标识禁止针对第二文件的新增读请求,并在第一目录管理节点的团体目录中第二标识对应的读计数器为零后,从第一目录管理节点对应的各计算节点的存储介质中删除第二文件,从第一目录管理节点的团体目录中删除第二标识对应的元信息,并从第一目录管理节点对应的各计算节点的本地目录中删除第二标识对应的元信息。以及,第一目录管理节点将文件写通知消息发送给第二目录管理节点,以使第二目录管理节点基于第二标识禁止针对第二文件的新增读请求,并在第二目录管理节点的团体目录中第二标识对应的读计数器为零后,从第二目录管理节点对应的各计算节点的存储介质中删除第二文件,从第二目录管理节点的团体目录中删除第二标识对应的元信息,并从第二目录管理节点对应的各计算节点的本地目录中删除第二标识对应的元信息。以及,在第二文件已成功删除之后,第一目录管理节点向第一计算节点发送文件写结果消息,以使第一计算节点基于文件写结果消息将第二文件写入到存储节点。
示例性的,第一目录管理节点将代理查询请求发送给第二目录管理节点,包括但不限于:从成员名单表中查询第二目录管理节点的访问地址,第二目录管理节点是成员名单表中除第一目录管理节点之外的每个目录管理节点;基于第二目录管理节点的访问地址,将代理查询请求发送给第二目录管理节点;其中,成员名单表用于记录所有目录管理节点的访问地址。
第一目录管理节点将文件写通知消息发送给第二目录管理节点,可以包括但不限于:从成员名单表中查询第二目录管理节点的访问地址,第二目录管理节点是成员名单表中除第一目录管理节点之外的每个目录管理节点;基于第二目录管理节点的访问地址,将文件写通知消息发送给第二目录管理节点。
在一种可能的实施方式中,所有目录管理节点中存在主目录管理节点和非主目录管理节点;若第一目录管理节点是主目录管理节点,则:可以获取非主目录管理节点的访问地址,在成员名单表中记录非主目录管理节点的访问地址,并将成员名单表发送给每个非主目录管理节点。在非主目录管理节点退出时,从成员名单表中删除该非主目录管理节点的访问地址,并将修改后的成员名单表发送给每个非主目录管理节点。若第一目录管理节点是非主目录管理节点,则:可以将第一目录管理节点的访问地址发送给主目录管理节点,以使主目录管理节点在成员名单表中记录第一目录管理节点的访问地址,以及,第一目录管理节点可以接收主目录管理节点发送的成员名单表。
示例性的,文件管理系统可以包括至少两个网络节点,针对每个网络节点:该网络节点下连接至少两个计算节点,从至少两个计算节点中选取一个计算节点作为目录管理节点,且该目录管理节点对应这至少两个计算节点;或,该网络节点下连接至少两个计算节点和非计算节点,将该非计算节点选取为目录管理节点,且该目录管理节点对应这至少两个计算节点。
由以上技术方案可见,本申请实施例中,通过设置记录单个计算节点中已缓存文件的元信息的本地目录和记录多个计算节点中已缓存文件的元信息的团体目录,在第一文件为第一计算节点中已缓存文件时,第一计算节点可基于本地目录从第一计算节点中获取第一文件,在第一文件为目录管理节点对应计算节点中已缓存文件时,第一计算节点可基于目录管理节点的团体目录从第二计算节点中获取第一文件。上述方式能够将计算节点的本地存储构建成一个附加的弹性缓存池,从而提升集群系统的存储容量,并减轻文件存储系统的存储压力,提升文件存储系统的服务能力。上述方式能够充分利用网络拓扑中存在距离的特性,优化缓存数据传输机制来提升文件读性能。采用去中心化的架构来设计弹性缓存池,可以有效防止单点故障以及单点带来的性能瓶颈。
以下结合具体应用场景,对本申请实施例的文件处理方法进行说明。
本申请实施例中提出一种基于网络拓扑感知能力及多级目录机制构建弹性缓存池的方法,能够提升网络存储系统的服务能力(即网络存储系统接入的计算节点数量)及整体文件存储读IO性能,尤其是小文件读性能。
本申请实施例中,基于网络拓扑感知能力在每个网络节点下设置一个目录管理节点,基于多级目录的方式对所有计算节点中已缓存文件进行记录,即在计算节点维护本地目录,本地目录用于记录本计算节点内已缓存文件的元信息(元信息也可以称为元数据信息)。在目录管理节点维护团体目录,团体目录用于记录与目录管理节点在同一网络节点下所有计算节点已缓存文件的元信息。文件在单个计算节点内仅保存一份,但在整个缓存池中可能有多份拷贝。通过多级目录共享,实质上将所有计算节点的本地存储虚拟成一个弹性缓存池。
通过采用上述方式,可以具有如下优点:去中心化:目录的管理由分散在多个网络节点下的目录管理节点及计算节点保存,任意一个计算节点失效退出都不会影响整个缓存池的可用性,对缓存池的性能影响非常小,通过去中心化,可以有效避免整个缓存池的单点故障问题。提升集群存储IO性能:通过充分利用计算节点的本地存储(特别是高速存储)来优化集群内的存储IO性能。提高网络存储系统的服务能力:可以在同样的物理环境下服务更多的计算节点,从而更加充分的利用硬件资源。具备良好的弹性伸缩能力:随着计算节点的弹入弹出,存储池也一并进行弹性伸缩,且由于没有集中管理的中心节点,其良好的弹性伸缩无需额外的管理开销。无需侵入存储文件系统:即使缓存池失效也不影响计算节点访问存储文件系统,可适配绝大多数的存储文件系统。
本申请实施例的技术方案,适合多种类型的网络拓扑架构,比如说,可以在数据中心场景中广泛使用的Fat-tree拓扑中,采用本申请实施例的技术方案。
参见图3A所示,为文件管理系统的结构示意图,文件管理系统(文件管理系统也可以称为集群系统、K8s集群系统、计算集群等,对此不做限制)可以包括多个网络节点(如物理交换机或虚拟交换机等),每个网络节点下连接多个计算节点和一个目录管理节点。文件管理系统还可以包括文件存储系统,文件存储系统可以由多个存储节点组成,存储节点也可称为NAS节点。多个网络节点通过汇聚层交换机连接到接入层交换机,继而连接到存储节点。
计算节点是实际执行计算工作的节点,可以是具有强大CPU或GPU算力的机器,如计算节点可以是主机、服务器、虚拟机等,对此计算节点的类型不做限制。计算节点可以是弹性伸缩的,即可以增加计算节点或者删除计算节点。参见图3B所示,计算节点可以包括存储介质(如内存、硬盘等本地存储介质)、本地目录、Agent模块(代理模块)、客户端模块、POSIX(Portable Operating System Interface,可移植操作系统接口)模块和集群通信模块。
其中,存储介质用于存储计算节点从文件存储系统获取的文件。本地目录用于记录本计算节点的存储介质中已缓存文件的元信息。Agent模块作为计算节点的缓存池代理,一般是一个用户进程,具有唯一的全局标识(一般是计算节点的网络地址),本计算节点的Agent模块可以与其它计算节点的Agent模块通信,具有网络访问能力,可以通过网络与其它计算节点上的Agent模块进行通信,以获取其它计算节点的存储介质中已缓存的文件。客户端模块具有网络访问能力,可以通过网络与存储节点进行通信,以从存储节点获取文件,或者将本计算节点的存储介质中已缓存的文件发送给存储节点。POSIX模块可以对系统的POSIX API进行劫持,主动筛选文件存储系统的访问动作进行处理,POSIX模块用于实时监控并劫持计算节点对文件存储系统的读写访问动作。集群通信模块具有网络访问能力,可以通过网络与目录管理节点进行通信。
针对本地目录来说,该本地目录的每个元数据表项(entry)用于记录一个已缓存文件的元信息,Agent模块还可以具备对本地目录的元数据表项的读写能力,可以申请元数据表项的控制权,然后在元数据表项中添加已缓存文件的元信息,或者从元数据表项中删除已缓存文件的元信息,即删除元数据表项。
参见图3A所示,所有计算节点的存储介质(即本地存储介质)可以形成一个弹性缓存池,即可以使用弹性缓存池对存储节点中的文件进行存储。
目录管理节点是执行缓存池目录管理的节点,可以是专用节点,也可以是剩余算力比较多的计算节点,且每个网络节点下存在一个目录管理节点,该目录管理节点用于管理该网络节点下所有计算节点的存储介质构成的缓存池。显然,针对每个网络节点,可以从该网络节点下连接的所有计算节点中选取一个计算节点作为目录管理节点,或者,将某个非计算节点选取为目录管理节点。
参见图3B所示,目录管理节点可以包括成员名单表、团体目录、Agent模块和集群通信模块。其中,成员名单表用于记录当前网络拓扑下所有目录管理节点的信息(如访问地址等)。团体目录用于记录与目录管理节点在同一网络节点下所有计算节点的已缓存文件的元信息。Agent模块作为目录管理节点的管理模块,具备对成员名单表和团体目录的读写能力。针对团体目录来说,该团体目录的每个元数据表项(entry)用于记录一个已缓存文件的元信息,Agent模块可以具备对团体目录的元数据表项的读写能力,可以申请元数据表项的控制权,然后在元数据表项中添加已缓存文件的元信息,或者从元数据表项中删除已缓存文件的元信息,即删除元数据表项。针对成员名单表来说,该成员名单表的每个表项(entry)用于记录一个目录管理节点的信息,Agent模块可以具备对成员名单表的表项的读写能力,可以申请表项的控制权,然后在表项中添加目录管理节点的信息,或者从表项中删除目录管理节点的信息。集群通信模块具有网络访问能力,可以通过网络与计算节点的集群通信模块进行通信。
其中,目录管理节点可以支持运行多个任务,目录管理节点保存的目录资源可以是多个任务的团体目录,对于不同任务的团体目录来说,需要实现相互隔离。为了方便描述,本实施例中以一个团体目录为例进行说明。
其中,可以将同一个网络节点下的所有计算节点的集合称为一个团体,该网络节点下的目录管理节点对应该团体内的所有计算节点,也就是说,该目录管理节点的团体目录包括该团体内的所有计算节点对应的元信息。
示例性的,参见图3A所示,弹性缓存池为所有计算节点的本地存储介质的集合,可以理解为,将所有计算节点的本地存储介质的集合定义为弹性缓存池,而不是独立于计算节点重新建立一个弹性缓存池。本申请实施例中提供的文件处理方法,可以将计算节点的本地存储介质构建为附加的弹性缓存池,扩展了集群系统的容量上限,可以根据本地目录和团体目录获取文件数据,从而无需中心管理节点的管理调度,提升了文件存储系统的服务能力。
示例性的,本申请实施例可适用于AI模型训练和HPC渲染计算等场景,当然,AI模型训练和HPC渲染计算只是两个示例,对此应用场景不做限制。
例如,用户在基于本申请实施例提供的文件处理方法训练AI模型时,计算节点可以从文件存储系统中读取图片进行单次训练。在第K次训练时,计算节点重新随机读取图片,其中部分图片可能在第J(J<K)次训练中被计算节点使用,并缓存在计算节点的本地存储介质中,那么,在第K次训练时,计算节点可以基于自身的本地存储介质和/或其它计算节点的本地存储介质快速读取该部分图片,减少对文件存储系统的访问,提升文件存储系统的服务能力。
又例如,在HPC渲染计算场景中,计算节点从文件存储系统中加载单次渲染任务所需数据,在第K次渲染时,计算节点获取的部分数据可能在第J(J<K)次渲染任务中被调用,并缓存在计算节点的本地存储介质,那么,在第K次渲染时,计算节点基于自身的本地存储介质和/或其它计算节点的本地存储快速获取该部分数据,减少对文件存储系统的访问,提升文件存储系统的服务能力。
在上述实施例中,可以涉及本地目录、团体目录和成员名单表,以下结合具体示例,对本地目录、团体目录和成员名单表的数据结构进行说明。
本地目录保存在计算节点本地,用于记录计算节点的本地存储介质中已缓存文件的元信息,使用散列表方式记录并管理,本地目录的读取过程可以采用loop方式,当然,loop方式只是示例。本地目录可以存放在计算节点的内存中,通过将本地目录存放在计算节点的内存中,以加快数据的遍历速度。
本地目录的每个可记录信息的位置称为entry,记录的数据结构称为元数据表项,元数据表项用于记录已缓存文件的元信息,例如,文件路径+文件名或文件GUID,文件在本地存储介质中的地址信息(如存储地址)等。
参见图3C所示,是本地目录的元数据表项的结构,可以包括表项状态、读计数器(表示当前存在多少个读请求正在读取该文件)、文件全局唯一标识、Agent全局唯一标识、文件在本地存储介质中的地址信息(如存储地址)等字段。
团体目录保存在目录管理节点,用于记录网络节点下所有计算节点的存储介质中已缓存文件的元信息,使用散列表方式记录并管理,团体目录的读取过程可以采用loop方式,当然,loop方式只是示例。团体目录可以存放在目录管理节点的内存中,通过将团体目录存放在内存中以加快数据的遍历速度。
团体目录的每个可记录信息的位置称为entry,记录的数据结构称为元数据表项,元数据表项用于记录已缓存文件的元信息,团体目录只可以被目录管理节点访问并修改,计算节点有需求时请求目录管理节点代理访问并返回结果。
团体目录的元数据表项的结构,可以包括表项状态、读计数器(用于表示当前存在多少个读请求正在读取该文件)、文件全局唯一标识、文件对应的计算节点的地址信息(如访问地址,即计算节点的IP地址)等字段。其中,读计数器的初始值可以为0,每个读请求操作会将读计数器加1。
成员名单表保存在每个目录管理节点,用于记录所有目录管理节点的标识信息,如目录管理节点的访问地址(即IP地址),成员名单表由多个表项组成,每个表项的数据结构可以参见图3D所示。针对每个表项来说,可以包括主标识、成员权重和目录管理节点的访问地址,主标识可以为“是”或者“否”,“是”表示目录管理节点为主目录管理节点(master),“否”表示目录管理节点不为主目录管理节点。成员权重用于决策目录管理节点是否能够成为主目录管理节点。目录管理节点的访问地址是目录管理节点的全局唯一标识。
在上述实施例中,涉及目录管理节点和计算节点的初始化创建过程,针对目录管理节点的创建过程,当某网络节点下出现第一个计算节点时,就可以为该网络节点创建一个目录管理节点,由该目录管理节点的团体目录记录该网络节点下所有计算节点对应的元信息。针对计算节点的创建过程,当计算节点加入集群时,为该计算节点创建Agent模块,计算节点的Agent模块持续通过网络探测目录管理节点的心跳,一旦目录管理节点失联,主动退出缓存池机制。
在上述实施例中,所有目录管理节点均需要维护成员名单表,且成员名单表用于记录所有目录管理节点的标识信息,成员名单表的维护过程可以包括:
对于所有的目录管理节点来说,会有一个目录管理节点作为主目录管理节点(即master),而其余目录管理节点作为非主目录管理节点。比如说,基于每个目录管理节点进入成员名单表的先后顺序,可以为每个目录管理节点分配一个权重,例如,目录管理节点1第一个进入成员名单表时,目录管理节点1的权重为1,目录管理节点2第二个进入成员名单表时,目录管理节点2的权重为2,以此类推。在此基础上,可以将权重最小的目录管理节点作为主目录管理节点,而剩余目录管理节点作为非主目录管理节点。当然,也可以采用其它方式确定各目录管理节点的权重,对此不做限制。显然,在以每个目录管理节点进入成员名单表的先后顺序,为每个目录管理节点分配权重时,可以由创建最早的一个目录管理节点作为主目录管理节点。当然,上述只是从所有目录管理节点中选取主目录管理节点的示例,对此不做限制,可以采用任意方式从所有目录管理节点中选取主目录管理节点,只要能够选取出主目录管理节点即可。
对于所有的目录管理节点来说,目录管理节点的状态有active状态、standby状态和dead状态。其中,active状态表示目录管理节点处于活动状态,即这个目录管理节点能够正常工作。standby状态表示目录管理节点处于备用状态,当前还没有正常工作,需要切换到active状态后能够正常工作。dead状态表示目录管理节点处于不运行状态,即这个目录管理节点已经无法正常工作。
master(主目录管理节点)可以通过心跳机制与每个目录管理节点(处于active状态的目录管理节点)进行定期通信,当通过心跳确认某个目录管理节点仍然处于active状态时,则保持这个目录管理节点处于成员名单表,当无法通过心跳确认某个目录管理节点处于active状态时,则从成员名单表中删除这个目录管理节点的信息,并将更新后的成员名单表广播通知给所有目录管理节点,由各目录管理节点使用master的成员名单表覆盖本地的成员名单表。
目录管理节点在启动时进入standby状态,并通过广播向所有目录管理节点通知本目录管理节点已上线。master在接收到该目录管理节点的通知之后,将本目录管理节点是master的信息告知该目录管理节点,并将该目录管理节点的信息加入到成员名单表,并将更新后的成员名单表广播通知给所有的目录管理节点,由各目录管理节点使用master的成员名单表覆盖本地的成员名单表。新目录管理节点在接收到更新后的成员名单表后,可以存储该成员名单表,确定本目录管理节点已经成功加入到成员名单表,并进入active状态。
在有目录管理节点出现故障无法工作时,这个目录管理节点进入dead状态,并主动通知master本目录管理节点已故障。master接收到该目录管理节点的通知后,从成员名单表中删除这个目录管理节点的信息,并将更新后的成员名单表广播通知给所有目录管理节点,由各目录管理节点使用master的成员名单表覆盖本地的成员名单表。或者,若这个目录管理节点进入dead状态之后,无法主动通知master本目录管理节点已故障,那么,master也可以利用心跳机制主动发现这个目录管理节点进入dead状态,从成员名单表中删除这个目录管理节点的信息,并将更新后的成员名单表广播通知给所有目录管理节点,由各目录管理节点使用master的成员名单表覆盖本地的成员名单表。
当master正常退出时,可以根据成员名单表中每个目录管理节点的权重,选取最高优先级的一个目录管理节点作为新master,如将权重最小的目录管理节点作为新master,并将新master的信息通知到所有目录管理节点,这样,所有目录管理节点均可以获知哪个目录管理节点作为新master,此后,由新master更新成员名单表并通知到所有目录管理节点,而原有master正常退出。
当master异常退出时,各目录管理节点能够通过心跳机制发现master异常退出,基于成员名单表中各目录管理节点的权重,可以选取一个目录管理节点作为新master,比如说,针对每个目录管理节点,确定本目录管理节点是否为最高优先级,即本目录管理节点的权重是否为最小权重。如果是,则将本目录管理节点选取为新master,如果否,则本目录管理节点不作为新master,这样,就可以从所有目录管理节点中选取一个目录管理节点作为新master,此后,就可以由新master更新成员名单表并通知到所有目录管理节点。
综上所述,所有目录管理节点中存在主目录管理节点(master)和非主目录管理节点,master可以获取所有目录管理节点的信息(如访问地址等),在成员名单表中记录所有目录管理节点的信息,并将成员名单表发送给每个目录管理节点。在某个目录管理节点退出时,master可以从成员名单表中删除该目录管理节点的信息,并将修改后的成员名单表发送给每个目录管理节点。对于每个非主目录管理节点来说,目录管理节点将访问地址发送给master,以使master在成员名单表中添加该目录管理节点的信息,并广播发送修改后的成员名单表。
本申请实施例中提出一种文件处理方法,用于实现文件读取操作,当计算节点(即第一计算节点,为了区分方便,后续记为计算节点a)需要读取文件(后续记为第一文件)时,首先查询计算节点a的本地目录是否已缓存此第一文件,若查询命中,则直接从本地存储介质中读取第一文件。若查询不命中,则执行以下操作:进入代理查询模式,请求计算节点a对应的目录管理节点(即第一目录管理节点,为了区分方便,后续记为目录管理节点b)代为查询团体目录是否命中。如果命中,则可以从目录管理节点b的团体目录中查询命中信息,如第二计算节点的访问地址,第二计算节点是已缓存第一文件的计算节点,为了区分方便,后续记为计算节点c,并将计算节点c的访问地址告知计算节点a,以使计算节点a从计算节点c的存储介质中读取第一文件。
如果不命中,则进入协同查询模式,目录管理节点b请求其它目录管理节点(即第二目录管理节点,是除目录管理节点b之外的每个目录管理节点,后续记为目录管理节点d,目录管理节点d可以是多个目录管理节点中的每个目录管理节点)代为查询各自的团体目录是否命中,若命中,则目录管理节点d从目录管理节点d的团体目录中查询命中信息,如计算节点c的访问地址,将计算节点c的访问地址发送给目录管理节点b,由目录管理节点b将计算节点c的访问地址告知计算节点a,计算节点a从计算节点c的存储介质中读取第一文件。若不命中,则目录管理节点d向目录管理节点b返回ACK,通知不命中。目录管理节点b接收到所有目录管理节点d返回的ACK或ACK超时,则通知计算节点a未命中,由计算节点a直接从文件存储系统(即存储节点)读取第一文件。
在上述过程中,代理查询模式和协同查询模式也可以并行执行以加快速率,即目录管理节点b查询团体目录是否命中的过程,与目录管理节点d查询团体目录是否命中的过程,二者可以并行执行。当然,代理查询模式和协同查询模式也可以顺序执行,目录管理节点b的团体目录未命中时才执行协同查询模式。
以下结合图4所示的文件读取操作的实现流程,对上述过程进行说明。
步骤401、计算节点a获取待读取的第一文件对应的第一标识,第一标识是第一文件对应的全局唯一标识,计算节点a为所有计算节点中的任一计算节点。
计算节点a为用于执行计算任务的节点,第一标识用于标识执行该计算任务所需的文件,如第一标识可以根据哈希值计算获得,即,计算节点a确定待读取的第一文件后,对文件进行哈希运算得到哈希值作为第一标识。
步骤402、计算节点a确定计算节点a的本地目录中是否包括第一标识。
示例性的,各计算节点均设置有本地目录,以计算节点a的本地目录为例,本地目录用于记录计算节点a的存储介质中已缓存文件的元信息,该元信息可以包括已缓存文件的全局唯一标识、已缓存文件在计算节点a的存储介质中对应的存储地址(也可以称为存储位置),参见图3C所示,为元信息的示例。
如果是,则可以执行步骤403,如果否,则可以执行步骤404。
步骤403、计算节点a从计算节点a的本地目录中获取第一标识对应的元信息(为了区分方便,将本地目录中的该元信息记为第二元信息),第二元信息包括第一文件对应的存储地址。计算节点a基于第一文件对应的存储地址获取第一标识对应的第一文件,即从本地存储介质中获取第一文件。
步骤404、计算节点a向计算节点a对应的目录管理节点b发送代理查询请求,目录管理节点b接收代理查询请求,该代理查询请求包括第一文件对应的第一标识,该代理查询请求用于触发代理查询第一文件所在的计算节点。
步骤405、目录管理节点b判断团体目录是否包括第一标识。
示例性的,各目录管理节点均设置有团体目录,以目录管理节点b的团体目录为例,团体目录用于记录目录管理节点b对应的各计算节点的存储介质中已缓存文件的元信息,该元信息可以包括已缓存文件的全局唯一标识、已缓存文件对应的计算节点的访问地址,即已缓存文件位于该计算节点的存储介质中。
如果是,则可以执行步骤406,如果否,则可以执行步骤407。
步骤406、目录管理节点b从目录管理节点b的团体目录中获取第一标识对应的元信息(为了区分方便,可以将团体目录中的该元信息记为第一元信息),第一元信息可以包括计算节点c的访问地址,用于表示计算节点c的存储介质中已缓存第一文件。在步骤406之后,可以执行步骤409。
步骤407、目录管理节点b将代理查询请求发送给目录管理节点d,目录管理节点d可以是除目录管理节点b之外的每个目录管理节点。
目录管理节点b可以从成员名单表中查询目录管理节点d的访问地址,基于目录管理节点d的访问地址,将代理查询请求发送给目录管理节点d。
步骤408、目录管理节点d判断团体目录是否包括第一标识;如果是,则从目录管理节点d的团体目录中获取第一标识对应的第一元信息,并将第一元信息发送给目录管理节点b;如果否,则向目录管理节点b发送查询失败响应,查询失败响应用于表示目录管理节点d下的各计算节点均未存储第一文件。其中,第一元信息可以包括目录管理节点d下的计算节点c的访问地址,用于表示计算节点c的存储介质中已缓存第一文件。步骤408之后,可以执行步骤409。
步骤409、若已得到第一标识对应的第一元信息(如从目录管理节点b的团体目录中获取到第一元信息,或从目录管理节点d的团体目录中获取到第一元信息,则目录管理节点b向计算节点a发送代理查询响应,该代理查询响应包括第一元信息,且第一元信息可以包括计算节点c的访问地址。
若未得到第一标识对应的第一元信息(如目录管理节点b的团体目录不包括第一标识对应的元信息,所有目录管理节点d的团体目录也不包括第一标识对应的元信息),则目录管理节点b向计算节点a发送查询失败响应,该查询失败响应表示所有目录管理节点的团体目录均不包括第一标识对应的元信息。
步骤410、计算节点a在接收到目录管理节点b返回的代理查询响应之后,基于计算节点c的访问地址,从计算节点c获取第一标识对应的第一文件。
示例性的,计算节点a可以基于计算节点c的访问地址向计算节点c获取文件读权限,在计算节点a得到计算节点c的允许读的权限时,计算节点a基于计算节点c的访问地址,从计算节点c获取第一标识对应的第一文件。
在一种可能的实施方式中,计算节点a在接收到目录管理节点b返回的查询失败响应之后,计算节点a可以从文件存储系统的存储节点获取第一标识对应的第一文件,对此获取过程不做限制,如通过NAS客户端获取第一文件。
示例性的,计算节点a在获取到第一标识对应的第一文件之后,还可以在计算节点a的存储介质中缓存第一文件,并在计算节点a的本地目录中记录第一文件对应的第二元信息,且第二元信息包括第一文件对应的第一标识和第一文件对应的存储地址(即第一文件在存储介质中的存储位置)。以及,计算节点a可以将第一文件对应的第一元信息发送给目录管理节点b,由目录管理节点b接收第一文件对应的第一元信息,并在目录管理节点b的团体目录中记录第一元信息,第一元信息包括第一文件对应的第一标识和计算节点a的访问地址。
在一种可能的实施方式中,针对步骤403,为了获取第一标识对应的第一文件,可以采用如下方式:先将计算节点a的本地目录中第一标识对应的读计数器加预设数值(如1),然后,计算节点a才基于第一文件对应的存储地址,从计算节点a的存储介质中获取第一标识对应的第一文件。在第一文件获取完成之后,还需要将计算节点a的本地目录中第一标识对应的读计数器减预设数值。
在一种可能的实施方式中,针对步骤410,为了获取第一标识对应的第一文件,若从目录管理节点b的团体目录中获取到第一元信息,则可以采用如下方式:先将目录管理节点b的团体目录中第一标识对应的读计数器加预设数值(如1);然后,计算节点a才基于计算节点c的访问地址,从计算节点c的存储介质中获取第一标识对应的第一文件。在第一文件获取完成之后,还需要将目录管理节点b的团体目录中第一标识对应的读计数器减预设数值。
或者,若从目录管理节点d的团体目录中获取到第一元信息,则可以采用如下方式:先将目录管理节点d的团体目录中第一标识对应的读计数器加预设数值(如1);然后,计算节点a才基于计算节点c的访问地址,从计算节点c的存储介质中获取第一标识对应的第一文件。在第一文件获取完成之后,还需要将目录管理节点d的团体目录中第一标识对应的读计数器减预设数值。
针对从目录管理节点b的团体目录中获取到第一元信息的情况,参见图5A所示,采用如下步骤保证文件读的可靠性:计算节点a向目录管理节点b发送代理查询请求,该代理查询请求用于请求查询缓存池是否缓存第一文件。目录管理节点b查询团体目录是否存在第一标识对应的第一元信息,如果是,则目录管理节点b将团体目录中第一标识对应的读计数器加1。目录管理节点b向计算节点a发送代理查询响应,该代理查询响应包括第一元信息,且第一元信息可以包括计算节点c的访问地址。计算节点a基于计算节点c的访问地址,从计算节点c获取第一标识对应的第一文件。在第一文件获取完成之后,计算节点a向目录管理节点b发送读完成消息,目录管理节点b将团体目录中第一标识对应的读计数器减1,并向计算节点a返回确认消息,至此,完成文件读取过程。
针对从目录管理节点d的团体目录中获取到第一元信息的情况,参见图5B所示,采用如下步骤保证文件读的可靠性:目录管理节点b向目录管理节点d发送代理查询请求,该代理查询请求用于请求目录管理节点d查询缓存池是否缓存第一文件。目录管理节点d查询团体目录是否存在第一标识对应的第一元信息,如果是,则目录管理节点d将团体目录中第一标识对应的读计数器加1。目录管理节点d向目录管理节点b发送第一元信息,且目录管理节点b向计算节点a发送代理查询响应,该代理查询响应包括第一元信息,且第一元信息可以包括计算节点c的访问地址。在计算节点a返回读完成消息之后,目录管理节点b将读完成消息发送给目录管理节点d,目录管理节点d将团体目录中第一标识对应的读计数器减1,并向目录管理节点b返回确认消息,由目录管理节点b向计算节点a返回确认消息(即ACK消息),至此,完成文件读取过程。
本申请实施例中提出一种文件处理方法,用于实现文件写入操作,当计算节点a需要进行文件(后续记为第二文件)写操作时,请求目录管理节点b在全集群范围内禁止第二文件的新增读请求,并删除第二文件在缓存池中的所有副本。目录管理节点b的返回结果是:第二文件从缓存池中删除成功、文件禁止写、超时。若目录管理节点b的返回结果是第二文件从缓存池中删除成功,则计算节点a执行文件写操作,即将第二文件写入到存储节点。若目录管理节点b的返回结果是文件禁止写或者超时,则计算节点a向用户返回文件写失败。
目录管理节点b需要拒绝与第二文件有关的新增读请求,并在团体目录中第二文件的读计数器归零后删除团体目录中的元信息。同时,目录管理节点b发送文件写请求信息给全集群范围内的所有目录管理节点(以目录管理节点d为例),由目录管理节点d拒绝与第二文件有关的新增读请求,并在团体目录中第二文件的读计数器归零后删除团体目录中的元信息,并在删除成功后返回确认消息(即ACK消息)。目录管理节点b在所有目录管理节点返回确认消息且已成功从团体目录删除元信息后,向计算节点a返回文件缓存删除的结果。
其中,若目录管理节点b已成功从团体目录删除元信息,且所有目录管理节点d已成功从团体目录删除元信息并向目录管理节点b返回确认消息,则目录管理节点b向计算节点a发送的结果是第二文件从缓存池中删除成功。若目录管理节点b在预设时长内未接收到所有目录管理节点d返回的确认消息,则目录管理节点b确定处理超时,向计算节点a发送的结果是超时。
以下结合图6所示的文件写入操作的实现流程,对上述过程进行说明。
步骤601、计算节点a获取待写入的第二文件对应的第二标识。
步骤602、计算节点a向目录管理节点b发送文件写通知消息,该文件写通知消息包括第二标识,由目录管理节点b接收该文件写通知消息。
步骤603、目录管理节点b基于第二标识禁止针对第二文件的新增读请求。
步骤604、目录管理节点b将文件写通知消息发送给目录管理节点d。
目录管理节点b可以从成员名单表中查询目录管理节点d的访问地址,基于目录管理节点d的访问地址,将文件写通知消息发送给目录管理节点d。
步骤605、目录管理节点d基于第二标识禁止针对第二文件的新增读请求。
步骤606、目录管理节点b检测团体目录中第二标识对应的读计数器,在第二标识对应的读计数器为零后,从目录管理节点b对应的各计算节点的存储介质中删除第二文件(即从缓存池中删除第二文件),从目录管理节点b的团体目录中删除第二标识对应的元信息,并从目录管理节点b对应的各计算节点的本地目录中删除第二标识对应的元信息,即通知各计算节点删除元信息。
步骤607、目录管理节点d检测团体目录中第二标识对应的读计数器,在第二标识对应的读计数器为零后,从目录管理节点d对应的各计算节点的存储介质中删除第二文件(即从缓存池中删除第二文件),从目录管理节点d的团体目录中删除第二标识对应的元信息,并从目录管理节点d对应的各计算节点的本地目录中删除第二标识对应的元信息,即通知各计算节点删除元信息。
步骤608、在第二文件已成功删除之后,目录管理节点d向目录管理节点b发送已成功删除消息,该已成功删除消息用于表示第二文件已成功删除。
步骤609、目录管理节点b接收到所有目录管理节点d返回的已成功删除消息,且目录管理节点b成功从各计算节点的存储介质中删除第二文件后,则向计算节点a发送文件写结果消息,该文件写结果消息表示第二文件已成功删除。
步骤610、计算节点a在接收到文件写结果消息之后,确定第二文件已成功删除,并将第二文件写入到存储节点,对此文件写入过程不再赘述。
在一种可能的实施方式中,可以根据目录命中状况判断是否更新目录,针对目录更新操作,可以是针对本地目录的更新操作和针对团体目录的更新操作,主要针对缓存池中新增加的文件,更新本地目录和团体目录中该文件对应的元数据。参见图7所示,是目录更新过程的示意图,该过程可以包括:
步骤701、判断缓存池中新增加的文件是否需要更新目录。
如果是,则可以执行步骤702,如果否,则结束流程,不再更新目录。
步骤702、进入entry(元数据表项)争抢机制记录元信息到团体目录。
步骤703、判断团体目录的entry是否争抢成功。
如果是,则可以执行步骤704,如果否,则结束流程,不再更新目录。
步骤704、进入entry争抢机制记录元信息到本地目录。
在一种可能的实施方式中,针对entry争抢机制,可以是针对本地目录及团体目录的entry资源的争抢,实质上是一个并发管理锁,以期防止出现entry数据写错乱的问题。并发锁争抢需要考虑死锁、饿死等问题。本实施例中,定义元数据条目中的表项状态位为1个bit,1表示entry被占有,0标识entry可用。
参见如下步骤所示,是针对entry争抢机制的示意图,该过程可以包括:
步骤S11、检查空白entry的表项状态位是否为0。
如果是,则执行步骤S12,如果否,则执行步骤S18。
示例性的,表项状态位用于标识当前元数据表项的地址是否被占用。其中,表项状态位可设置为第一值用于指示entry处于被占用状态,设置为第二值用于指示entry处于可用状态。例如,本申请实施例中,表项状态位设置为1个bit,第一值为1表示entry被占有,第二值为0表示entry可用。
步骤S12、对目标entry的表项状态位取反。
示例性的,第一值与第二值定义为两个相反的值,当表项状态位为第二值时,计算节点a确定空白表项可用。计算节点可以将表项状态位取反,其它计算节点检测到表项状态位不可用,则不去争抢该空白表项。
步骤S13、在空白entry中写入Agent的全局唯一标识。
步骤S14、计算节点a的Agent判断entry的表项状态位是否为1。
如果是,则执行步骤S15,如果否,则执行步骤S18。
在一种可能的场景中,L个计算节点可能同一时间争抢同一空白表项。可能出现如下场景:以L=2为例,2个计算节点同时检测到表项状态位为第二值,并均对表项状态位进行了取反操作。表项状态位取反为第一值又被取反为第二值。计算节点a的Agent再次检测空白表项时,其表项状态位为第二值。2个计算节点均在空白表项中写入对应的Agent的全局唯一标识,导致entry资源写入错乱,计算节点a的Agent通过对表项状态位的回查进行验证。
步骤S15、判断Agent标识是否与自身一致。
如果是,则执行步骤S16,如果否,则执行步骤S18。
计算节点a的Agent判断空白表项的Agent的全局唯一标识是否为本计算节点a对应的Agent全局唯一标识。以L=3为例,表项状态位在经历三次取反后仍然为第一值,但是,此时空白表项中可能已经被其它计算节点写入元信息,基于此,计算节点a的Agent可以通过对Agent全局唯一标识的检查确定是否是计算节点a写入的Agent全局唯一标识。若空白表项中的Agent全局唯一标识不是本计算节点a的Agent全局唯一标识,则执行步骤S18。
步骤S16、确定自身独占entry,写入剩余元信息到本地目录。
示例性的,计算节点a确定空白表项中的Agent全局唯一标识是自己写入的元信息后,将元数据表项中其它元信息写入空白表项中。例如,其它元信息可以为表项状态、读计数器、文件全局唯一标识和缓存文件所存储节点的存储地址等。计算节点a的Agent争抢空白表项成功之后,还可以从文件存储系统的存储节点中读取待处理文件并缓存到本地存储介质,同时更新本地目录。
步骤S17、返回entry争抢成功。
步骤S18、判断探测数量是否超过N,如果否,则可以将探测entry号加1,并返回步骤S11,即在下一空白表项中执行步骤S11,如果是,则执行步骤S19。
示例性的,计数(探测数量N)用于指示计算节点a的Agent对空白表项的争抢次数,计算节点a在当前entry的资源争抢失败后,重新对下一空白表项进行争抢,直至争抢成功或到达次数,即达到次数N。
步骤S19、返回entry争抢失败。
综上可以看出,本申请实施例中,通过在本地目录中设置entry争抢机制,减少了entry元信息写入错乱的情况。通过回查表项状态位和回查Agent全局唯一标识,减少了多个计算节点出现死锁和饿死等情况,提升了本申请实施例基于本地目录的获取文件的准确性。
由以上技术方案可见,能够将计算节点的本地存储构建成一个附加的弹性缓存池,从而提升集群系统的存储容量,并减轻文件存储系统的存储压力,提升文件存储系统的服务能力。能够充分利用网络拓扑中存在距离的特性,优化缓存数据传输机制来提升文件读性能。采用去中心化的架构来设计弹性缓存池,可以有效防止单点故障以及单点带来的性能瓶颈。实现简单有效的文件删除机制,以便当有文件修改操作时能充分利用存储节点本身的写文件能力,达到一般NAS缓存池所不能提供的文件写能力。基于网络拓扑感知构建专门管理节点且利用多级目录技术,实现去中心化的架构,构成整体缓存池。设计简单有效的entry争抢机制,避免分布式锁容易引入的锁等待及饿死等问题。设计独特的管理节点间通讯机制,有效保证目录管理的有序性,避免局部单点故障对缓存池带来的数据安全性及性能上的影响。
基于与上述方法同样的申请构思,本申请实施例中提出一种基于多计算节点的文件处理装置,文件管理系统包括目录管理节点和多个计算节点,所述装置应用于第一计算节点,参见图8A所示,为所述装置的结构示意图,包括:
获取模块811,用于获取待读取的第一文件对应的第一标识;确定模块812,用于确定所述第一计算节点的本地目录中是否包括所述第一标识;本地目录用于记录第一计算节点的存储介质中已缓存文件的元信息;所述获取模块811,还用于若所述本地目录不包括所述第一标识,则从目录管理节点的团体目录中获取所述第一标识对应的第一元信息;其中,所述目录管理节点的团体目录用于记录所述目录管理节点对应的各计算节点的存储介质中已缓存文件的元信息;其中,所述第一元信息包括第二计算节点的访问地址,且所述第二计算节点的存储介质中已缓存所述第一文件;读取模块813,用于基于所述第二计算节点的访问地址,从所述第二计算节点的存储介质中获取所述第一标识对应的第一文件。
示例性的,所述获取模块811,还用于若所述本地目录包括所述第一标识,则从所述第一计算节点的本地目录中获取所述第一标识对应的第二元信息;其中,所述第二元信息包括所述第一文件对应的存储地址;所述读取模块813,还用于基于所述第一文件对应的存储地址获取所述第一标识对应的第一文件。
示例性的,所述文件管理系统包括多个目录管理节点,各目录管理节点对应至少两个计算节点,所述获取模块811从目录管理节点的团体目录中获取所述第一标识对应的第一元信息时具体用于:向所述第一计算节点对应的第一目录管理节点发送代理查询请求,以使所述第一目录管理节点在团体目录包括所述第一标识时,从该团体目录中获取所述第一标识对应的第一元信息,在团体目录不包括所述第一标识时,从第二目录管理节点的团体目录中获取所述第一标识对应的第一元信息;接收所述第一目录管理节点针对所述代理查询请求返回的代理查询响应,所述代理查询响应包括所述第一标识对应的第一元信息。
示例性的,所述获取模块811,还用于若未从目录管理节点的团体目录中获取到所述第一标识对应的第一元信息,则从所述存储节点获取所述第一标识对应的第一文件;在所述第一计算节点的存储介质中缓存所述第一文件,并在所述第一计算节点的本地目录中记录所述第一文件对应的第二元信息,所述第二元信息包括所述第一文件对应的第一标识和所述第一文件对应的存储地址;以及,将所述第一文件对应的第一元信息发送给所述第一计算节点对应的第一目录管理节点,由第一目录管理节点在团体目录中记录第一元信息,所述第一元信息包括所述第一文件对应的第一标识和所述第一计算节点的访问地址。
示例性的,所述读取模块813基于所述第二计算节点的访问地址获取所述第一标识对应的第一文件时具体用于:将所述目录管理节点的团体目录中所述第一标识对应的读计数器加预设数值;基于所述第二计算节点的访问地址,从第二计算节点的存储介质中获取所述第一标识对应的第一文件;在第一文件获取完成之后,将目录管理节点的团体目录中所述第一标识对应的读计数器减预设数值;所述读取模块813基于所述第一文件对应的存储地址获取所述第一标识对应的第一文件时具体用于:将第一计算节点的本地目录中所述第一标识对应的读计数器加预设数值;基于所述第一文件对应的存储地址,从第一计算节点的存储介质中获取所述第一标识对应的第一文件;在第一文件获取完成之后,将第一计算节点的本地目录中所述第一标识对应的读计数器减预设数值。
示例性的,所述获取模块811,还用于获取待写入的第二文件对应的第二标识;向目录管理节点发送文件写通知消息,所述文件写通知消息包括所述第二标识,以使目录管理节点基于所述第二标识禁止针对所述第二文件的新增读请求,并在目录管理节点的团体目录中所述第二标识对应的读计数器为零后,从目录管理节点对应的各计算节点的存储介质中删除所述第二文件,从目录管理节点的团体目录中删除所述第二标识对应的元信息,并从目录管理节点对应的各计算节点的本地目录中删除所述第二标识对应的元信息;以及,接收目录管理节点针对所述写通知消息返回的文件写结果消息,若所述文件写结果消息表示第二文件已成功删除,则将所述第二文件写入到存储节点。
基于与上述方法同样的申请构思,本申请实施例中提出一种基于多计算节点的文件处理装置,文件管理系统包括多个目录管理节点和多个计算节点,针对每个目录管理节点,所述目录管理节点对应至少两个计算节点,所述装置应用于第一目录管理节点,参见图8B所示,为所述装置的结构示意图,包括:
接收模块821,用于接收第一目录管理节点对应的第一计算节点发送的代理查询请求,所述代理查询请求包括第一文件对应的第一标识;其中,所述代理查询请求是所述第一计算节点的本地目录未包括所述第一标识时发送,且所述本地目录用于记录所述第一计算节点的存储介质中已缓存文件的元信息;处理模块822,用于若第一目录管理节点的团体目录包括所述第一标识,则从所述团体目录中获取所述第一标识对应的第一元信息,所述团体目录用于记录第一目录管理节点对应的各计算节点的存储介质中已缓存文件的元信息;若所述团体目录不包括所述第一标识,则将所述代理查询请求发送给第二目录管理节点,以使第二目录管理节点从第二目录管理节点的团体目录中获取所述第一标识对应的第一元信息,并将所述第一元信息发送给第一目录管理节点;发送模块823,用于向所述第一计算节点发送代理查询响应,所述代理查询响应包括所述第一标识对应的第一元信息,所述第一元信息包括第二计算节点的访问地址,且第二计算节点的存储介质中已缓存所述第一文件,以使第一计算节点基于第二计算节点的访问地址获取所述第一标识对应的第一文件。
示例性的,所述发送模块823,还用于若第一目录管理节点的团体目录不包括所述第一标识,且第二目录管理节点的团体目录不包括所述第一标识,则向第一计算节点发送查询失败响应,以使第一计算节点从文件管理系统的存储节点获取所述第一标识对应的第一文件,并在第一计算节点的存储介质中缓存所述第一文件,在第一计算节点的本地目录中记录所述第一文件对应的第二元信息,所述第二元信息包括所述第一文件对应的第一标识和所述第一文件对应的存储地址;所述接收模块821,还用于接收第一计算节点发送的所述第一文件对应的第一元信息,在第一目录管理节点的团体目录中记录所述第一元信息,所述第一元信息包括所述第一文件对应的第一标识和第一计算节点的访问地址。
示例性的,所述接收模块821,还用于接收所述第一计算节点发送的文件写通知消息,所述文件写通知消息包括第二文件对应的第二标识;所述处理模块822,还用于基于所述第二标识禁止针对所述第二文件的新增读请求,并在第一目录管理节点的团体目录中所述第二标识对应的读计数器为零后,从第一目录管理节点对应的各计算节点的存储介质中删除所述第二文件,从第一目录管理节点的团体目录中删除所述第二标识对应的元信息,并从第一目录管理节点对应的各计算节点的本地目录中删除所述第二标识对应的元信息;所述发送模块823,还用于将所述文件写通知消息发送给第二目录管理节点,以使第二目录管理节点基于所述第二标识禁止针对所述第二文件的新增读请求,并在第二目录管理节点的团体目录中所述第二标识对应的读计数器为零后,从第二目录管理节点对应的各计算节点的存储介质中删除所述第二文件,从第二目录管理节点的团体目录中删除所述第二标识对应的元信息,并从第二目录管理节点对应的各计算节点的本地目录中删除所述第二标识对应的元信息;所述接收模块821,还用于在第二文件已成功删除之后,向所述第一计算节点发送文件写结果消息,以使所述第一计算节点将所述第二文件写入到存储节点。
所述发送模块823将所述代理查询请求发送给第二目录管理节点时具体用于:从成员名单表中查询第二目录管理节点的访问地址,第二目录管理节点是所述成员名单表中除第一目录管理节点之外的每个目录管理节点;基于第二目录管理节点的访问地址,将所述代理查询请求发送给第二目录管理节点;其中,成员名单表用于记录所有目录管理节点的访问地址。
基于与上述方法同样的申请构思,本申请实施例提出一种电子设备(如上述实施例的计算节点或目录管理节点),电子设备包括处理器和机器可读存储介质,机器可读存储介质存储有能够被处理器执行的机器可执行指令;处理器用于执行机器可执行指令,以实现本申请上述示例的文件处理方法。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的基于多计算节点的文件处理方法。其中,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (13)

1.一种基于多计算节点的文件处理方法,其特征在于,文件管理系统包括目录管理节点和多个计算节点,该方法应用于第一计算节点,该方法包括:
获取待读取的第一文件对应的第一标识;
确定所述第一计算节点的本地目录中是否包括所述第一标识;其中,所述本地目录用于记录第一计算节点的存储介质中已缓存文件的元信息;
如果否,则从目录管理节点的团体目录中获取所述第一标识对应的第一元信息;其中,所述团体目录用于记录所述目录管理节点对应的各计算节点的存储介质中已缓存文件的元信息;其中,所述第一元信息包括第二计算节点的访问地址,且所述第二计算节点的存储介质中已缓存所述第一文件;
基于所述第二计算节点的访问地址获取所述第一标识对应的第一文件;
如果是,则从所述第一计算节点的本地目录中获取所述第一标识对应的第二元信息;其中,所述第二元信息包括所述第一文件对应的存储地址;
基于所述第一文件对应的存储地址获取所述第一标识对应的第一文件。
2.根据权利要求1所述的方法,其特征在于,所述文件管理系统包括多个目录管理节点,各目录管理节点对应至少两个计算节点,所述从目录管理节点的团体目录中获取所述第一标识对应的第一元信息,包括:
向所述第一计算节点对应的第一目录管理节点发送代理查询请求,以使所述第一目录管理节点在团体目录包括所述第一标识时,从该团体目录中获取所述第一标识对应的第一元信息,在团体目录不包括所述第一标识时,从第二目录管理节点的团体目录中获取所述第一标识对应的第一元信息;
接收所述第一目录管理节点针对所述代理查询请求返回的代理查询响应,所述代理查询响应包括所述第一标识对应的第一元信息。
3.根据权利要求1-2任一项所述的方法,其特征在于,所述文件管理系统还包括存储节点,所述存储节点用于存储文件;所述方法还包括:
若未从目录管理节点的团体目录中获取到所述第一标识对应的第一元信息,则从所述存储节点获取所述第一标识对应的第一文件;
在所述第一计算节点的存储介质中缓存所述第一文件,并在所述第一计算节点的本地目录中记录所述第一文件对应的第二元信息,所述第二元信息包括所述第一文件对应的第一标识和所述第一文件对应的存储地址;
将所述第一文件对应的第一元信息发送给所述第一计算节点对应的第一目录管理节点,由第一目录管理节点在团体目录中记录第一元信息,所述第一元信息包括所述第一文件对应的第一标识和所述第一计算节点的访问地址。
4.根据权利要求1-2任一项所述的方法,其特征在于,
所述基于所述第二计算节点的访问地址获取所述第一标识对应的第一文件,包括:将所述目录管理节点的团体目录中所述第一标识对应的读计数器加预设数值;基于所述第二计算节点的访问地址,从所述第二计算节点的存储介质中获取所述第一标识对应的第一文件;在所述第一文件获取完成之后,将所述目录管理节点的团体目录中所述第一标识对应的读计数器减预设数值;
所述基于所述第一文件对应的存储地址获取所述第一标识对应的第一文件,包括:将所述第一计算节点的本地目录中所述第一标识对应的读计数器加预设数值;基于所述第一文件对应的存储地址,从所述第一计算节点的存储介质中获取所述第一标识对应的第一文件;在所述第一文件获取完成之后,将所述第一计算节点的本地目录中所述第一标识对应的读计数器减预设数值。
5.根据权利要求1-2任一项所述的方法,其特征在于,所述方法还包括:
获取待写入的第二文件对应的第二标识;
向目录管理节点发送文件写通知消息,所述文件写通知消息包括所述第二标识,以使目录管理节点基于所述第二标识禁止针对所述第二文件的新增读请求,并在目录管理节点的团体目录中所述第二标识对应的读计数器为零后,从目录管理节点对应的各计算节点的存储介质中删除所述第二文件,从目录管理节点的团体目录中删除所述第二标识对应的元信息,并从目录管理节点对应的各计算节点的本地目录中删除所述第二标识对应的元信息;
接收目录管理节点针对所述写通知消息返回的文件写结果消息,若所述文件写结果消息表示第二文件已成功删除,则将所述第二文件写入到存储节点。
6.一种基于多计算节点的文件处理方法,其特征在于,文件管理系统包括多个目录管理节点和多个计算节点,针对每个目录管理节点,所述目录管理节点对应至少两个计算节点,该方法应用于第一目录管理节点,该方法包括:
接收第一目录管理节点对应的第一计算节点发送的代理查询请求,所述代理查询请求包括第一文件对应的第一标识;其中,所述代理查询请求是所述第一计算节点的本地目录未包括所述第一标识时发送,且所述本地目录用于记录所述第一计算节点的存储介质中已缓存文件的元信息;
若第一目录管理节点的团体目录包括所述第一标识,则从所述团体目录中获取所述第一标识对应的第一元信息,其中,所述团体目录用于记录第一目录管理节点对应的各计算节点的存储介质中已缓存文件的元信息;若所述团体目录不包括所述第一标识,则将所述代理查询请求发送给第二目录管理节点,以使第二目录管理节点从第二目录管理节点的团体目录中获取所述第一标识对应的第一元信息,并将所述第一元信息发送给第一目录管理节点;
向所述第一计算节点发送代理查询响应,所述代理查询响应包括所述第一标识对应的第一元信息,所述第一元信息包括第二计算节点的访问地址,且第二计算节点的存储介质中已缓存所述第一文件,以使第一计算节点基于第二计算节点的访问地址获取所述第一标识对应的第一文件。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若第一目录管理节点的团体目录不包括所述第一标识,且第二目录管理节点的团体目录不包括所述第一标识,则向第一计算节点发送查询失败响应,以使第一计算节点从所述文件管理系统的存储节点获取所述第一标识对应的第一文件,并在所述第一计算节点的存储介质中缓存所述第一文件,在所述第一计算节点的本地目录中记录所述第一文件对应的第二元信息,所述第二元信息包括所述第一文件对应的第一标识和所述第一文件对应的存储地址;
接收所述第一计算节点发送的所述第一文件对应的第一元信息,在第一目录管理节点的团体目录中记录所述第一元信息,所述第一元信息包括所述第一文件对应的第一标识和所述第一计算节点的访问地址。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
接收所述第一计算节点发送的文件写通知消息,所述文件写通知消息包括第二文件对应的第二标识;基于所述第二标识禁止针对所述第二文件的新增读请求,并在第一目录管理节点的团体目录中所述第二标识对应的读计数器为零后,从第一目录管理节点对应的各计算节点的存储介质中删除所述第二文件,从第一目录管理节点的团体目录中删除所述第二标识对应的元信息,从第一目录管理节点对应的各计算节点的本地目录中删除所述第二标识对应的元信息;
将所述文件写通知消息发送给第二目录管理节点,以使第二目录管理节点基于所述第二标识禁止针对所述第二文件的新增读请求,并在第二目录管理节点的团体目录中所述第二标识对应的读计数器为零后,从第二目录管理节点对应的各计算节点的存储介质中删除所述第二文件,从第二目录管理节点的团体目录中删除所述第二标识对应的元信息,并从第二目录管理节点对应的各计算节点的本地目录中删除所述第二标识对应的元信息;
在第二文件已成功删除之后,向所述第一计算节点发送文件写结果消息,以使所述第一计算节点将所述第二文件写入到存储节点。
9.根据权利要求6-8任一项所述的方法,其特征在于,
所述将所述代理查询请求发送给第二目录管理节点,包括:
从成员名单表中查询第二目录管理节点的访问地址,所述第二目录管理节点是所述成员名单表中除第一目录管理节点之外的每个目录管理节点;基于第二目录管理节点的访问地址,将所述代理查询请求发送给第二目录管理节点;
其中,所述成员名单表用于记录所有目录管理节点的访问地址。
10.根据权利要求9所述的方法,其特征在于,
所有目录管理节点中存在主目录管理节点和非主目录管理节点;
若所述第一目录管理节点是主目录管理节点,则:
获取非主目录管理节点的访问地址,在所述成员名单表中记录非主目录管理节点的访问地址,并将所述成员名单表发送给每个非主目录管理节点;
在非主目录管理节点退出时,从所述成员名单表中删除该非主目录管理节点的访问地址,并将修改后的成员名单表发送给每个非主目录管理节点;
若所述第一目录管理节点是非主目录管理节点,则:
将所述第一目录管理节点的访问地址发送给主目录管理节点,以使所述主目录管理节点在所述成员名单表中记录所述第一目录管理节点的访问地址,并接收所述主目录管理节点发送的所述成员名单表。
11.一种基于多计算节点的文件处理装置,其特征在于,文件管理系统包括目录管理节点和多个计算节点,该装置应用于第一计算节点,该装置包括:
获取模块,用于获取待读取的第一文件对应的第一标识;
确定模块,用于确定所述第一计算节点的本地目录中是否包括所述第一标识;所述本地目录用于记录第一计算节点的存储介质中已缓存文件的元信息;
所述获取模块,还用于若所述本地目录不包括所述第一标识,则从目录管理节点的团体目录中获取所述第一标识对应的第一元信息;其中,所述目录管理节点的团体目录用于记录所述目录管理节点对应的各计算节点的存储介质中已缓存文件的元信息;其中,所述第一元信息包括第二计算节点的访问地址,且所述第二计算节点的存储介质中已缓存所述第一文件;
读取模块,用于基于所述第二计算节点的访问地址,从所述第二计算节点的存储介质中获取所述第一标识对应的第一文件;
其中,所述获取模块,还用于若所述本地目录包括所述第一标识,则从所述第一计算节点的本地目录中获取所述第一标识对应的第二元信息;其中,所述第二元信息包括所述第一文件对应的存储地址;基于所述第一文件对应的存储地址获取所述第一标识对应的第一文件。
12.一种基于多计算节点的文件处理装置,其特征在于,文件管理系统包括多个目录管理节点和多个计算节点,针对每个目录管理节点,所述目录管理节点对应至少两个计算节点,该装置应用于第一目录管理节点,该装置包括:
接收模块,用于接收第一目录管理节点对应的第一计算节点发送的代理查询请求,所述代理查询请求包括第一文件对应的第一标识;其中,所述代理查询请求是所述第一计算节点的本地目录未包括所述第一标识时发送,且所述本地目录用于记录所述第一计算节点的存储介质中已缓存文件的元信息;
获取模块,用于若第一目录管理节点的团体目录包括所述第一标识,则从所述团体目录中获取所述第一标识对应的第一元信息,其中,所述团体目录用于记录第一目录管理节点对应的各计算节点的存储介质中已缓存文件的元信息;若所述团体目录不包括所述第一标识,则将所述代理查询请求发送给第二目录管理节点,以使第二目录管理节点从第二目录管理节点的团体目录中获取所述第一标识对应的第一元信息,并将第一元信息发送给第一目录管理节点;
发送模块,用于向所述第一计算节点发送代理查询响应,所述代理查询响应包括所述第一标识对应的第一元信息,所述第一元信息包括第二计算节点的访问地址,且第二计算节点的存储介质中已缓存所述第一文件,以使第一计算节点基于第二计算节点的访问地址获取所述第一标识对应的第一文件。
13.一种电子设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现权利要求1-5任一项所述的方法步骤,或者,实现权利要求6-10任一项所述的方法步骤。
CN202210439031.1A 2022-04-25 2022-04-25 一种基于多计算节点的文件处理方法、装置及设备 Active CN114579514B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210439031.1A CN114579514B (zh) 2022-04-25 2022-04-25 一种基于多计算节点的文件处理方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210439031.1A CN114579514B (zh) 2022-04-25 2022-04-25 一种基于多计算节点的文件处理方法、装置及设备

Publications (2)

Publication Number Publication Date
CN114579514A CN114579514A (zh) 2022-06-03
CN114579514B true CN114579514B (zh) 2022-10-04

Family

ID=81778167

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210439031.1A Active CN114579514B (zh) 2022-04-25 2022-04-25 一种基于多计算节点的文件处理方法、装置及设备

Country Status (1)

Country Link
CN (1) CN114579514B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102364474A (zh) * 2011-11-17 2012-02-29 中国科学院计算技术研究所 用于机群文件系统的元数据存储系统和管理方法
CN113220693A (zh) * 2021-06-02 2021-08-06 北京字节跳动网络技术有限公司 计算存储分离系统及其数据访问方法、介质和电子设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8041735B1 (en) * 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
CN103944958A (zh) * 2014-03-14 2014-07-23 中国科学院计算技术研究所 一种广域文件系统及实现方法
CN104239270A (zh) * 2014-07-25 2014-12-24 浪潮(北京)电子信息产业有限公司 一种高速缓存同步的方法及装置
CN104360982B (zh) * 2014-11-21 2017-11-10 浪潮(北京)电子信息产业有限公司 一种基于可重构芯片技术的主机系统目录结构实现方法和系统
CN107145307A (zh) * 2017-04-27 2017-09-08 郑州云海信息技术有限公司 一种基于分布式存储的动态元数据优化方法和系统
CN110321325B (zh) * 2019-06-21 2024-05-10 腾讯科技(深圳)有限公司 文件索引节点查找方法、终端、服务器、系统及存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102364474A (zh) * 2011-11-17 2012-02-29 中国科学院计算技术研究所 用于机群文件系统的元数据存储系统和管理方法
CN113220693A (zh) * 2021-06-02 2021-08-06 北京字节跳动网络技术有限公司 计算存储分离系统及其数据访问方法、介质和电子设备

Also Published As

Publication number Publication date
CN114579514A (zh) 2022-06-03

Similar Documents

Publication Publication Date Title
CN108810041B (zh) 一种分布式缓存系统的数据写入及扩容方法、装置
US8972773B2 (en) Cache data processing using cache cluster with configurable modes
US9477743B2 (en) System and method for load balancing in a distributed system by dynamic migration
US9317469B2 (en) Network with distributed shared memory
KR102051282B1 (ko) 선택적 리소스 이동을 이용하는 네트워크 결합 메모리
CN105549905A (zh) 一种多虚拟机访问分布式对象存储系统的方法
JP6225262B2 (ja) 分散データグリッドにおいてデータを同期させるためにパーティションレベルジャーナリングをサポートするためのシステムおよび方法
CN104935654A (zh) 一种服务器集群系统中的缓存方法、写入点客户端和读客户端
US9378218B2 (en) Apparatus and method for enabling clients to participate in data storage in distributed file system
US20140059315A1 (en) Computer system, data management method and data management program
CN107341114B (zh) 一种目录管理的方法、节点控制器和系统
CN113010496B (zh) 一种数据迁移方法、装置、设备和存储介质
US11263270B1 (en) Heat balancing in a distributed time-series database
CN105512279A (zh) 一种元数据访问方法、相关设备及系统
CN112039970A (zh) 一种分布式业务锁服务方法、服务端、系统及存储介质
US20220004525A1 (en) Fully coherent efficient non-local storage cluster file system
CN107992270B (zh) 一种多控存储系统全局共享缓存的方法及装置
CN104951475B (zh) 分布式文件系统和实现方法
CN107943615B (zh) 基于分布式集群的数据处理方法与系统
CN114579514B (zh) 一种基于多计算节点的文件处理方法、装置及设备
CN112579650A (zh) 基于Redis缓存的数据处理方法及系统
US11010410B1 (en) Processing data groupings belonging to data grouping containers
CN114785662B (zh) 一种存储管理方法、装置、设备及机器可读存储介质
KR102245309B1 (ko) 데이터 스토리지 방법 및 데이터센터 클러스터 캐싱 시스템의 동작 방법
CN113448976B (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
GR01 Patent grant
GR01 Patent grant