一种高速对象并行存储系统目录复制方法

文档序号:6435512阅读:275来源:国知局
专利名称:一种高速对象并行存储系统目录复制方法
技术领域
本发明涉及对象并行存储系统的性能优化方法,尤其是高速目录复制方法。
背景技术
并行存储系统是大规模并行计算机系统中的重要组成部分,对象并行存储系统是一种并行存储结构。如图1所示,对象并行存储系统由一个元数据服务器(简称MDS)、多个对象存储服务器(简称0ST)和多个客户结点(简称CN)通过网络互连构成。元数据服务器和多个对象存储服务器为客户结点提供数据读写、数据存储等文件访问服务。元数据服务器为客户结点提供元数据服务,是对象存储系统所特有的。元数据描述每个文件的所有者、创建时间、修改时间、文件大小以及文件在对象存储系统上的分布等信息。对象存储服务器负责保存文件的具体数据,并在元数据服务器的管理下向客户结点提供文件访问服务。客户结点的文件访问请求首先提交给元数据服务器,获取文件分布信息,然后根据分布信息向相关的对象存储服务器提交访问请求,完成数据读写过程。对象存储系统充分利用高带宽网络以及存储访问的并发性,为并行应用提供较高的数据访问带宽,已广泛应用于世界超级计算机排名前十的计算机系统中。目录复制是并行存储系统为客户结点提供的基本功能之一,客户结点将文件目录及目录下的所有文件从并行存储系统的一个位置复制到另外一个位置。目前通常的对象并行存储系统目录复制方法是集中式方法,客户结点管理所有的复制过程。用户在客户结点提交操作系统的标准目录复制命令cp,客户结点从源对象存储服务器逐个读取目录下的文件到本地内存,然后将文件写入目标对象存储服务器。所有的复制过程都经过客户结点,客户结点成为性能瓶颈。没有其它公开文献涉及对象并行存储文件系统的目录复制方法。当前的对象并行存储系统的存储容量达数百T以上,文件的数量达数百万以上, 同时在线的文件系统客户端达数千。集中目录复制方法的时间和通信开销很大,新型的高速目录复制方法是本领域技术人员极为关注的技术问题。

