CN100375093C - 多线程元数据的处理方法 - Google Patents
多线程元数据的处理方法 Download PDFInfo
- Publication number
- CN100375093C CN100375093C CNB2005100552991A CN200510055299A CN100375093C CN 100375093 C CN100375093 C CN 100375093C CN B2005100552991 A CNB2005100552991 A CN B2005100552991A CN 200510055299 A CN200510055299 A CN 200510055299A CN 100375093 C CN100375093 C CN 100375093C
- Authority
- CN
- China
- Prior art keywords
- metadata
- file
- request
- service
- metadata request
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种多线程元数据的处理方法,客户端分别将文件服务的元数据请求发送给元数据服务器,文件服务的数据请求发送给数据服务器;元数据服务器中的元数据服务进程控制多个文件服务线程对元数据请求进行处理。本发明对两类请求分别使用不同的服务器进行处理,提高了机群系统的可扩展性;简化了存储服务器的结构,增强了整个机群文件系统的稳定性和机群文件系统对读写操作的处理能力。本发明采用多线程处理元数据请求,提高了元数据服务器CPU的利用率,能够支持更多的客户端并发访问。本发明有效地解决了共享文件的处理问题,保证了共享文件元数据的一致性,提高了线程处理元数据请求的吞吐率。
Description
技术领域
本发明涉及一种多线程元数据的处理方法,特别是指一种在机群文件系统中,采用多文件服务线程对文件的元数据的进行处理的方法,属于计算机信息技术。
背景技术
在网络文件系统(Network File System,简称NFS)中数据的处理量很大,为了提高网络文件系统的读写带宽,需要将文件的元数据和文件的实际存储数据分开进行处理。由于NFS只有一个服务器,这个服务器既要处理客户端的元数据请求,又要处理客户端的数据请求。当并发的客户端数量大于一定数量时,例如:32个,该服务器的读写带宽就会急剧下降,因此,NFS的扩展性很差。
解决上述问题的一种途径是将客户端的请求分为元数据请求和数据请求,分别对元数据请求和数据请求进行处理。但是,为了保证元数据的一致性,现有技术都采用单进程的方式来处理元数据请求,这样会影响具有多CPU的服务器的处理能力的发挥,降低了元数据服务器的吞吐率。
机群文件系统(Cluster File System,简称CFS)是高性能服务器的组成部分,用于解决大规模科学计算中的密集输入/输出(INPUT/OUTPUT,简称I/O)的处理问题。在I/O密集型的科学计算环境中,文件的读写强度很大。为了提高CFS的读写带宽,在技术上,CFS需要采用上述将文件元数据和文件实际存储数据分开进行处理的方式。在CFS中,文件的元数据由元数据服务器进行处理,文件的实际存储数据由存储服务器进行处理。由于文件的元数据是文件属性的描述,因此,必须保证元数据的一致性。有鉴于此,元数据服务器的一般采用单服务进程来对文件元数据进行处理,元数据服务进程通过顺序处理的方式,对所有的服务请求进行响应,因此,能够保证元数据的一致性。但是,这种处理方式在机群中客户端的数量增加到一定程度的时候,例如:64、128等,单线程元数据服务器就成了大量元数据处理的瓶颈。
发明内容
本发明的主要目的是提供一种多线程数据处理的方法,解决现有技术中单线程元数据服务器在处理元数据时遇到的瓶颈问题,同时保证在多线程处理共享元数据时能够保证元数据的一致性。
本发明的目的通过如下的技术方案实现:
一种多线程元数据的处理方法,当客户端发送文件服务请求时,分别将文件服务的元数据请求发送给元数据服务器,文件服务的数据请求发送给数据服务器;所述的元数据服务器中的元数据服务进程控制多个文件服务线程对所接收的元数据请求进行处理;
元数据服务进程控制多个文件服务线程的处理包括:
步骤10:元数据服务进程检测是否接收到客户端发送的元数据请求;
步骤11:如果没有,执行步骤10;否则启动一个处于空闲状态的文件服务线程对元数据请求进行处理;执行步骤10;
文件服务线程对元数据请求进行的处理包括:
步骤20:根据所述元数据请求所对应的被处理文件的唯一编号,生成被处理文件的处理状态值;
步骤21:察看在处理状态值存储区中是否保存有所述被处理文件的处理状态值,如果在处理状态值存储区中未保存有该处理状态值,则将该处理状态值存放到处理状态值存储区,建立元数据请求队列,用于保存当前被处理文件的元数据请求的后续元数据请求;否则执行步骤25;
步骤22:根据当前被处理的元数据请求对被处理文件进行相应的处理;
步骤23:在完成对当前元数据请求的处理后,察看当前被处理文件的元数据请求队列中是否还有后续元数据请求,如果当前被处理文件的元数据请求队列中还有后续元数据请求,则向元数据服务进程发起请求队列保存的所有后续元数据请求中最先保存的后续元数据请求;执行步骤26;
步骤24:如果当前被处理文件的元数据请求队列中没有后续元数据请求,则从处理状态值存储区删除该被处理文件的处理状态值,执行步骤26;
步骤25:将元数据请求作为后续元数据请求保存到当前被处理文件的元数据请求队列中;
步骤26:结束该文件服务线程,并向所述空闲文件服务线程队列中加入该文件服务线程。
为了使得本发明中的多个文件服务线程能够均衡地负荷元数据处理任务,本发明中的元数据服务进程采用轮转方式启动多个文件服务线程对元数据请求进行处理;具体包括:
当一个或多个文件服务线程处于空闲状态时,所述元数据服务进程将处于空闲状态的所述一个或多个文件服务线程依次记录在这个空闲文件服务线程队列之中;
当元数据服务进程启动一个文件服务线程时,如果空闲文件服务线程队列中还保存有空闲的文件服务线程,则总是启动排列在空闲文件服务线程队列中第一个空闲的文件服务线程,并将被启动的文件服务线程从所述空闲文件服务线程队列中删除。
本发明与现有技术相比具有如下的优点:
首先,将客户端的文件服务请求分为元数据请求和数据请求,对两类请求分别使用不同的服务器进行处理,提高了机群系统的可扩展性;将元数据请求剥离,简化了存储服务器的结构,从设计上增强了整个机群文件系统的稳定性、增强了机群文件系统对读写操作的处理能力。
本发明采用多线程处理元数据请求,提高了元数据服务器CPU的利用率,能够支持更多的客户端并发访问。
本发明采用被处理文件的处理状态值来标识被处理文件的状态,有效地解决了共享文件的处理问题,保证了共享文件元数据的一致性。本发明使用元数据请求队列,提高了线程处理元数据请求的吞吐率。
附图说明
图1为本发明将元数据服务请求剥离的示意图;
图2为本发明多服务线程的元数据服务进程的处理流程图;
图3为本发明文件服务线程的文件inode信息处理流程图;
图4为本发明文件服务线程处理元数据请求队列的流程图。
具体实施方式
以下结合附图和具体的实施例对本发明作进一步的详细说明:
本发明的客户端在向服务器发出文件服务请求之前,先将该文件服务请求进行分类,将元数据服务请求与数据请求剥离。由于客户端向服务器发送文件服务请求时,它本身是知道这个请求是属于元数据请求还是属于数据请求,因此,可以将元数据请求和数据请求分开发送,将元数据请求发给元数据服务器去处理,而把数据请求发给数据服务器去处理。
参见图1,客户端可以将机群文件系统服务器操作中的元数据操作请求分离出来,发送给专门的元数据服务器来处理,而文件的数据存储,则发送给存储服务器去处理。
参见图2,本发明的元数据服务进程在启动和初始化后,首先要创建一个文件元数据服务的工作线程池,该工作线程池中创建有多个文件服务线程,用于处理客户端发送的各种元数据操作请求;在创建好工作线程池之后,该元数据服务进程负责完成如下的任务:
1、监听是否有元数据请求;所谓的监听是指元数据服务进程通过访问一个监听队列检测客户端发送的元数据请求,在这个监听队列中保存着客户端发送的、需要处理的请求信息。
2、如果有元数据请求,元数据服务进程根据所有文件服务线程的状态采用轮转法进行任务分配。这里的分配实际上是指:启动一个处于空闲状态的文件服务线程,使其响应并处理相应的元数据请求。如果没有元数据请求,元数据服务进程则继续监听。
元数据服务进程创建的所有文件服务线程之间是完全对等的,一个元数据服务请求到达之后,元数据服务进程会寻找一个处于空闲状态的文件服务线程对该元数据服务请求进行处理。以下是一个文件服务线程处理一个元数据服务请求的实例:
参见图3、图4,当一个文件服务线程被元数据服务进程启动,开始处理一个元数据请求时,先是根据这个元数据请求所对应的被处理文件的唯一编号,生成该被处理文件的处理状态值;这个状态值一般被称为元数据属性记录(inode),用于控制访问共享文件。这个被称为inode的状态值是每个文件都具有一个描述该文件自身属性的记录信息,该记录信息中包括描述这个文件的长度、创建时间等内容。
当多个客户端需要同时对一个共享文件进行操作时,需要利用上述的inode对这些操作进行控制,使得在某一时刻只能允许一个客户端对这个共享文件进行操作。具体的方法可以是:当一个客户端对共享文件进行修改,将该文件的inode设置为表示正在被处理的状态值,当其他客户端发出元数据请求,使得元数据服务进程启动其他文件服务线程对其处理时,其他的文件服务线程首先检测这个inode是否被设置为表示该文件正处于被处理的状态。如果属于这种情况,其他的文件服务线程就会自动地将其处理的元数据请求挂起,直到这个inode被设置为表示该文件处于未被处理的状态。
在本实例中,为了方便管理,上述的inode可以被存放在一个存储区中,而这些存放在存储区中状态值构成了一个inode集合,这个inode集合则可以是一个以所有被处理文件的inode为键值的哈希(hash)表。
接下来,是在上述的处理状态值存储区(hash表)中察看:是否保存有上述被处理文件的inode;如果没有,则将该inode存放到处理状态值存储区(hash表);同时,建立此被处理文件的元数据请求队列,用于保存当前被处理文件的后续元数据请求;然后,执行上述文件服务线程的功能,根据当前被处理的元数据请求对所述的被处理文件进行相应的处理;在完成对元数据请求的处理后,该文件服务线程察看上述被处理文件的元数据请求队列中是否还有后续元数据请求,如果有,该文件服务线程则向元数据服务进程发起请求队列保存的所有后续元数据请求中最先保存的后续元数据请求,然后结束该文件服务线程;文件服务线程向元数据服务进程发起请求队列保存的所有后续元数据请求中最先保存的后续元数据请求,使得元数据服务进程可以据此启动一个其他的文件服务线程,来处理这个后续元数据请求。
如果元数据请求队列中没有后续元数据请求,则从所述处理状态值存储区(hash表)中删除这个被处理文件的处理状态值(inode)后,结束该文件服务线程。
如果在处理状态值存储区中保存有上述被处理文件的处理状态值(inode),则说明该文件正在被一个在先启动的文件服务线程处理,此时,该文件服务线程仅仅将元数据请求作为后续元数据请求保存到此被处理文件的元数据请求队列中,然后结束该文件服务线程。
采用上述文件服务线程的处理流程,可以保证在某一时刻只有一个文件服务线程处理该文件的元数据,从而保证了文件元数据的一致性。
本发明中,采用了一个元数据请求队列,用于在一个文件服务线程结束了对一个共享文件的处理后,元数据服务进程可以启动其他文件服务线程对后续的其他客户端发送的元数据请求进行处理。当有多个文件服务线程同时处理一个文件时,由于第一个线程会将此文件的inode设置为表示该文件正处于被处理的状态;这样,其他的文件服务线程的请求就会被放到这个元数据请求队列进行等待。参见图4,当一个文件服务线程处理完一个文件的元数据请求后,它会判断是否有其他的元数据请求正在等待着处理,如没有,它将释放该文件的inode。否则,就向元数据服务进程发送一个用于启动一个其他文件服务线程处理正在等待处理的元数据请求。如上所述,元数据服务进程会将当前线程池中一个空闲的文件服务线程启动,来处理元数据请求队列中的第一个元数据请求。
为了使得本发明中的多个文件服务线程能够均衡地负荷元数据处理任务,本发明中的元数据服务进程采用轮转方式启动多个文件服务线程对元数据请求进行处理:元数据服务进程采用轮转方式启动所述多个文件服务线程对所述的元数据请求进行处理;
当元数据服务进程在创建所述多个文件服务线程时,同时建立一空闲文件服务线程队列,当文件服务线程处于空闲状态时,将其依次记录在的空闲文件服务线程队列之中;当元数据服务进程在启动一个文件服务线程时,如果所述空闲文件服务线程队列中还保存有空闲的文件服务线程,则总是启动排列在空闲文件服务线程队列中第一个空闲的文件服务线程,同时,将被启动的文件服务线程从所述空闲文件服务线程队列中删除。而当文件服务线程结束对元数据请求的处理时,则将自己添加到空闲文件服务线程队列之中,以准备下次被启动。
最后应说明的是:以上实施例仅用以说明本发明而并非限制本发明所描述的技术方案;因此,尽管本说明书参照上述的各个实施例对本发明已进行了详细的说明,但是,本领域的普通技术人员应当理解,仍然可以对本发明进行修改或者等同替换;而一切不脱离本发明的精神和范围的技术方案及其改进,其均应涵盖在本发明的权利要求范围当中。
Claims (2)
1.一种多线程元数据的处理方法,其特征在于:当客户端发送文件服务请求时,分别将文件服务的元数据请求发送给元数据服务器,文件服务的数据请求发送给数据服务器;所述的元数据服务器中的元数据服务进程在创建所述多个文件服务线程时,同时建立一空闲文件服务线程队列,所述元数据服务进程控制多个文件服务线程对所接收的元数据请求进行处理;
所述元数据服务进程控制多个文件服务线程的处理包括:
步骤10:元数据服务进程检测是否接收到客户端发送的元数据请求;
步骤11:如果没有,执行步骤10;否则启动一个处于空闲状态的文件服务线程对所述的元数据请求进行处理;执行步骤10;
所述文件服务线程对所接收的元数据请求进行的处理包括:
步骤20:根据所述元数据请求所对应的被处理文件的唯一编号,生成所述被处理文件的处理状态值;
步骤21:察看在处理状态值存储区中是否保存有所述被处理文件的处理状态值,如果在处理状态值存储区中未保存有该处理状态值,则将该处理状态值存放到处理状态值存储区,建立元数据请求队列,用于保存当前被处理文件的后续元数据请求;否则执行步骤25;
步骤22:根据当前被处理的元数据请求对所述的被处理文件进行相应的处理;
步骤23:在完成对当前元数据请求的处理后,察看当前被处理文件的元数据请求队列中是否还有后续元数据请求,如果当前被处理文件的元数据请求队列中还有后续元数据请求,则向所述的元数据服务进程发起所述请求队列保存的所有后续元数据请求中最先保存的后续元数据请求;执行步骤26;
步骤24;如果当前被处理文件的元数据请求队列中没有后续元数据请求,则从所述处理状态值存储区删除该被处理文件的处理状态值,执行步骤26;
步骤25:将所述的元数据请求作为后续元数据请求保存到当前被处理文件的元数据请求队列中;
步骤26:结束该文件服务线程,并向所述空闲文件服务线程队列中加入该文件服务线程。
2.根据权利要求1所述的多线程元数据的处理方法,其特征在于:所述步骤11中,元数据服务进程启动处于空闲状态的文件服务线程时采用轮转方式;具体包括:
当一个或多个文件服务线程处于空闲状态时,所述元数据服务进程将处于空闲状态的所述一个或多个文件服务线程依次记录在所述的空闲文件服务线程队列之中;
所述元数据服务进程在启动一个文件服务线程时,如果所述空闲文件服务线程队列中还保存有空闲的文件服务线程,则总是启动排列在所述空闲文件服务线程队列中第一个空闲的文件服务线程,并将被启动的文件服务线程从所述空闲文件服务线程队列中删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100552991A CN100375093C (zh) | 2005-03-18 | 2005-03-18 | 多线程元数据的处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100552991A CN100375093C (zh) | 2005-03-18 | 2005-03-18 | 多线程元数据的处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1834956A CN1834956A (zh) | 2006-09-20 |
CN100375093C true CN100375093C (zh) | 2008-03-12 |
Family
ID=37002703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100552991A Expired - Fee Related CN100375093C (zh) | 2005-03-18 | 2005-03-18 | 多线程元数据的处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100375093C (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488924B (zh) * | 2009-02-16 | 2011-11-16 | 成都市华为赛门铁克科技有限公司 | 一种元数据的修改方法和元数据服务器 |
CN102469064B (zh) * | 2010-11-03 | 2016-05-11 | 中兴通讯股份有限公司 | 通信实现方法及通信设备 |
CN102156637A (zh) * | 2011-05-04 | 2011-08-17 | 中国人民解放军国防科学技术大学 | 向量交叉多线程处理方法及向量交叉多线程微处理器 |
CN102567089B (zh) * | 2011-10-25 | 2014-02-19 | 曙光信息产业(北京)有限公司 | 一种分布式文件系统中元数据服务器线程池的设计方法 |
CN102750322B (zh) * | 2012-05-22 | 2014-11-05 | 中国科学院计算技术研究所 | 一种机群文件系统分布式元数据一致性保证方法和系统 |
CN104104731B (zh) * | 2014-07-28 | 2018-02-02 | 浪潮(北京)电子信息产业有限公司 | 一种维护数据一致性的方法及装置 |
CN106469087B (zh) * | 2015-08-19 | 2020-06-05 | 阿里巴巴集团控股有限公司 | 元数据输出方法、客户端和元数据服务器 |
CN105353987A (zh) * | 2015-11-13 | 2016-02-24 | 曙光信息产业股份有限公司 | 一种文件处理方法及装置 |
CN105389399A (zh) * | 2015-12-25 | 2016-03-09 | 北京奇虎科技有限公司 | 数据库集群的元信息的管理的方法及装置 |
CN106873906A (zh) * | 2017-01-04 | 2017-06-20 | 北京百度网讯科技有限公司 | 用于管理元信息的方法和装置 |
CN107205049B (zh) * | 2017-07-28 | 2020-06-16 | 苏州浪潮智能科技有限公司 | 一种网络附接存储方法及存储服务装置 |
CN110888844B (zh) * | 2019-11-22 | 2023-03-21 | 浪潮电子信息产业股份有限公司 | 一种数据删除方法、系统、设备及计算机可读存储介质 |
CN111355777A (zh) * | 2020-02-14 | 2020-06-30 | 西安奥卡云数据科技有限公司 | 一种分布式文件系统的管理方法装置及服务器 |
CN115086328A (zh) * | 2022-04-30 | 2022-09-20 | 济南浪潮数据技术有限公司 | 一种元数据服务业务处理方法、装置、设备及介质 |
CN114945023B (zh) * | 2022-05-20 | 2024-06-14 | 郑州浪潮数据技术有限公司 | 一种网络连接复用方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030028514A1 (en) * | 2001-06-05 | 2003-02-06 | Lord Stephen Philip | Extended attribute caching in clustered filesystem |
US6768993B2 (en) * | 2001-06-28 | 2004-07-27 | International Business Machines Corporation | System and method for file system cooperation in a multi-threaded environment |
CN1517906A (zh) * | 2003-01-14 | 2004-08-04 | 联想(北京)有限公司 | 文件系统及文件管理方法 |
CN1547137A (zh) * | 2003-12-02 | 2004-11-17 | 中国科学院计算技术研究所 | 基于数据库的海量文件管理系统与方法 |
US20050015384A1 (en) * | 2001-06-05 | 2005-01-20 | Silicon Graphics, Inc. | Relocation of metadata server with outstanding DMAPI requests |
-
2005
- 2005-03-18 CN CNB2005100552991A patent/CN100375093C/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030028514A1 (en) * | 2001-06-05 | 2003-02-06 | Lord Stephen Philip | Extended attribute caching in clustered filesystem |
US20050015384A1 (en) * | 2001-06-05 | 2005-01-20 | Silicon Graphics, Inc. | Relocation of metadata server with outstanding DMAPI requests |
US6768993B2 (en) * | 2001-06-28 | 2004-07-27 | International Business Machines Corporation | System and method for file system cooperation in a multi-threaded environment |
CN1517906A (zh) * | 2003-01-14 | 2004-08-04 | 联想(北京)有限公司 | 文件系统及文件管理方法 |
CN1547137A (zh) * | 2003-12-02 | 2004-11-17 | 中国科学院计算技术研究所 | 基于数据库的海量文件管理系统与方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1834956A (zh) | 2006-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100375093C (zh) | 多线程元数据的处理方法 | |
US11983198B2 (en) | Multi-cluster warehouse | |
CN111480154B (zh) | 批量数据摄取的方法、系统和介质 | |
US20160283282A1 (en) | Optimization of map-reduce shuffle performance through shuffler i/o pipeline actions and planning | |
CN112307037B (zh) | 一种数据同步方法和装置 | |
US9996593B1 (en) | Parallel processing framework | |
US20140108533A1 (en) | System and method for supporting out-of-order message processing in a distributed data grid | |
US20130218934A1 (en) | Method for directory entries split and merge in distributed file system | |
JP2005092875A (ja) | スレッドスケジューリングを使用してデータスループットを向上させるためのシステムおよび方法 | |
CN113377868B (zh) | 一种基于分布式kv数据库的离线存储系统 | |
JP2007183904A (ja) | イベント処理システム、イベント処理方法、イベント処理装置、及び、イベント処理プログラム | |
US9836516B2 (en) | Parallel scanners for log based replication | |
JPH0954754A (ja) | 疎結合並列処理環境における顧客情報制御システム及び方法 | |
WO2002039323A2 (en) | Method and apparatus for real-time parallel delivery of segments of a large payload file | |
CN104050250A (zh) | 一种分布式键-值查询方法和查询引擎系统 | |
TWI746511B (zh) | 資料表連接方法及裝置 | |
US10740301B2 (en) | Associating application-specific methods with tables used for data storage | |
US9747323B1 (en) | Method for reconstruction of a distributed lock state after a node addition or removal using a consistent hash | |
JP2017191599A (ja) | ゼロ競合並列データスタックを提供するデータ格納システムのデータ格納方法 | |
CN107181773A (zh) | 分布式存储系统的数据存储及数据管理方法、设备 | |
CN1293493C (zh) | 机群文件服务系统及其输入输出处理方法 | |
EP3555767B1 (en) | Partial storage of large files in distinct storage systems | |
US9558035B2 (en) | System and method for supporting adaptive busy wait in a computing environment | |
JPH0944461A (ja) | 疎結合並列処理環境においてapiスタート及びキャンセルトランザクション機能を有する顧客情報制御システム及び方法 | |
CN111245887B (zh) | Hbase连接动态保持方法、设备、存储介质及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080312 Termination date: 20210318 |
|
CF01 | Termination of patent right due to non-payment of annual fee |