CN113608694A - 数据迁移方法、信息处理方法、装置及服务器与介质 - Google Patents
数据迁移方法、信息处理方法、装置及服务器与介质 Download PDFInfo
- Publication number
- CN113608694A CN113608694A CN202110848191.7A CN202110848191A CN113608694A CN 113608694 A CN113608694 A CN 113608694A CN 202110848191 A CN202110848191 A CN 202110848191A CN 113608694 A CN113608694 A CN 113608694A
- Authority
- CN
- China
- Prior art keywords
- target
- directory
- server
- metadata
- client
- 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.)
- Granted
Links
- 238000013508 migration Methods 0.000 title claims abstract description 151
- 230000005012 migration Effects 0.000 title claims abstract description 151
- 238000000034 method Methods 0.000 title claims abstract description 92
- 230000010365 information processing Effects 0.000 title claims abstract description 40
- 238000003672 processing method Methods 0.000 title claims description 28
- 238000012790 confirmation Methods 0.000 claims description 46
- 230000005540 biological transmission Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 5
- 102100039121 Histone-lysine N-methyltransferase MECOM Human genes 0.000 description 35
- 101001033728 Homo sapiens Histone-lysine N-methyltransferase MECOM Proteins 0.000 description 35
- 230000008569 process Effects 0.000 description 33
- 238000010586 diagram Methods 0.000 description 16
- 238000000125 metastable de-excitation spectroscopy Methods 0.000 description 16
- 238000012986 modification Methods 0.000 description 13
- 230000004048 modification Effects 0.000 description 13
- 239000012634 fragment Substances 0.000 description 9
- 230000008014 freezing Effects 0.000 description 9
- 238000007710 freezing Methods 0.000 description 9
- 238000002360 preparation method Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000013475 authorization Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000010257 thawing Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开关于一种数据迁移方法、信息处理方法、装置及服务器与介质。其中,数据迁移方法,包括:接收迁移指令,迁移指令包括目标服务器和待迁移的第一目标目录;获取第一目标目录的目标属性信息;在目标属性信息指示为只读属性的情况下,将第一目标目录传输至目标服务器。本公开可以在第一目标目录的目标属性信息指示为只读属性的情况下,可以减少因目录锁定与解锁带来的时间与计算资源的消耗,提高数据迁移效率。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及一种数据迁移方法、信息处理方法、装置及服务器与介质。
背景技术
在分布式存储系统中,通常会存在相关服务器用于对分布式存储的文件的元数据进行管理。例如,在Ceph分布式文件存储系统中,通常会使用元数据服务器(MetadataServers,MDS)对关联的文件的元数据进行存储。Ceph分布式文件存储系统中,MDS的数量可以有多个,各MDS可以以目录的行驶存储关联文件的元数据。与此同时,各MDS还可以接收客户端对关联文件的访问请求。当某一MDS承载的访问请求过多时,可能会将部分目录迁移至另一MDS。
现有技术中,在目录迁移过程中,往往存在对目录的锁定与解锁的过程,导致数据迁移效率较低。
发明内容
本公开提供一种数据迁移方法、信息处理方法、装置及服务器与介质,以至少解决相关技术中数据迁移效率较低的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种数据迁移方法,包括:
接收迁移指令,迁移指令包括目标服务器和待迁移的第一目标目录;
获取第一目标目录的目标属性信息;
在目标属性信息指示为只读属性的情况下,将第一目标目录传输至目标服务器。
在其中一个实施例中,将第一目标目录传输至目标服务器之前,方法还包括:
获取第一元数据,第一元数据包括第一目标目录至对应的根目录的目录路径信息;
将第一元数据传输至目标服务器,第一元数据用于目标服务器建立对第一目标目录的缓存路径。
在其中一个实施例中,在目标属性信息指示为只读属性的情况下,将第一目标目录传输至目标服务器,包括:
在目标属性信息指示为只读属性的情况下,确定不对第一目标目录进行冻结;
在接收到目标服务器发送的第一确认信息的情况下,将未冻结的第一目标目录传输至目标服务器,第一确认信息用于指示目标服务器已建立对第一目标目录的缓存路径。
在其中一个实施例中,方法还包括:
在接收到目标服务器发送的第一确认信息的情况下,将第一目标目录的状态修改为第一状态,第一状态用于指示第一目标目录处于从权威服务器迁移至目标服务器的过程中。
在其中一个实施例中,将第一目标目录传输至目标服务器之后,方法还包括:
获取归属第一目标目录的目标子目录与目标子文件;
将目标子目录与目标子文件传输至目标服务器。
在其中一个实施例中,将目标子目录与目标子文件传输至目标服务器,具体包括:
在接收到目标服务器发送的第二确认信息的情况下,将目标子目录与目标子文件传输至目标服务器;其中,第二确认信息用于指示第一目标目录已存储至目标服务器的缓存。
在其中一个实施例中,方法还包括:
在接收到目标服务器发送的第三确认信息的情况下,将第一目标目录的状态修改为第二状态;其中,第三确认信息用于指示目标子目录与目标子文件已存储至目标服务器的缓存,第二状态用于指示第一目标目录的权威服务器为目标服务器。
根据本公开实施例的第二方面,提供一种信息处理方法,包括:
接收第一客户端发送的读取请求,读取请求包括目标文件;
响应于读取请求,获取目标文件的目标属性信息;
在目标属性信息指示为只读属性的情况下,向第一客户端发送目标元数据,目标元数据包括目标文件的元数据。
在其中一个实施例中,接收第一客户端发送的读取请求之后,方法还包括:
分析读取请求对应的目标锁类型;
在目标属性信息指示为只读属性的情况下,向第一客户端发送目标元数据,包括:
在目标属性信息指示为只读属性情况下,停止分析读取请求对应的目标锁类型,向第一客户端发送目标元数据。
在其中一个实施例中,分析读取请求对应的目标锁类型之后,方法还包括:
在目标属性信息指示不为只读属性情况下,获取第二客户端对目标文件的第一权限;
在第一权限与目标锁类型冲突的情况下,回收第二客户端对目标文件的第一权限,并为第一客户端分配第二权限,向第一客户端发送目标元数据,其中,第二权限用于授权第一客户端根据目标元数据访问目标文件。
根据本公开实施例的第三方面,提供一种数据迁移装置,包括:
第一接收模块,被配置为执行接收迁移指令,迁移指令包括目标服务器和待迁移的第一目标目录;
第一获取模块,被配置为执行获取第一目标目录的目标属性信息;
第一传输模块,被配置为执行在目标属性信息指示为只读属性的情况下,将第一目标目录传输至目标服务器。
在其中一个实施例中,装置还包括:
第二获取模块,被配置为执行将第一目标目录传输至目标服务器之前,获取第一元数据,第一元数据包括第一目标目录至对应的根目录的目录路径信息;
建立模块,被配置为执行将第一元数据传输至目标服务器,第一元数据用于目标服务器建立对第一目标目录的缓存路径。
在其中一个实施例中,第一传输模块,包括:
确定单元,被配置为执行在目标属性信息指示为只读属性的情况下,确定不对第一目标目录进行冻结;
传输单元,被配置为执行在接收到目标服务器发送的第一确认信息的情况下,将未冻结的第一目标目录传输至目标服务器,第一确认信息用于指示目标服务器已建立对第一目标目录的缓存路径。
在其中一个实施例中,装置还包括:
第一修改模块,被配置为执行在接收到目标服务器发送的第一确认信息的情况下,将第一目标目录的状态修改为第一状态,第一状态用于指示第一目标目录处于从权威服务器迁移至目标服务器的过程中。
在其中一个实施例中,装置还包括:
第三获取模块,被配置为执行将第一目标目录传输至目标服务器之后,获取归属第一目标目录的目标子目录与目标子文件;
第二传输模块,被配置为执行将目标子目录与目标子文件传输至目标服务器。
在其中一个实施例中,第二传输模块,具体被配置为执行:
在接收到目标服务器发送的第二确认信息的情况下,将目标子目录与目标子文件传输至目标服务器;其中,第二确认信息用于指示第一目标目录已存储至目标服务器的缓存。
在其中一个实施例中,装置还包括:
第二修改模块,被配置为执行在接收到目标服务器发送的第三确认信息的情况下,将第一目标目录的状态修改为第二状态;其中,第三确认信息用于指示目标子目录与目标子文件已存储至目标服务器的缓存,第二状态用于指示第一目标目录的权威服务器为目标服务器。
根据本公开实施例的第四方面,提供一种信息处理装置,装置包括:
第二接收模块,被配置为执行接收第一客户端发送的读取请求,读取请求包括目标文件;
第四获取模块,被配置为执行响应于读取请求,获取目标文件的目标属性信息;
发送模块,被配置为执行在目标属性信息指示为只读属性的情况下,向第一客户端发送目标元数据,目标元数据包括目标文件的元数据。
在其中一个实施例中,装置还包括:
分析模块,被配置为执行接收第一客户端发送的读取请求之后,分析读取请求对应的目标锁类型;
发送模块,具体被配置为执行在目标属性信息指示为只读属性情况下,停止分析读取请求对应的目标锁类型,向第一客户端发送目标元数据。
在其中一个实施例中,装置还包括:
第五获取模块,被配置为执行在目标属性信息指示不为只读属性情况下,获取第二客户端对目标文件的第一权限;
回收分配发送模块,被配置为执行在第一权限与目标锁类型冲突的情况下,回收第二客户端对目标文件的第一权限,并为第一客户端分配第二权限,向第一客户端发送目标元数据,其中,第二权限用于授权第一客户端根据目标元数据访问目标文件。
根据本公开实施例的第五方面,提供一种服务器,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,处理器被配置为执行指令,以实现如第一方面的数据迁移方法,或者实现如第二方面的信息处理方法。
根据本公开实施例的第六方面,提供一种计算机可读存储介质,当计算机可读存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如第一方面的数据迁移方法,或者执行如第二方面的信息处理方法。
根据本公开实施例的第七方面,提供一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现如第一方面的数据迁移方法,或者执行如第二方面的信息处理方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
本公开实施例提供的数据迁移方法,接收包括有目标服务器和待迁移的第一目标目录的迁移指令,获取第一目标目录的目标属性信息,在目标属性信息指示为只读属性的情况下,将第一目标目录传输至目标服务器。本实施例在待迁移的第一目标目录的目标属性信息为只读属性的情况下,将第一目标目录传输至目标服务器,从而可以减少因目录锁定与解锁带来的时间与计算资源的消耗,提高数据迁移效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出可用于实施数据迁移方法与信息处理方法的一种框架的示例图。
图2是根据一示例性实施例示出的MDS中元数据组成结构的示例图。
图3是根据一示例性实施例示出的一种数据迁移方法的流程图。
图4是根据一示例性实施例示出的第一元数据迁移的流程图。
图5是根据一示例性实施例示出的第一目标目录迁移的流程图。
图6是根据一示例性实施例示出的第二元数据迁移的流程图。
图7是根据一示例性实施例示出的数据迁移方法在一个具体应用例中的流程图。
图8是根据一示例性实施例示出的CephFS中客户端访问文件过程的一种原理图。
图9是根据一示例性实施例示出的一种信息处理方法的流程图。
图10是根据一示例性实施例示出的发送目标元数据的一个流程图。
图11是根据一示例性实施例示出的发送目标元数据的另一个流程图。
图12是根据一示例性实施例示出的信息处理方法在一个具体应用例中的流程图。
图13是根据一示例性实施例示出的一种数据迁移装置的框图。
图14是根据一示例性实施例示出的一种信息处理装置的框图。
图15是根据一示例性实施例示出的一种服务器的框图。
图16是根据一示例性实施例示出的用于数据处理的设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
参见图1,图1示出了可用于实施本公开实施例提供的信息处理方法与数据迁移方法的一种框架的示例图。该框架可以是应用了Ceph分布式存储平台(以下简称Ceph)。
如图1所示,在Ceph的框架中,可以包括如下主体:客户端(Client)、元数据服务器(Metadata Servers,MDS)以及对象存储集群(Reliable Autonomic Distributed ObjectStore,RADOS)。一般来说,基于RADOS,Ceph可以对外提供三种不同类型的存储服务:文件存储(Ceph File Storage,CephFS)、对象存储(RADOS Gateway,RGW)以及块存储(RADOSBlock Device,RBD)。
以下主要以Ceph提供的CephFS服务为例进行说明。CephFS提供了一套可移植操作系统接口(Portable Operating System Interface,POSIX)协议兼容的接口,同时保证多客户端间数据缓存一致性。
简单来说,RADOS可以作为一种分布式数据存储系统,来对各类文件进行分布式存储(对应Data Pool);而MDS则可以用于对文件的元数据进行缓存与管理。
客户端可以请求对存储在RADOS中文件进行读或写(read/write)的操作。然而,通常来说,客户端在向RADOS请求进行文件操作过程中,会先向MDS中请求文件的元数据,再进一步基于文件的元数据来操作RADOS中的相关文件。换而言之,MDS可以用来负责协调客户端对元数据的访问。
与此同时,如图1所示的框架中,CephFS可以包括一个或者多个MDS。相应地,MDS还可以用于负责维护多客户端之间的分布式元数据缓存。
此外,MDS中的元数据可以进行修改,所有元数据的修改(Metadata Mutation)可以聚合起来,通过日志(Journal)的形式写入(Journal Flush)至RADOS中,具体可以写入到元数据池(Metadata Pool)。而MDS中,一般不会对元数据的状态,例如修改状态等进行存储。
CephFS可以通过基于授权(capabilities,caps)的分布式锁来保证多客户端数据缓存一致性。一般来说,当客户端需要读/写一个文件时,必须拥有该文件的读/写caps。如果客户端没有相关的caps,那么客户端需要发送一个cap信息给MDS索要相应的caps,而MDS则会在合适的时机授予客户端caps。一旦客户端拥有了读/写的权限,就可以直接通过RADOS去读/写文件。
如上文所示的,MDS的数量可以是多个,例如,结合图1,可能同时存在主MDS(Active MDS)以及备份MDS(Standby MDS)。在一些情况下,不同MDS之间可以进行元数据迁移(Metadata Exchange)。
举例来说,MDS之间的元数据迁移,可以对应是特定的目录的迁移。也就是说,在MDS中,可以通过目录的形式对文件的元数据进行管理。相应地,在客户端在请求对文件进行操作时,在MDS中可能存在的打开目录或者子目录等(open mkdir/listdir)的操作。
当然,以上仅仅是对可以用于应用本公开实施例提供的数据迁移方法与信息处理方法的框架的一种示例;在实际应用中,信息处理方法与数据迁移方法还可以用于其他的框架中。例如:在Hadoop分布式文件系统中,同样也可以存在文件读取、权限管理以及元数据迁移的过程;相应地,数据迁移方法与信息处理方法也可以应用在Hadoop分布式文件系统的框架中。
而为了简化说明,在下文实施例中,将主要以在Ceph分布式存储平台这一框架中的应用为例,来对本公开提供的数据迁移方法与信息处理方法进行说明。
如上文所示的,基于如图1所示的架构,可以实现数据迁移方法,例如元数据在两个MDS之间的迁移。
参见图2,图2示出了在MDS中常见的元数据组成结构,为便于理解,以下首先针对图2的缩写的含义进行介绍:
CInode:MDS缓存中的一个索引节点,对应一个文件或目录,存放文件或目录的基本信息。举例来说,CInode中可以包括目录的权限、存储位置等数据,因此,也可以称为目录的元数据;
CDir:MDS缓存中的一个目录分片,一个目录CInode包含一个或多个CDir;
CDentry:MDS缓存中的目录分片项目,非空的CDentry指向一个CInode;
Subtree:文件系统目录树的分片,或者称为子树,上届为一个目录分片,下届为0到多个目录分片。
以上提到的索引节点、MDS中的文件、目录、目标分片以及子树等,均可以认为是元数据。
再次参见图2,设元数据服务器的数量为多个,多个元数据服务器中包括有MDS0与MDS1,其中,MDS0管理图中矩形方框部分的元数据,MDS1管理椭圆部分的元数据。
矩形方框部分的元数据可以是包括一个Subtree,其上界为CDir(*/),下界为CDir(*/bin)和CDir(0*/usr)。椭圆部分的元数据可以包括两个Subtree,其上界分别为CDir(*/etc)和CDir(1*/usr),而下界均为空。
通过在不同MDS之间进行数据迁移,可以有效对MDS负载进行均衡。CephFS多MDS负载均衡有两种策略:静态负载均衡和动态负载均衡,默认情况下通常采用动态负载均衡。多MDS负载均衡过程中通常以Subtree为粒度迁移,目录同样可以认为是一种Subtree,下文均将以目录代替Subtree解释迁移过程。
相关技术中,在目录迁移时,MDS缓存中迁移的目录是锁定的,应用层的输入/输出(Input/Output,IO)不能访问正在迁移的目录,通常表现为IO卡顿。
基于如上文所示的数据迁移的应用场景,本公开实施例提供了一种数据迁移方法。
如图3所示,该数据迁移方法包括:
步骤301,接收迁移指令,迁移指令包括目标服务器和待迁移的第一目标目录;
步骤302,获取第一目标目录的目标属性信息;
步骤303,在目标属性信息指示为只读属性的情况下,将第一目标目录传输至目标服务器。
上述数据迁移方法可以应用于目标服务器以外的服务器。为便于说明,可以将应用有该数据迁移方法的服务器称为第一服务器,将目标服务器称为第二服务器。
本公开实施例提供的数据迁移方法,接收包括有目标服务器和待迁移的第一目标目录的迁移指令,获取第一目标目录的目标属性信息,在目标属性信息指示为只读属性的情况下,将第一目标目录传输至目标服务器。本实施例在待迁移的第一目标目录的目标属性信息为只读属性的情况下,将第一目标目录传输至目标服务器,从而可以减少因目录锁定与解锁带来的时间与计算资源的消耗,提高数据迁移效率。
以下结合在Ceph框架下元数据服务器之间的数据迁移的应用场景进行说明,其中,第一服务器与第二服务器可以分别记为MDS0与MDS1。
在步骤301中,可以是MDS0接收包括有MDS1与待迁移的第一目标目录的迁移指令。换而言之,迁移指令可以是用于指示将第一目标目录从MDS0迁移至MDS1的指令。
迁移指令可以是自动生成或者手动生成的。比如,在上述动态负载均衡策略下,第一目标目录的负载较大时,需要动态地将第一目标目录从MDS0迁移至MDS1。在这种情况下,迁移指令可以是在负责动态负载均衡的服务器中自动生成的。而在另一些场景下,例如静态负载均衡策略下,迁移指令可以是相关电子设备响应于用于的输入而生成,此时迁移指令可以认为是手动生成的。
以上针对迁移指令的生成方式进行了举例说明,而MDS0可以接收上述的迁移指令。
在步骤302中,MDS0获取第一目标目录的目标属性信息。
如上文所示的,迁移指令包括了待迁移的第一目标目录,因此,MDS0可以响应于迁移指令,进一步获取第一目标目录的目标属性信息。
容易理解的是,通常情况下,第一目标目录的元数据可以包括其目录名称、上级目录、存储位置、权限信息等。本实施例中,可以预先对第一目标目录设置拓展属性,该拓展属性可以对应上述的目标属性信息。相应地,第一目标目录的元数据还可以包括该目标属性信息。
目标属性信息可以是第一目标目录的元数据的组成部分,并随第一目标目录存储在MDS0中。
目标属性信息可以用于指示第一目标目录是否为只读属性。在步骤303中,当第一目标目录为只读属性时,可以将第一目标目录传输至目标服务器,比如上文举例中所示的MDS1。
举例来说,若第一目标目录的目标属性信息指示为只读属性,则在对第一目标目录进行迁移的过程中,可以无需考虑不同客户端对目录的权限,因此可以减少相关权限的迁移操作;与此同时,还可以省略对第一目标目录进行锁定与解锁的操作等,进而有效提升只读属性的第一目标目录的迁移效率。
当然,在第一目标目录迁移过程中,MDS0除了需要向MDS1传输第一目标目录这一元数据外,可能还需要传输其他的元数据,以上元数据的传输过程,可以认为是第一目标目录关联数据迁移的过程。下文实施例将对数据迁移方法进行进一步说明。
如图4所示,在一个示例性实施例中,上述步骤303,将第一目标目录传输至目标服务器之前,数据迁移方法还可以包括:
步骤401,获取第一元数据,第一元数据包括第一目标目录至对应的根目录的目录路径信息;
步骤402,将第一元数据传输至目标服务器,第一元数据用于目标服务器建立对第一目标目录的缓存路径。
本实施例中,可以将包括有第一目标目录至对应的根目录的目录路径信息的第一元数据传输至目标服务器,以建立第一目标目录的缓存路径,从而使得迁移后的第一目标目录依然能够与根目录能够关联,保证整个目录结构完整性。
步骤401中,在确定了待迁移的第一目标目录的情况下,可以从MDS0中存储的元数据中,获取包括有目录路径信息的元数据,即上述的第一元数据。
举例来说,第一目标目录可以是多级目录下的一个子目录。比如,第一目标目录可以是“/home/maven”,根目录可以对应最左侧的“/”。
第一目标目录“/home/maven”的元数据可以包括其与上级目录“/home/”之间的路径关系,而上级目录“/home/”的元数据则可以包括其与根目录“/”之间的路径关系。这些路径关系可以组合成上述第一目标目录至对应的根目录的目录路径信息。
步骤402中,可以将第一元数据传输至MDS1,以便MDS1建立对第一目标目录的缓存路径。
比如,结合图2,上述根目录至第一目标目录的路径上,每一个目录均可以对应有CInode,而CDentry则可以起到了连接不同目录的CInode的作用,即CDentry可以包括上述的路径关系。各个目录的CInode,以及不同目录的CInode之间的连接关系可以作为第一元数据传输至MDS1。
MDS1可以将第一目标目录至根目录路径上所有CInode添加进缓存,以建立对第一目标目录的缓存路径。
如图5所示,在一个示例性实施例中,上述步骤303,在目标属性信息指示为只读属性的情况下,将第一目标目录传输至目标服务器,包括:
步骤501,在目标属性信息指示为只读属性的情况下,确定不对第一目标目录进行冻结;
步骤502,在接收到目标服务器发送的第一确认信息的情况下,将未冻结的第一目标目录传输至目标服务器,第一确认信息用于指示目标服务器已建立对第一目标目录的缓存路径。
通常情况下,基于Ceph现有的数据迁移方式,在对第一目标目录进行迁移的过程中,需要对第一目标目录以及归属于第一目标目录的目录与文件进行冻结。而本实施例中,在目标属性信息指示为只读属性的情况下,确定不对第一目标目录进行冻结,将未冻结的第一目标目录传输至目标服务器,有助于减少数据迁移所需工作量,提高数据迁移效率;此外,在接收到目标服务器发送的用于指示已建立对第一目标目录的缓存路径的第一确认信息的情况下,将未冻结的第一目标目录传输至目标服务器,有助于保证第一目标目录传输过程的顺利进行。
为简化说明,可以将第一目标目录以及归属于第一目标目录的目录与文件,共同称为第二元数据,或者称为目标子树。
相关技术中,针对第一目标目录进行冻结,可以认为是针对目标子树进行冻结的其中一个环节。而对目标子树进行冻结,一般来说,可以是指冻结客户端等终端对目标子树的修改权限。在目标子树被冻结的情况下,客户端通常无法对目标子树进行修改。
在步骤501中,MDS0若检测到第一目标目录的目标属性信息指示为只读属性的情况下,可以确定不定第一目标目录进行冻结,或者说不对目标子树进行冻结,如此,可以避免因冻结目标子树带来的迁移时间的消耗。
如上文实施例所示的,MDS0可以将第一元数据发送至MDS1,以供MDS1建立对第一目标目录的缓存路径。从MDS1的角度来说,在建立了该缓存路径后,可以向MDS0发送第一确认信息,以通知MDS0可以进行其他相关元数据的传输。
因此,在步骤502中,可以MDS0可以在接收到MDS1发送的第一确认信息后,进一步将未冻结的第一目标目录传输至MDS1。
结合图2,第一目标目录可以对应有CInode,该CInode可以包括第一目标目录的存储位置等元数据,根据CInode所记载的第一目标目录的存储位置,可以将第一目标目录传输至MDS1。
在一个示例性实施例中,数据迁移方法还可以包括:
在接收到目标服务器发送的第一确认信息的情况下,将第一目标目录的状态修改为第一状态,第一状态用于指示第一目标目录处于从权威服务器迁移至目标服务器的过程中。
本实施例中,在接收到目标服务器发送的第一确认信息的情况下,将第一目标目录的状态修改为第一状态,以指示第一目标目录处于从权威服务器迁移至目标服务器的过程中。通过对第一目标目录的状态的修改,可以有助于合理应对迁移期间客户端对第一目标目录的请求,保证第一目标目录的顺利传输。
举例来说,第一目标目录的状态可以记为dir_auth,当第一目标目录处于第一状态时,dir_auth可以设置成<0,1>。其中,0可以认为是指第一目标目录的权威服务器为第一服务器,记为MDS0;而1可以对应第二服务器MDS1;<0,1>则可以是指第一目标目录对应的权威服务器从第一服务器转移至第二服务器的过程中的状态。
权威服务器在一定程度上可以认为是存储第一目标目录的元数据服务器。因此,从另一个角度来说,上述的第一状态可以指示第一目标目录处于从权威服务器迁移至目标服务器的过程中。
当然,在Ceph中,除了可以在权威服务器中具有上述的第一目标目录外,可能还存在其他元数据服务器中具有第一目标目录的副本。此处可以将除MDS0与MDS1之外的存储有第一目标目录的副本的MDS称为第三服务器。
在一个示例中,MDS0在将第一目标目录的状态修改为第一状态的情况下,还可以向第三服务器发送通知消息,以通知第三服务器将第一目标目录的状态也修改为第一状态,从而保证第一目标目录在各个MDS中的状态的一致性。
在另一个示例中,MDS0可以在接收到第三服务器发送的指示已将第一目标目录的状态修改为第一状态的确认信息的情况下,再进一步向MDS1传输第一目标目录。
在一个示例中,MDS0可以在向MDS1传输第一目标目录的过程中,将第一目标目录的目标属性信息也传输至MDS1。如此,MDS1在根据第一目标目录的目标属性信息,确定无需对第一目标目录进行冻结。与此同时,后续完成对第一目标目录所属的目标子树的迁移后,也无需进行解冻的操作,有效降低了数据迁移所需的时间,提高数据迁移效率。
如图6所示,在一个示例性实施例中,上述步骤303,将第一目标目录传输至目标服务器之后,数据迁移方法还可以包括:
步骤601,获取归属第一目标目录的目标子目录与目标子文件;
步骤602,将目标子目录与目标子文件传输至目标服务器。
本实施例中,将归属于第一目标目录的目标子目录与目标子文件传输至目标服务器,在一定程度上可以避免在数据迁移后,归属于第一目标目录的目标子目录与目标子文件分散于多个服务器中,从而有助于方便对第一目标目录及相关元数据进行管理。
如上文所示的,第一目标目录以及归属于第一目标目录的目标子目录与目标子文件,可以总称为目标子树。本实施例中,可以认为是将该目标子树整体从MDS0迁移中MDS1。
结合图2,第一目标目录的可以包括一个或多个目录分片,各个目录分片可以认为是归属于第一目标目录的目标子目录。
举例来说,第一目标目录可以记录多个目录分片的CInode,MDS0根据这些目录分片的CInode,可以确定归属于第一目标目录的目录分片。与此同时,每个目录分片的CInode,又可以记录有该目录分片的储存地址等元数据。因此,步骤601中,根据以上元数据,可以获取到归属第一目标目录的目标子目录与目标子文件。
而在步骤602中,可以进一步将目标子目录与目标子文件传输至目标服务器。
容易理解的是,在第一目标目录的目标属性信息指示为只读属性时,这些目标子目录与目标子文件均可以是在未冻结的状态下有MDS0传输至MDS1的,进而可以节省冻结操作所带来的时间消耗,提高数据迁移效率。
在一个示例性实施例中,上述步骤602,将目标子目录与目标子文件传输至目标服务器,具体包括:
在接收到目标服务器发送的第二确认信息的情况下,将目标子目录与目标子文件传输至目标服务器;其中,第二确认信息用于指示第一目标目录已存储至目标服务器的缓存。
本实施例中,可以是在目标服务器将第一目标目录存储至目标服务器的缓存的情况下,再将目标子目录与目标子文件传输至目标服务器,从而可以保证第一目标目录相关元数据可以有序迁移,提高数据迁移过程的可靠性。
举例来说,MDS1可以在完成对MDS0传输的目标子文件的存储后,向MDS0发送第二确认信息,以通知MDS0已完成目标子文件的存储,且MDS0可以进行后续元数据的传输。而MDS0可以在接收到第二确认信息后,可以将目标子目录与目标子文件传输MDS1。
在一个举例中,MDS0对归属第一目标目录的目标子目录与目标子文件的获取过程,可以是在接收到第二确认信息之后再进行的。
而在另一个举例中,MDS0也可以在确定了第一目标目录后,即可以对目标子目录与目标子文件进行获取。也就是说,MDS0对目标子目录与目标子文件进行获取过程,相对于MDS0接收第二确认信息的时刻,可以不存在确定的先后顺序。
在一个示例性实施例中,数据迁移方法还可以包括:
在接收到目标服务器发送的第三确认信息的情况下,将第一目标目录的状态修改为第二状态;其中,第三确认信息用于指示目标子目录与目标子文件已存储至目标服务器的缓存,第二状态用于指示第一目标目录的权威服务器为目标服务器。
本实施例中,在接收到目标服务器发送的第三确认信息的情况下,可以将第一目标目录的状态修改为第二状态,即在完成第一目标目录即相关元数据向目标服务器的迁移的情况下,可以将第一目标目录的状态进行修改以指示第一目标目录的权威服务器为目标服务器。本实施例通过对第一目标目录状态的修改,可以比较清晰地指示第一目标目录及相关元数据的迁移进度,有助于合理处理数据迁移完成后客户端对第一目标目录的请求,保证第一目标目录及相关元数据的顺利传输。
结合上文中的举例,当第一目标目录处于第二状态时,dir_auth可以设置成<1,-2>,其中,前面的数值1表示第一目标目录的权威服务器为MDS1,后面的数值-2无意义,可用于指示数据迁移已经完成。
从另一个角度来说,可以认为第一目标目录已经完成从原权威服务器MDS0到现权威服务器MDS1的迁移,后续客户端访问第一目标目录中记录的文件时,可以是向MDS1请求这些文件的元数据。
在一个示例中,MDS1在完成对目标子目录与目标子文件的存储后,可以将第一目标目录的状态修改为第三状态,dir_auth可以设置成<1,0>,其中数字1位于前方,表示第一目标目录对应的权威服务器可以变更为MDS1,<1,0>则可以表示述第一目标目录的权威服务器可以由MDS0迁移至MDS1。
dir_auth为<1,0>的设置结果可以是包括在第三确认信息中的,也就是说,MDS1可以将包括dir_auth为<1,0>的设置结果的第三确认信息发送至MDS0,以通知MDS0目标子目录与目标子文件已存储至MDS1的缓存。MDS0可以根据第三确认信息,将第一目标目录的dir_auth修改成<1,-2>。
如上文所示的,在Ceph中还可以存在其他MDS具有第一目标目录副本,这些具有第一目标目录副本的MDS可以称为第三服务器。
在一个示例中,MDS0在将第一目标目录的状态修改为第二状态的情况下,可以进一步发送信息通知第三服务器将第一目标目录的权威服务器指向MDS1。第三服务器根据MDS0发送的信息,将第一目标目录的状态修改为第二状态。
如图7所示,以下结合一实际应用场景,对上述的数据迁移方法进行说明。其中,在该应用场景中,可以是将第一目标目录(以下简称迁移目录)“/home/maven”从源MDS迁移至目标MDS。源MDS可以记为MDS0,目标MDS可以记为MDS1。
步骤701,MDS0收到迁移指令后,向MDS1发送迁移目录对应的子树发现消息,主要是通知MDS1迁移目录是/home/maven。随后,MDS0判断迁移目录是否是只读目录,非只读目录则开始冻结子树,此时迁移目录被锁定不可访问;只读目录则判定无需冻结子树。
步骤702,MDS1接收到子树发现消息后,调用节点查找函数,获取迁移目录至根目录路径上所有索引节点的CInode并添加进缓存。最后,向MDS0回复子树发现确认消息。
步骤703,MDS0收到MDS1的子树发现确认消息后,触发回调并等待所有子目录都被冻结后(只读目录则无冻结过程),将maven的CDir封装到子树准备消息中发送给MDS1。
步骤704,MDS1收到子树准备消息后,将其解码并将maven的CDir加入到缓存中,判断迁移目录是否是只读目录,非只读目录则将子树冻结(只读目录则无冻结过程),同时将迁移目录的dir_auth设置成<0,1>,回复MDS0子树准备确认消息。
步骤705,MDS0收到子树准备确认消息后,向所有拥有迁移目录副本的MDS发送子树通知消息,通知这些具有迁移目录副本的MDS将该迁移目录的dir_auth设置成<0,1>。如无副本,则跳转到步骤907。
步骤706,其它拥有迁移目录副本的MDS,设置dir_auth为<0,1>,并回复MDS0子树通知确认消息。
步骤707,MDS0收集到所有子树通知确认消息后,设置待迁移目录的dir_auth为<0,1>后,将迁移目录的子目录/子文件编码,封装在导出子树消息中发送给MDS1。
步骤708,MDS1收到导出子树消息后,解码并将其加入到缓存中,记录相关的迁移日志。同时将迁移目录的dir_auth设置为<1,0>,并同客户端建立连接。
步骤709,MDS0收到导出子树确认消息之后,记录相关日志。同时向所有拥有迁移目录副本的MDS发送子树通知消息,设置该迁移目录的dir_auth为<1,-2>。如无副本跳转到步骤711。
步骤710,其它拥有该迁移目录副本的MDS收到子树通知消息后,将迁移目录的dir_auth设置成<1,-2>,并回复MDS0子树通知确认消息。
步骤711,MDS0收集到所有子树通知确认消息后,向MDS1发送导出子树完成消息,判断迁移目录是否是只读目录,非只读目录则解冻迁移目录(只读目录则无解冻过程),清除缓存中的相关元数据。
步骤712,MDS1收到导出子树完成消息后,提交迁移结束日志,判断迁移目录是否是只读目录,非只读目录则解冻迁移目录(只读目录则无解冻过程)。至此子树迁移过程完成。
结合以上应用场景可见,本公开实施例提供的数据迁移方法,可以在迁移目录为只读属性时,省略子树冻结与解冻等步骤,提高数据迁移效率;同时,在迁移目录为非只读属性时,也能保证数据迁移的正常进行。
本公开还提供了一种信息处理方法,为简化说明,以下主要结合Ceph分布式存储平台这一框架对信息处理方法进行说明。
如图8所示,图8示出了CephFS基于授权来保证多客户端的数据缓存一致性的一个典型应用场景中,客户端访问文件的原理图。总的来说,在该典型应用场景中,客户端A(Client A)向MDS请求读取RADOS中的文件,而客户端B(Client B)正在对文件进行写操作。
客户端A读取文件的过程可以总结为:
1.客户端B拥有某文件的写权限(write caps),并且正在进行写操作;
2.与此同时,客户端A需要读取该文件,并向MDS申请该文件的读权限(readcaps),该过程也可以认为是客户端A请求获取或更新相关caps,可以通过例如getattr等函数来实现;
3.MDS分析客户端A所申请权限所需锁类型(acquire_locks)后,通知客户端B,需要回收客户端B的write caps,该过程可以认为是对客户端B撤销更新权限(revoke/renewcaps);
4.客户端B下刷数据(可以认为将修改后的文件进行保存);
5.MDS授予客户A read caps;
6.客户端A直接与后端RADOS交互读取文件。
结合以上过程描述可见,客户端A在请求访问某一文件时,MDS往往会先判断客户端A的请求是否与其他各个客户端对该文件的权限存在冲突,在不存在冲突的情况下,MDS再授权客户端A对文件进行访问。
图9是根据一示例性实施例示出的一种信息处理方法的流程图,该方法包括以下步骤:
步骤901,接收第一客户端发送的读取请求,读取请求包括目标文件;
步骤902,响应于读取请求,获取目标文件的目标属性信息;
步骤903,在目标属性信息指示为只读属性的情况下,向第一客户端发送目标元数据,目标元数据包括目标文件的元数据。
值得说明的是,本实施例示出的信息处理方法可以应用于服务器中,比如,应用于上述的MDS中。
本公开实施例中,服务器在接收到第一客户端发送的包括目标文件的读取请求的情况下,可以获取目标文件的目标属性信息,并在目标属性信息指示为只读属性的情况下,向第一客户端发送目标文件的目标元数据。本公开实施例可以在目标文件的目标属性信息指示为只读属性时,直接将目标元数据发送至第一客户端,以满足第一客户端对目标文件的读取需求,从而有效提高了第一客户端对目标文件的读取效率。
在步骤901中,结合图8,第一客户端可以对应为某一个Client,而信息处理方法应用在服务器中,具体可以是上述的MDS中。
第一客户端可以向MDS发送包括目标文件的读取请求,用于请求读取目标文件。从另一个角度来说,读取请求可以认为是第一客户端向服务器申请对目标文件的读权限。
结合图1,一般情况下,目标文件可以是存储在RADOS中;在MDS中可以缓存有目标文件的元数据,比如目标文件的索引节点(inode)、归属的目录或者目标文件的大小、类型数据等等。
因此,第一客户端需要读取目标文件时,可以是先向MDS发送相应的请求,再根据MDS提供的目标文件的元数据,即目标元数据,进一步与RADOS中的目标文件进行交互。
在步骤902中,MDS响应于读取请求,获取目标文件的目标属性信息;
在本步骤中,针对目标文件可以对应设置有目标属性信息,该目标属性信息可以用于指示目标文件是否为只读文件。
在一个举例中,目标属性信息可以是目标文件的一种拓展的属性信息,可以通过标识进行体现,比如,通过标识1表示目标文件为只读属性,通过标识0表示目标文件并非是只读属性。
具体来说,目标文件在MDS中的元数据可以包括inode,针对该inode增加一个拓展属性read_only,设置1表示目标文件为只读,设置0表示目标文件为非只读。
在实际应用中,也可以通过更多的标识种类来指示更多的文件属性;此外,目标属性信息也可以通过其他的形式进行体现。
当然,容易理解的是,在实际应用,目标文件的读写等属性本身即可以存在于相应的元数据中,因此,目标属性信息也可以是直接从目标文件的常规的元数据中进行获取。
在步骤903中,在目标属性信息指示为只读属性的情况下,MDS可以将目标元数据发送至第一客户端。
如上文所示的,目标属性信息可以用于指示目标文件是否为只读文件,则在目标属性信息为只读属性时,MDS可以将目标文件的元数据发送至第一客户端。
如此,MDS通过获取目标文件的目标属性信息,并在目标属性信息指示为只读属性时,可以无需进一步进行第一客户端权限判断的过程,直接将目标元数据发送至第一客户端,从而有助于提高第一客户端对具有只读属性的目标文件的读取效率。
结合一些实际应用场景,例如离线训练数据集等文件在存入到RADOS中后,通常不会再修改且会被重复读取。针对这些类型的文件,可以设置成只读属性,该只读属性可以通过目标属性信息进行指示。
换而言之,在实际应用中,第一客户端可以是向服务器请求对一些文件进行读取,即读取请求可以是具体用于请求读取目标文件,这些目标文件可以是只读属性。容易理解的是,对于只读属性的文件,一般不会允许各个客户端进行修改的操作。
服务器在接收到第一客户端对目标文件的读取请求的情况下,若判定目标文件为只读属性,则说明其他客户端通常不具有对目标文件的修改权限,该目标文件一般也不会处于被其他客户端修改的状态。因此,第一客户端对目标文件的读取过程,较大可能不会与其他客户端的权限产生冲突。
可见,目标文件的目标属性信息为只读属性时,且第一客户端请求读取该目标文件时,一般不会产生权限冲突的情况,此时相对于图10所示的读取文件的过程,本示例可以简化MDS权限判断以及对第一客户端的授权过程,进而有效提升只读文件的访问速度。
此外,通过针对一些文件设置只读属性,可以有效避免一些重要文件被修改甚至删除的情况。
在一个实施方式中,上述获取目标文件的目标属性信息,可以具体包括:
确定目标文件所归属的第二目标目录;
获取第二目标目录的目标属性信息;
将第二目标目录的目标属性信息确定为目标文件对应的目标属性信息。
本实施方式中,可以确定目标文件所归属的第二目标目录,获取第二目标目录的目标属性信息,将第二目标目录的目标属性信息确定为目标文件对应的目标属性信息。本实施例可以通过目录的形式,对一个或者多个文件的目标属性信息进行设定,在一定程度上能够较少因目标属性信息而产生的元数据的数据量。此外,如上文所示的,文件的元数据通常可以以目录的形式进行记录,将第二目标目录与目标属性信息进行关联设置,也可以降低目标属性信息的设置难度。
如图10所示,在一个示例性实施例中,接收第一客户端发送的读取请求之后,信息处理方法还可以包括:
步骤1001,分析读取请求对应的目标锁类型;
相应地,上述步骤903,在目标属性信息指示为只读属性的情况下,向第一客户端发送目标元数据,包括:
步骤1002,在目标属性信息指示为只读属性情况下,停止分析读取请求对应的目标锁类型,向第一客户端发送目标元数据。
结合图8所示的流程图,一般情况下,第一客户端请求对目标文件进行读或写时,MDS均需要判断目标文件对应的inode是否授权了其余客户端的读权限或写权限,在一些情况下,还需要向该inode的各级父目录加锁防止并发的修改。换而言之,在接收到第一客户端的访问请求(例如读取请求或者修改请求等)后,MDS往往需要分析该访问请求对相应目录所需的锁类型,比如,需要独占锁还是共享锁等。
而本实施例中,在响应读取请求时,服务器同样可以执行分析读取请求对应的目标锁类型的步骤,即分析读取请求对目标目录所需的锁类型的,但与以上过程的区别在于,本实施例可以在目标属性信息指示为只读属性情况下,停止分析读取请求对应的目标锁类型,向第一客户端发送目标元数据。从而可以在提高客户端对只读属性的目标文件的读取效率的基础上,避免对现有的Ceph文件访问方式进行较大的改动,节省开发工作量。
如图11所示,在一个示例性实施例中,上述步骤1001,分析读取请求对应的目标锁类型之后,信息处理方法还包括:
步骤1101,在目标属性信息指示不为只读属性情况下,获取第二客户端对目标文件的第一权限;
步骤1102,在第一权限与目标锁类型冲突的情况下,回收第二客户端对目标文件的第一权限,并为第一客户端分配第二权限,向第一客户端发送目标元数据,其中,第二权限用于授权第一客户端根据目标元数据访问目标文件。
本实施例中,在目标属性信息指示不为只读属性情况下,可以获取第二客户端对目标文件的第一权限,在第一权限与目标锁类型存在冲突的情况下,回收第二客户端对目标文件的第一权限,并为第一客户端分配第二权限,向第一客户端发送目标元数据,以使得第一客户端能够访问目标文件。本实施例可以在目标文件不为只读属性情况下,仍然保证第一客户端对目标文件的正常访问。
在步骤1101中,第二客户端可以是区别于第一客户端的客户端。第一权限可以是第二客户端对目标文件的访问权限,例如,第一权限可以表征第二客户端对目标文件具有写权限(write caps)。
在步骤1102中,如果第一客户端请求读取上述的目标文件,此时,服务器可能需要对目标文件(或其归属的目录)进行加锁,比如,需要针对目标文件加上独占锁(对应目标锁类型);此时,独占锁明显与第二客户端所持有的写权限存在冲突。
在目标锁类型与第二客户端的第一权限存在冲突的情况下,服务器可以收回第二客户端的写权限;同时,还可以向第一客户端分配对目标文件的第二权限,例如与读取请求匹配的读权限。此外,服务器还可以向第一客户端发送目标元数据。
如此,第一客户端可以基于第二权限,根据目标元数据访问RADOS中的目标文件。
结合以上描述可以,本实施例可以有效处理第一客户端的读取请求所需锁与第二客户端对目标文件的权限的冲突,保证目标文件的正常访问过程。
在一个实施方式中,服务器回收第二客户端对目标文件的第一权限,并为第一客户端分配第二权限的过程,可以具体包括:
在第一权限与目标锁类型冲突,且第二客户端处于对目标文件进行修改的状态的情况下,服务器向第二客户端发送第二请求,第二请求用于回收第二客户端对目标文件的第一权限;
在接收到第二客户端发送的通知消息的情况下,回收第二客户端对目标文件的第一权限,并为第一客户端分配第二权限;第二客户端发送的通知消息可以指示第二客户端已将修改后的目标文件进行存储,并结束了对目标文件的使用。
该实施方式中,在第二客户端的第一权限与第一客户端的目标锁类型冲突的情况下,服务器可以通过向第二客户端发送第二请求,以请求第二客户端存储修改后的目标文件;并根据第二客户端发送的用于指示存储完毕的通知消息的情况下,回收第一权限,并为第一客户端分配第二权限,从而可以有效保证多客户端数据缓存一致性。
结合Ceph的应用场景,第二客户端可能对目标文件进行了修改;相应地,当MDS请求回收第二客户端的第一权限后,第二客户端通常需要对修改后的目标文件进行保存。例如,第二客户端通过下刷的方式存储至RADOS中。修改后的目标文件保存完毕后,第二客户端释放第一权限,MDS为第一客户端分配第二权限,从而保证第一客户端能够正常读取修改后的目标文件。
参见图12,图12为上述信息处理方法在一个具体应用例中的实施流程图,具体包括:
步骤1201,设置文件dir1只读,setfattr-n ceph.file.read_only dir1 1;
这里的文件dir1可以是对应上述的目标文件。
其中,setfattr可以是指设置文件拓展属性,read_only可以对应上述的目标属性信息,紧接着dir1之后的数值1表示为只读属性。以上函数可以理解为将文件dir1的目标属性信息设置为只读属性。
步骤1202,客户端A请求dir1/file1元数据;
本步骤相当于第一客户端发送请求访问目标文件的请求,该请求发送至MDS,在一定程度上可以认为请求获取file1的元数据。
步骤1203,MDS在分析该操作所需的file1及其父目录所需锁时,判断出dir1是只读目录,则可直接返回file1的元数据给客户端A,不再继续分析请求所需锁,无需进行加锁及分配权限的操作;
步骤1204,客户端A根据file1的元数据直接与后端RADOS交互读取数据。
可见,以上步骤中,简化了对文件dir1的授权与加锁逻辑;从而有效减少了第一客户端读取文件dir1的耗时,提高了客户端A对文件dir1的访问效率。
图13是根据一示例性实施例示出的一种数据迁移装置的框图。参照图13,该数据迁移装置1300,包括:
第一接收模块1301,被配置为执行接收迁移指令,迁移指令包括目标服务器和待迁移的第一目标目录;
第一获取模块1302,被配置为执行获取第一目标目录的目标属性信息;
第一传输模块1303,被配置为执行在目标属性信息指示为只读属性的情况下,将第一目标目录传输至目标服务器。
本实施例中,数据迁移装置在接收包括有目标服务器和待迁移的第一目标目录的迁移指令的情况下,获取第一目标目录的目标属性信息,在目标属性信息指示为只读属性的情况下,将第一目标目录传输至目标服务器。本实施例在待迁移的第一目标目录的目标属性信息为只读属性的情况下,将第一目标目录传输至目标服务器,从而可以减少因目录锁定与解锁带来的时间与计算资源的消耗,提高数据迁移效率。
在本公开一些实施例中,数据迁移装置1300还可以包括:
第二获取模块,被配置为执行将第一目标目录传输至目标服务器之前,获取第一元数据,第一元数据包括第一目标目录至对应的根目录的目录路径信息;
建立模块,被配置为执行将第一元数据传输至目标服务器,第一元数据用于目标服务器建立对第一目标目录的缓存路径。
在本公开一些实施例中,第一传输模块1303,可以包括:
确定单元,被配置为执行在目标属性信息指示为只读属性的情况下,确定不对第一目标目录进行冻结;
传输单元,被配置为执行在接收到目标服务器发送的第一确认信息的情况下,将未冻结的第一目标目录传输至目标服务器,第一确认信息用于指示目标服务器已建立对第一目标目录的缓存路径。
在本公开一些实施例中,数据迁移装置1300还可以包括:
第一修改模块,被配置为执行在接收到目标服务器发送的第一确认信息的情况下,将第一目标目录的状态修改为第一状态,第一状态用于指示第一目标目录处于从权威服务器迁移至目标服务器的过程中。
在本公开一些实施例中,数据迁移装置1300还可以包括:
第三获取模块,被配置为执行将第一目标目录传输至目标服务器之后,获取归属第一目标目录的目标子目录与目标子文件;
第二传输模块,被配置为执行将目标子目录与目标子文件传输至目标服务器。
在本公开一些实施例中,第二传输模块,具体被配置为执行:
在接收到目标服务器发送的第二确认信息的情况下,将目标子目录与目标子文件传输至目标服务器;其中,第二确认信息用于指示第一目标目录已存储至目标服务器的缓存。
在本公开一些实施例中,数据迁移装置1300还可以包括:
第二修改模块,被配置为执行在接收到目标服务器发送的第三确认信息的情况下,将第一目标目录的状态修改为第二状态;其中,第三确认信息用于指示目标子目录与目标子文件已存储至目标服务器的缓存,第二状态用于指示第一目标目录的权威服务器为目标服务器。
图14是根据一示例性实施例示出的一种信息处理装置框图。参照图16,该信息处理装置1400包括:
第二接收模块1401,被配置为执行接收第一客户端发送的读取请求,读取请求包括目标文件;
第四获取模块1402,被配置为执行响应于读取请求,获取目标文件的目标属性信息;
发送模块1403,被配置为执行在目标属性信息指示为只读属性的情况下,向第一客户端发送目标元数据,目标元数据包括目标文件的元数据。
本公开实施例中,信息处理装置在接收到第一客户端发送的包括目标文件的读取请求的情况下,可以获取目标文件的目标属性信息,并在目标属性信息指示为只读属性的情况下,向第一客户端发送目标文件的目标元数据。本公开实施例可以在目标文件的目标属性信息指示为只读属性时,直接将目标元数据发送至第一客户端,以满足第一客户端对目标文件的读取需求,从而有效提高了第一客户端对目标文件的读取效率。
在本公开一些实施例中,该信息处理装置1400还可以包括:
分析模块,被配置为执行接收第一客户端发送的读取请求之后,分析读取请求对应的目标锁类型;
相应地,发送模块1403,具体被配置为执行在目标属性信息指示为只读属性情况下,停止分析读取请求对应的目标锁类型,向第一客户端发送目标元数据。
在本公开一些实施例中,该信息处理装置1600还可以包括:
第五获取模块,被配置为执行在目标属性信息指示不为只读属性情况下,获取第二客户端对目标文件的第一权限;
回收分配发送模块,被配置为执行在第一权限与目标锁类型冲突的情况下,回收第二客户端对目标文件的第一权限,并为第一客户端分配第二权限,向第一客户端发送目标元数据,其中,第二权限用于授权第一客户端根据目标元数据访问目标文件。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图15是根据一示例性实施例示出的一种服务器的框图。参照图15,本公开实施例还提供了一种服务器,包括处理器1510、通信接口1520、存储器1530和通信总线1540,其中,处理器1510、通信接口1520和存储器1530通过通信总线1540完成相互间的通信。
该存储器1530,用于存放处理器1510可执行的指令。
该处理器1510,用于执行存储器1530上所存放的指令时,实现如下步骤:
第一服务器在接收到迁移指令的情况下,获取第一目标目录的目标属性信息,其中,迁移指令用于将第一目标元数据从第一服务器迁移至第二服务器,第一目标元数据为第一目标目录关联的元数据;第一服务器在检测到目标属性信息指示为只读属性的情况下,将第一目标元数据迁移至第二服务器。
或者,
接收第一客户端发送的读取请求,读取请求用于读取目标文件;响应于读取请求,获取目标文件的目标属性信息;在目标属性信息指示为只读属性的情况下,向第一客户端发送目标元数据。
可见,应用本公开实施例,可以通过获取目标文件或目标目录的目标属性信息,在目标属性信息指示为只读属性的情况下,可以提高目标文件的访问效率或者提高目标目录的迁移效率。
图16是根据一示例性实施例示出的用于数据处理的设备的框图。例如,该设备1600可以被提供为一服务器。参照图16,设备1600包括处理组件1622,其进一步包括一个或多个处理器,以及由存储器1632所代表的存储器资源,用于存储可由处理组件1622的执行的指令,例如应用程序。存储器1632中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1622被配置为执行指令,以执行上述任一实施例的信息处理方法或数据迁移方法。
该设备1600还可以包括一个电源组件1626被配置为执行设备1600的电源管理,一个有线或无线网络接口1650被配置为将设备1600连接到网络,和一个输入输出(I/O)接口1658。设备1600可以操作基于存储在存储器1632的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在本公开一些实施例中,还提供了一种存储介质,当该存储介质中的指令由服务器的处理器执行时,使得服务器能够执行上述任一实施例所示的信息处理方法或数据迁移方法。
可选地,该存储介质可以是非临时性计算机可读存储介质,示例性的,非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在本公开一些实施例中,还提供了一种计算机程序产品,当计算机程序产品中的指令由服务器的处理器执行时,使得服务器能够执行上述任一实施例所示的信息处理方法或数据迁移方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种数据迁移方法,其特征在于,包括:
接收迁移指令,所述迁移指令包括目标服务器和待迁移的第一目标目录;
获取所述第一目标目录的目标属性信息;
在所述目标属性信息指示为只读属性的情况下,将所述第一目标目录传输至所述目标服务器。
2.根据权利要求1所述的方法,其特征在于,所述将所述第一目标目录传输至所述目标服务器之前,所述方法还包括:
获取第一元数据,所述第一元数据包括所述第一目标目录至对应的根目录的目录路径信息;
将所述第一元数据传输至所述目标服务器,所述第一元数据用于所述目标服务器建立对所述第一目标目录的缓存路径。
3.根据权利要求2所述的方法,其特征在于,所述在所述目标属性信息指示为只读属性的情况下,将所述第一目标目录传输至所述目标服务器,包括:
在所述目标属性信息指示为只读属性的情况下,确定不对所述第一目标目录进行冻结;
在接收到所述目标服务器发送的第一确认信息的情况下,将未冻结的所述第一目标目录传输至所述目标服务器,所述第一确认信息用于指示所述目标服务器已建立对所述第一目标目录的缓存路径。
4.一种信息处理方法,其特征在于,所述方法包括:
接收第一客户端发送的读取请求,所述读取请求包括目标文件;
响应于所述读取请求,获取所述目标文件的目标属性信息;
在所述目标属性信息指示为只读属性的情况下,向所述第一客户端发送目标元数据,所述目标元数据包括所述目标文件的元数据。
5.根据权利要求4所述的方法,其特征在于,所述接收第一客户端发送的读取请求之后,所述方法还包括:
分析所述读取请求对应的目标锁类型;
所述在所述目标属性信息指示为只读属性的情况下,向所述第一客户端发送目标元数据,包括:
在所述目标属性信息指示为只读属性情况下,停止分析所述读取请求对应的目标锁类型,向所述第一客户端发送所述目标元数据。
6.一种数据迁移装置,其特征在于,包括:
第一接收模块,被配置为执行接收迁移指令,所述迁移指令包括目标服务器和待迁移的第一目标目录;
第一获取模块,被配置为执行获取所述第一目标目录的目标属性信息;
第一传输模块,被配置为执行在所述目标属性信息指示为只读属性的情况下,将所述第一目标目录传输至所述目标服务器。
7.一种信息处理装置,其特征在于,所述装置包括:
第二接收模块,被配置为执行接收第一客户端发送的读取请求,所述读取请求包括目标文件;
第四获取模块,被配置为执行响应于所述读取请求,获取所述目标文件的目标属性信息;
发送模块,被配置为执行在所述目标属性信息指示为只读属性的情况下,向所述第一客户端发送目标元数据,所述目标元数据包括所述目标文件的元数据。
8.一种服务器,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至3中任一项所述的数据迁移方法,或者实现如权利要求4至5中任一项所述的信息处理方法。
9.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如权利要求1至3中任一项所述的数据迁移方法,或者执行如权利要求4至5中任一项所述的信息处理方法。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至3中任一项所述的数据迁移方法,或者执行如权利要求4至5中任一项所述的信息处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110848191.7A CN113608694B (zh) | 2021-07-27 | 2021-07-27 | 数据迁移方法、信息处理方法、装置及服务器与介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110848191.7A CN113608694B (zh) | 2021-07-27 | 2021-07-27 | 数据迁移方法、信息处理方法、装置及服务器与介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113608694A true CN113608694A (zh) | 2021-11-05 |
CN113608694B CN113608694B (zh) | 2024-03-19 |
Family
ID=78305531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110848191.7A Active CN113608694B (zh) | 2021-07-27 | 2021-07-27 | 数据迁移方法、信息处理方法、装置及服务器与介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113608694B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117591495A (zh) * | 2024-01-18 | 2024-02-23 | 中核武汉核电运行技术股份有限公司 | 一种用于核电历史数据迁移的数据存储方法及系统 |
CN117632598A (zh) * | 2024-01-23 | 2024-03-01 | 天津南大通用数据技术股份有限公司 | 一种GBase8a数据库在线备份方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110184996A1 (en) * | 2010-01-27 | 2011-07-28 | Sun Microsystems, Inc. | Method and system for shadow migration |
CN103902660A (zh) * | 2014-03-04 | 2014-07-02 | 中国科学院计算技术研究所 | 机群文件系统中通过readdir++预取文件布局的系统及其方法 |
CN104283941A (zh) * | 2014-09-16 | 2015-01-14 | 深圳市同洲电子股份有限公司 | 一种数据访问方法、装置及系统 |
US20150120925A1 (en) * | 2013-10-30 | 2015-04-30 | Futurewei Technologies, Inc. | Lock elevation in a distributed file storage system |
CN104933144A (zh) * | 2015-06-19 | 2015-09-23 | 中国科学院计算技术研究所 | 一种并行网络文件系统中保证数据有效性的系统及其方法 |
CN107483571A (zh) * | 2017-08-08 | 2017-12-15 | 柏域信息科技(上海)有限公司 | 一种动态云存储方法及系统 |
CN110008174A (zh) * | 2019-04-11 | 2019-07-12 | 苏州浪潮智能科技有限公司 | 一种目录导出方法、系统及相关装置 |
US20190332684A1 (en) * | 2018-04-25 | 2019-10-31 | International Business Machines Corporation | Optimized Network File System Client for Read-Only Exports/Mounts |
CN111416753A (zh) * | 2020-03-11 | 2020-07-14 | 上海爱数信息技术股份有限公司 | 一种两节点Ceph集群的高可用方法 |
-
2021
- 2021-07-27 CN CN202110848191.7A patent/CN113608694B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110184996A1 (en) * | 2010-01-27 | 2011-07-28 | Sun Microsystems, Inc. | Method and system for shadow migration |
US20150120925A1 (en) * | 2013-10-30 | 2015-04-30 | Futurewei Technologies, Inc. | Lock elevation in a distributed file storage system |
CN103902660A (zh) * | 2014-03-04 | 2014-07-02 | 中国科学院计算技术研究所 | 机群文件系统中通过readdir++预取文件布局的系统及其方法 |
CN104283941A (zh) * | 2014-09-16 | 2015-01-14 | 深圳市同洲电子股份有限公司 | 一种数据访问方法、装置及系统 |
CN104933144A (zh) * | 2015-06-19 | 2015-09-23 | 中国科学院计算技术研究所 | 一种并行网络文件系统中保证数据有效性的系统及其方法 |
CN107483571A (zh) * | 2017-08-08 | 2017-12-15 | 柏域信息科技(上海)有限公司 | 一种动态云存储方法及系统 |
US20190332684A1 (en) * | 2018-04-25 | 2019-10-31 | International Business Machines Corporation | Optimized Network File System Client for Read-Only Exports/Mounts |
CN110008174A (zh) * | 2019-04-11 | 2019-07-12 | 苏州浪潮智能科技有限公司 | 一种目录导出方法、系统及相关装置 |
CN111416753A (zh) * | 2020-03-11 | 2020-07-14 | 上海爱数信息技术股份有限公司 | 一种两节点Ceph集群的高可用方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117591495A (zh) * | 2024-01-18 | 2024-02-23 | 中核武汉核电运行技术股份有限公司 | 一种用于核电历史数据迁移的数据存储方法及系统 |
CN117591495B (zh) * | 2024-01-18 | 2024-05-03 | 中核武汉核电运行技术股份有限公司 | 一种用于核电历史数据迁移的数据存储方法及系统 |
CN117632598A (zh) * | 2024-01-23 | 2024-03-01 | 天津南大通用数据技术股份有限公司 | 一种GBase8a数据库在线备份方法 |
CN117632598B (zh) * | 2024-01-23 | 2024-04-09 | 天津南大通用数据技术股份有限公司 | 一种GBase8a数据库在线备份方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113608694B (zh) | 2024-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10789217B2 (en) | Hierarchical namespace with strong consistency and horizontal scalability | |
CN106537881B (zh) | 基于存根追踪允许同步访问云存储系统的方法及计算设备 | |
CN109101341B (zh) | 分布式锁的分配方法及设备 | |
US8566299B2 (en) | Method for managing lock resources in a distributed storage system | |
CN103392167B (zh) | 分布式存储系统的缓存方法、节点 | |
US7499905B2 (en) | Method and apparatus for accessing information based on distributed file system (DFS) paths | |
US7577960B2 (en) | System and method for managing cached objects using notifications bonds | |
US8935560B2 (en) | System and method of file locking in a network file system federated namespace | |
CN113608694B (zh) | 数据迁移方法、信息处理方法、装置及服务器与介质 | |
US20210216523A1 (en) | Data Storage Method, Metadata Server, and Client | |
WO2016095149A1 (zh) | 一种数据压缩存储方法、装置,及分布式文件系统 | |
US8380806B2 (en) | System and method for absolute path discovery by a storage virtualization system | |
US10545667B1 (en) | Dynamic data partitioning for stateless request routing | |
CN114003562B (zh) | 一种目录遍历方法、装置、设备及可读存储介质 | |
CN113746641B (zh) | 一种基于分布式存储的odx协议处理方法 | |
US20110208761A1 (en) | Coordinating content from multiple data sources | |
US20170192997A1 (en) | System and method of removing unused regions of a data file | |
JP4247975B2 (ja) | データ管理方法、データ管理システム、およびそのためのプログラムならびに記録媒体 | |
CN110347656B (zh) | 文件存储系统中请求的管理方法和装置 | |
US7962600B2 (en) | WAFS disconnected-mode read-write access | |
CN113377714A (zh) | 基于分布式存储系统的目标器重命名方法及装置 | |
CN115934743B (zh) | 一种文件锁管理方法、系统、设备及计算机可读存储介质 | |
CN113254415B (zh) | 一种分布式文件系统读请求处理方法及装置 | |
CN114422538B (zh) | 多云存储系统、多云数据读写方法及电子设备 | |
CN116719482B (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 |