发明内容
本发明要解决的技术问题在于针对对象并行存储系统的目录复制集中在客户结点实施,串行化过程导致时间开销大,数据复制过程需经过客户结点中转导致客户结点成为通信瓶颈等问题,提出并行化的高速目录复制方法。为了解决上述技术问题,本发明的技术方案为构建目录复制系统,将目录复制任务分解为多个文件的复制任务,然后将文件复制任务分发到多个对象存储服务器并行执行,文件直接从源对象存储服务器复制到目的对象存储服务器,无需客户结点中转。具体技术方案为第一步,构建目录复制系统,目录复制系统是部署在对象存储系统上的目录复制软件。目录复制系统由目录复制任务管理模块、负载分配模块、文件复制执行模块组成,其中目录复制任务管理模块和负载分配模块部署在客户结点上,文件复制执行模块部署在所有的对象存储服务器上。目录复制任务管理模块负责接收目录复制命令,递归解析目录复制命令为普通目录复制命令,创建目标目录,向负载分配模块下达普通目录复制命令。负载分配模块负责接收普通目录复制命令,根据普通目录复制命令生成文件复制命令,检索源文件所在的对象存储服务器,将文件复制命令下达给源文件所在的对象存储服务器上的文件复制执行模块。文件复制执行模块接收文件复制命令,确定目标文件所在的对象存储服务器,执行文件复制操作。目录复制命令为操作系统提供的基本文件操作命令,将源目录下的所有文件和子目录均复制到目标目录,命令格式为CP srcdirA destdirB。一个文件目录包括文件和子目录,子目录下也可以包含文件和下级子目录。普通目录复制命令是本发明定义的特有文件操作命令,仅将源目录A下的所有文件复制到目标目录B,不复制源目录A 下的子目录,命令格式为localcp srcdirA srcdirB。 srcdirA禾口 srcdirB均为绝对路径。 绝对路径指文件系统中访问目录或者文件的完整路径。第二步,目录复制任务管理模块部署在客户结点,接收用户提交的目录复制命令 cp srcdirA destdirB。设定输入参数为srcdirA和srcdirB,调用目录复制过程DirCopy 进行目录复制。目录复制过程DirCopy为一个递归调用过程。输入参数为SRCWR和DESTDIR,其中SRCWR为源目录,DESTWR为目标目录。目录复制过程DirCopy的流程如下2. 1、如果目标目录不存在,则创建目标目录DESTDIR。2. 2、向负载分配模块下达普通目录复制命令localcp SRCDIR DESTDIR,,2. 3、读取源目录SRCWR下的所有子目录名,每个子目录名为一个字符串,存入 dirlist队列中。dirlist队列中每个单元为一个子目录名称的字符串。2. 4、如果dirlist队列为空,则停止DirCopy的递归调用,转2. 6步。2. 5、从dirlist队列头开始逐个读取队列中的每个字符串,对每个字符串做以下处理将该字符串赋值给workdir。构造源目录的绝对路径字符串Asrcdir,绝对路径字符串为SRCDIR、目录间隔符号 “/” 以及 workdir 三个字符串的合并,即 Asrcdir = SRCDIR+ “/”+workdir。构造目标目录的绝对路径字符串Adestdir,绝对路径字符串为DESTDIR、目录间隔符号“/”以及workdir三个字符串的合并,即Adestdir = DESTDIR+ “/”+workdir。向元数据服务器MDS检索绝对路径为Adestdir的目标目录是否存在。如果目标目录Adestdir不存在,则向MDS申请创建目标目录Adestdir。递归调用目录复制过程DirCopy (Asrcdir, Adestdir)。2. 6、目录复制过程DirCopy结束。第三步,部署在客户结点上的负载分配模块接收目录复制任务管理模块下达的普通目录复制命令localcp SRCDIR DESTDIR。将普通目录复制命令分解为多个文件复制命令,并向源文件所在的对象存储服务器上的文件复制执行模块下达文件复制命令,执行步骤如下3. 1、读取源目录SI^WR下的所有文件名,每个文件名作为一个字符串,存入 filelist队列中。filerlist队列中每个单元为一个文件名称的字符串。
3. 2、如果filelist队列为空,则转第四步。3. 3、从filelist队列头开始逐个读取队列中的每个字符串,对每个字符串做以下处理将该字符串赋值给workfile。构造源文件的绝对路径字符串Asrcfile,绝对路径为SRCDIR、目录间隔符号“/” 以及 workfile 三个字符串的合并,即 Asrcfile = SRCDIR+ "/"+Workfile0构造目标文件的绝对路径字符串Adestfile,绝对路径为DESTDIR、目录间隔符号 “/” 以及 workfile 三个字符串的合并,即 Adestfile = DESTDIR+ “/”+workfile。向MDS检索绝对路径为Asrcfile的源文件所在的对象存储服务器,记为srcOST。向srcOST上的文件复制执行模块下达文件复制命令filecp Asrcfile Adestfile。第四步,文件复制执行模块接收负载分配模块下达的文件复制命令filecp Asrcfile Adestfile,多个文件复制执行模块并行执行文件复制操作。文件复制操作执行步骤如下4. 1、向MDS申请创建目标文件Adestfile,根据文件属性读取目标文件所在的 destOST。一般的对象并行存储文件系统中,多个文件的创建请求将被MDS轮流分配存储到不同的OST上,所以同一文件的多次重复创建也会分配到不同的OST上。4. 2、如果destOST为文件复制执行模块所在的0ST,则删除destfile,转4. 1步。4. 3、执行文件复制操作,将文件Asrcfile从本地OST复制到destOST。与现有技术相比,采用本发明可达到以下技术效果1.本发明第三步将目录复制任务分布到多个对象存储服务器上并发执行,大幅度减少复制时间;2.本发明第四步将文件直接从源对象存储服务器复制到目的对象存储服务器,无需通过客户结点中转,避免了客户结点成为通信瓶颈;3.本发明第四步在复制过程中确保源文件和目标文件不在同一个对象存储服务器,避免了单点失效。


