15712?1471931897

【功能】 将glusterfs系统功能封装成外部可调用的API 正常


李乾坤添加于 2016-08-26 22:36

对于单个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功能完整性出发进行设计,对于函数名、函数错误码等的设计在进一步完善中。


回复(5)
  • 15712?1471931897
    李乾坤 7年前
    5?1460204756
    尹刚 7年前

    <p> 很好!非常清楚!<img src="http://forge.trustie.net/assets/kindeditor/plugins/emoticons/images/79.gif" border="0" alt="" /><img src="http://forge.trustie.net/assets/kindeditor/plugins/emoticons/images/79.gif" border="0" alt="" /> </p> <p> 注意: </p> <p> 1、可以先考虑实现其中最基本、最简单的api,形成一个最小的可用api实现。然后提供给开发团队使用。 </p> <p> 2、在开发团队使用的过程中,你们再根据他们的反馈修改完善,同时再实现剩余的api。 </p>

    5?1460204756
    尹刚 7年前

    <p> 这个最小api实现能否覆盖一个最小的可用功能流程。 </p> <p> 这也是在创业领域、研究领域使用的最广的方法:MVP(Minimum Viable Product)方法,即“<span>最小化可行产品”方法。</span> </p> <p> <span><br /> </span> </p> <p> <span>祝大家顺利!</span> </p>

    受教!

  • 15712?1471931897
  • 15712?1471931897
    李乾坤 7年前

    描述 已更新。 (查看差别)

0?1470885445
登录后可添加回复
  • 当前状态 新增
  • 选定优先级 正常
  • 指派给 张智雄
  • 里程碑 --
  • 开始日期 2016-08-26
  • 结束日期
  • 预计工时(H) 0.00 小时
  • 完成度 0%
  • 关联Commit

© Copyright 2007~2021 国防科技大学Trustie团队 & IntelliDE 湘ICP备 17009477号

问题和建议
还能输入50个字符 提交

加入QQ群

关注微信APP


×