由kevinli 更新于 2016-08-26 22:38
对于单个glusterfs系统,我们可以在命令行直接进行操作,但是当需要对多个glusterfs集群进行管理的时候,单纯依靠命令行已经变得效率低下甚至有些操作无法完成,而且在需要通过应用程序对glusterfs进行管理的时候命令行已经无法满足需求。因此我们计划将glusterfs系统的功能封装成可编程API,使得用户可以通过此API编写应用程序实现多个glusterfs集群的管理。
在实际应用中我们可能有以下需求:
1. 单个GFS集群的:
1)指定目录的删除(在线服务器上数据查询使用完后需要删除从而腾出空间)
2)指定目录下子目录和文件信息查看()
3)读取和更改指定目录的读写权限(数据迁移到在线服务器后需要具有读写权限,才能被Docker挂载和使用)
4)给出目录名称,判断该目录在集群中是否存在(在启动挂载数据时,在浏览器中指定数据名称后需要先判断该数据在集群中是否存在)
2. 多个GFS集群之间的:
1)将A集群下的指定目录迁移到B集群的指定目录下(将归档数据集群中的冷数据迁移到提供在线服务的热数据,以进行数据的挂载和查询分析等)
2)集群间数据传输进度信息(在归档数据集群与在线服务集群间进行数据迁移时需要提供迁移进度信息)
为此,我们对glusterfs可编程API的库函数做出以下设计:
/**
初始化glusterfs系统,包括检查glusterfs服务是否开启、各节点是否可用
返回值:初始化成功 true
初始化失败 false
*/
boolean init()
//增加brick
boolean addBrick(String dirName)
//删除brick(首先判断dirName是否为一个brick)
boolean deleteBrick(String dirName)
//替换brick(首先判断dirName是否为一个brick)
boolean replaceBrick(String dirName)
//启动volume
boolean startVolume(Volume v)
//暂停volume
boolean stopVolume(Volume v)
//删除volume
boolean deleteVol(Volume v)
//新建volume
Volume createVol(String Volname,String typeName)
/**
系统负载均衡
@v:volume卷
返回值:均衡完成 true
均衡未完成 false
*/
boolean balance(Volume v)
/**
移动某一目录或文件至另一集群并添加文件校验
@dir1:需要移动的数据的地址
@dir2:移动的目的地址
返回值:移动完成并通过校验 true
移动未完成或未通过完整性校验 false
*/
boolean move(String dir1,String dir2)
/**
复制某一目录或文件至另一集群并添加文件校验
@dir1:需要复制的数据的地址
@dir2: 目的地址
返回值:复制完成并通过校验 true
复制未完成或未通过完整性校验 false
*/
boolean copy(String dir1,String dir2)
//进度显示(在数据移动相关接口中调用此方法)
void progressBar()
/**
删除目录或文件
@dir:需要删除的目录或文件路径
@flag:0 删除指定目录
1 删除指定文件
返回值:删除成功 true
删除失败 false
*/
boolean deleteFile(String dir,int flag)
/**
查询指定目录的信息
@dir:需要查询的目录的路径
@flag:0 查询指定目录下的子目录信息
1 查询指定目录下所有文件(包括二级目录下)的文件信息。
*/
void disInfo(String dir,int flag)
/**
浏览指定文件的信息
@dir:需要浏览的文件的路径
@num:指定浏览内容
0 浏览全部
-int 后int行
+int 前int行
执行结果:输出指定的浏览内容
*/
void disFile(String,int num)
/**
查询指定目录或文件的权限
@dirName:需要查询权限的目录
查询成功 输出权限信息
查询失败 输出错误提示信息
*/
void disMod(String dirName)
/**
更改指定目录的权限
@dirName:需要更改权限的目录
@mode: 需要设置的权限
返回值:更改成功 true
更改失败 false
*/
boolean chMod(String dirName,int mode)
/**
给出目录名称,判断该目录在集群中是否存在
@dirName:需要查询的目录
返回值:目录存在 true
目录不存在 false
*/
boolean isExist(String dirName)
由于最后APi的结构和形式尚未确定,因此主要从保证API功能完整性出发进行设计,对于函数名、函数错误码等的设计在进一步完善中。
对于单个glusterfs系统,我们可以在命令行直接进行操作,但是当需要对多个glusterfs集群进行管理的时候,单纯依靠命令行已经变得效率低下甚至有些操作无法完成,而且在需要通过应用程序对glusterfs进行管理的时候命令行已经无法满足需求。因此我们计划将glusterfs系统的功能封装成可编程API,使得用户可以通过此API编写应用程序实现多个glusterfs集群的管理。
在实际应用中我们可能有以下需求:
1. 单个GFS集群的:
1)指定目录的删除(在线服务器上数据查询使用完后需要删除从而腾出空间)
2)指定目录下子目录和文件信息查看()
3)读取和更改指定目录的读写权限(数据迁移到在线服务器后需要具有读写权限,才能被Docker挂载和使用)
4)给出目录名称,判断该目录在集群中是否存在(在启动挂载数据时,在浏览器中指定数据名称后需要先判断该数据在集群中是否存在)
2. 多个GFS集群之间的:
1)将A集群下的指定目录迁移到B集群的指定目录下(将归档数据集群中的冷数据迁移到提供在线服务的热数据,以进行数据的挂载和查询分析等)
2)集群间数据传输进度信息(在归档数据集群与在线服务集群间进行数据迁移时需要提供迁移进度信息)
为此,我们对glusterfs可编程API的库函数做出以下设计:
/**
初始化glusterfs系统,包括检查glusterfs服务是否开启、各节点是否可用
返回值:初始化成功 true
初始化失败 false
*/
boolean init()
//增加brick
boolean addBrick(String dirName)
//删除brick(首先判断dirName是否为一个brick)
boolean deleteBrick(String dirName)
//替换brick(首先判断dirName是否为一个brick)
boolean replaceBrick(String dirName)
//启动volume
boolean startVolume(Volume v)
//暂停volume
boolean stopVolume(Volume v)
//删除volume
boolean deleteVol(Volume v)
//新建volume
Volume createVol(String Volname,String typeName)
/**
系统负载均衡
@v:volume卷
返回值:均衡完成 true
均衡未完成 false
*/
boolean balance(Volume v)
/**
移动某一目录或文件至另一集群并添加文件校验
@dir1:需要移动的数据的地址
@dir2:移动的目的地址
返回值:移动完成并通过校验 true
移动未完成或未通过完整性校验 false
*/
boolean move(String dir1,String dir2)
/**
复制某一目录或文件至另一集群并添加文件校验
@dir1:需要复制的数据的地址
@dir2: 目的地址
返回值:复制完成并通过校验 true
复制未完成或未通过完整性校验 false
*/
boolean copy(String dir1,String dir2)
//进度显示(在数据移动相关接口中调用此方法)
void progressBar()
/**
删除目录或文件
@dir:需要删除的目录或文件路径
@flag:0 删除指定目录
1 删除指定文件
返回值:删除成功 true
删除失败 false
*/
boolean deleteFile(String dir,int flag)
/**
查询指定目录的信息
@dir:需要查询的目录的路径
@flag:0 查询指定目录下的子目录信息
1 查询指定目录下所有文件(包括二级目录下)的文件信息。
*/
void disInfo(String dir,int flag)
/**
浏览指定文件的信息
@dir:需要浏览的文件的路径
@num:指定浏览内容
0 浏览全部
-int 后int行
+int 前int行
执行结果:输出指定的浏览内容
*/
void disFile(String,int num)
/**
查询指定目录或文件的权限
@dirName:需要查询权限的目录
查询成功 输出权限信息
查询失败 输出错误提示信息
*/
void disMod(String dirName)
/**
更改指定目录的权限
@dirName:需要更改权限的目录
@mode: 需要设置的权限
返回值:更改成功 true
更改失败 false
*/
boolean chMod(String dirName,int mode)
/**
给出目录名称,判断该目录在集群中是否存在
@dirName:需要查询的目录
返回值:目录存在 true
目录不存在 false
*/
boolean isExist(String dirName)
由于最后APi的结构和形式尚未确定,因此主要从保证API功能完整性出发进行设计,对于函数名、函数错误码等的设计在进一步完善中。