图1是对象并行存储系统的结构图。图2为目录复制系统的结构图。图3为本发明总体流程图。
具体实施例方式图1是对象并行存储系统的结构图。对象并行存储系统由一个元数据服务器(简称MDS)、多个对象存储服务器(简称0ST)和多个客户结点(简称CN)通过网络互连构成。元数据服务器和多个对象存储服务器为客户结点提供数据读写、数据存储等文件访问服务。图2为目录复制系统的结构图。目录复制系统由目录复制任务管理模块、负载分配模块、文件复制执行模块组成,其中目录复制任务管理模块和负载分配模块部署在客户结点上,文件复制执行模块部署在所有的对象存储服务器上。目录复制任务管理模块解析目录复制命令,向负载分配模块下达普通目录复制命令。负载分配模块解析普通目录复制命令,向文件复制执行模块下达文件复制命令。文件复制执行模块执行文件复制操作。图3为本发明总体流程图。第一步,构建目录复制系统。目录复制系统是部署在对象存储系统上的目录复制软件,由目录复制任务管理模块、负载分配模块、文件复制执行模块组成。目录复制任务管理模块负责接收目录复制命令,递归解析目录复制命令为普通目录复制命令,创建目标目录,向负载分配模块下达普通目录复制命令。负载分配模块负责接收普通目录复制命令,根据普通目录复制命令生成文件复制命令,检索源文件所在的对象存储服务器,将文件复制命令下达给文件复制执行模块。文件复制执行模块接收文件复制命令,确定目标文件所在的对象存储服务器,执行文件复制操作。第二步,目录复制任务管理模块接收目录复制命令,创建目标目录,向负载分配模块下达普通目录复制命令。第三步,复制分配模块接收普通目录复制命令,向文件复制执行模块下达文件复制命令。第四步,文件复制执行模块接收文件复制命令,并行执行文件复制操作。
权利要求
1.一种高速对象并行存储系统目录复制方法,其特征在于包括以下步骤第一步,构建目录复制系统,目录复制系统是部署在对象存储系统上的目录复制软件, 由目录复制任务管理模块、负载分配模块、文件复制执行模块组成;目录复制任务管理模块和负载分配模块部署在客户结点上,文件复制执行模块部署在所有的对象存储服务器上; 目录复制任务管理模块负责接收目录复制命令,递归解析目录复制命令为普通目录复制命令,创建目标目录,向负载分配模块下达普通目录复制命令;负载分配模块负责接收普通目录复制命令,根据普通目录复制命令生成文件复制命令,检索源文件所在的对象存储服务器,将文件复制命令下达给源文件所在的对象存储服务器上的文件复制执行模块;文件复制执行模块接收文件复制命令,确定目标文件所在的对象存储服务器,执行文件复制操作; 目录复制命令为操作系统提供的基本文件操作命令,将源目录下的所有文件和子目录均复制到目标目录,命令格式为cp srcdirA destdirB ;—个文件目录包括文件和子目录,子目录下也可以包含文件和下级子目录;普通目录复制命令是文件操作命令,仅将源目录A下的所有文件复制到目标目录B,不复制源目录A下的子目录,命令格式为localcp srcdirA srcdirB ;srcdirA和srcdirB均为绝对路径,绝对路径指文件系统中访问目录或者文件的完整路径;第二步,目录复制任务管理模块部署在客户结点,接收用户提交的目录复制命令CP srcdirA destdirB,设定输入参数为srcdirA和srcdirB,调用目录复制过程DirCopy进行目录复制;目录复制过程DirCopy为一个递归调用过程,输入参数为SRCDIR和DESTDIR,其中 SRCDIR为源目录,DESTDIR为目标目录,目录复制过程DirCopy的流程如下、2.1、如果目标目录不存在,则创建目标目录DESTDIR ;、2. 2、向负载分配模块下达普通目录复制命令localcp SRCDIR DESTDIR ; 2. 3、读取源目录SRCDIR下的所有子目录名,每个子目录名为一个字符串,存入 dirlist队列中,dirlist队列中每个单元为一个子目录名称的字符串; 2. 4、如果dirlist队列为空,则停止DirCopy的递归调用,转2. 6步; 2. 5、从dirlist队列头开始逐个读取队列中的每个字符串,对每个字符串做以下处理将该字符串赋值给workdir ;构造源目录的绝对路径字符串Asrcdir,绝对路径字符串为SRCDIR、目录间隔符号“/” 以及 workdir 三个字符串的合并,即 Asrcdir = SRCDIR+ "/"+workdir ;构造目标目录的绝对路径字符串Adestdir,绝对路径字符串为DESTDIR、目录间隔符号 “/” 以及 workdir 三个字符串的合并,即 Adestdir = DESTDIR+ "/"+workdir ;向元数据服务器MDS检索绝对路径为Adestdir的目标目录是否存在。如果目标目录 Adestdir不存在,则向MDS申请创建目标目录Adestdir ; 递归调用目录复制过程DirCopy (Asrcdir,Adestdir); 2. 6、目录复制过程DirCopy结束;第三步,部署在客户结点上的负载分配模块接收目录复制任务管理模块下达的普通目录复制命令localcp SRCDIR DESTDIR,将普通目录复制命令分解为多个文件复制命令, 并向源文件所在的对象存储服务器上的文件复制执行模块下达文件复制命令,执行步骤如下.3. 1、读取源目录SRCWR下的所有文件名,每个文件名作为一个字符串,存入filelist 队列中,filerlist队列中每个单元为一个文件名称的字符串; .3. .2、如果filelist队列为空,则转第四步;.3.3、从filelist队列头开始逐个读取队列中的每个字符串,对每个字符串做以下处理将该字符串赋值给workfile ;构造源文件的绝对路径字符串Asrcfile,绝对路径为SRCWR、目录间隔符号“/”以及 workfile 三个字符串的合并,即 Asrcfile = SRCDIR+ “/”+workfile ;构造目标文件的绝对路径字符串Adestfile,绝对路径为DESTDIR、目录间隔符号“/” 以及 workfile 三个字符串的合并,即 Adestfile = DESTDIR+ “/”+workfile ;向MDS检索绝对路径为Asrcfile的源文件所在的对象存储服务器,记为srcOST ; 向srcOST上的文件复制执行模块下达文件复制命令filecp Asrcfile Adestfile ; 第四步,文件复制执行模块接收负载分配模块下达的文件复制命令filecp Asrcfile Adestfile,多个文件复制执行模块并行执行文件复制操作。文件复制操作执行步骤如下.4.1、向MDS申请创建目标文件Adestfile,根据文件属性读取目标文件所在的 destOST ;.4. 2、如果destOST为文件复制执行模块所在的0ST,则删除destfile,转4. 1步; 4. 3、执行文件复制操作,将文件Asrcfile从本地OST复制到destOST。
全文摘要
本发明公开了一种高速对象并行存储系统目录复制方法,目的是解决对象并行存储系统的目录复制集中在客户结点实施,串行化过程导致时间开销大,数据复制过程需经过客户结点中转导致客户结点成为通信瓶颈等问题。技术方案为构建目录复制系统,将目录复制任务分解为多个文件的复制任务,然后将文件复制任务分发到多个对象存储服务器并行执行,文件直接从源对象存储服务器复制到目的对象存储服务器,无需客户结点中转。采用本发明可大幅度减少复制时间,无需通过客户结点中转,避免了客户结点成为通信瓶颈,在复制过程中确保源文件和目标文件不在同一个对象存储服务器,避免了单点失效。
文档编号G06F17/30GK102360382SQ201110310368
公开日2012年2月22日 申请日期2011年10月13日 优先权日2011年10月13日
发明者卢宇彤, 周恩强, 宋飞, 张伟, 张晓明, 田宝华, 肖婧, 陈海涛 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1