描述
ceph-deploy是一个简单快捷的部署Ceph集群的工具。相对手动部署,使用该工具可以避开繁琐的配置过程。该工具使用Python脚本语言开发,封装了系统命令和Ceph集群的管理命令,从而使Ceph集群的部署自动化。
ceph-deploy建立了一种分布式的集群管理方式,使用ceph-deploy可以远程的安装Ceph软件包、创建集群、添加MON和OSD等,很多操作可以通过一个管理节点完成,而不需要分别登录到集群的各个节点上进行管理。如图为ceph-deploy管理节点与Ceph集群的关系示意图。

命令概述
ceph-deploy提供的管理命令如下所示,后面章节将详细介绍每个命令的含义和使用方法。
ceph-deploy new [initial-monitor-node(s)] 新建集群
ceph-deploy install [ceph-node] [ceph-node…] 安装Ceph软件包
ceph-deploy mon create-initial 进行初始化,生成秘钥
ceph-deploy osd prepare [ceph-node]:[dir-path] 预处理OSD
ceph-deploy osd activate [ceph-node]:[dir-path] 激活OSD
ceph-deploy osd create [ceph-node]:[dir-path] 预处理并激活OSD
ceph-deploy admin [admin-node][ceph-node…] 拷贝秘钥
ceph-deploy purgedata [ceph-node][ceph-node…] 清理数据
ceph-deploy forgetkeys 清理秘钥
命令详述
新建集群(new)
该命令用于开始部署一个新的Ceph集群,并且生成一个该集群的配置文件和钥匙环。该命令会监测指定的Monitor节点是否可以通过ssh无密码访问,确定所指定Monitor节点的IP地址,生成一个包含一个或者多个Monitor节点的Ceph集群。本质上,该命令会生成一个配置文件(ceph.conf),一个Monitor秘钥和一个日志文件。配置文件中包含集群的fsid,Monitor节点的主机名和IP地址以及其它一些必要的信息,具体示例如下图。

示例:
ceph-deploy new [MON][MON…]
这里[MON]是初始监控节点的主机名,可以通过hostname –s命令获取到。
另外,可以使用一些选项,自定义一些具体的值,例如–no-ssh-copykey, –fsid, –cluster-network and –public-network等,具体可以参考官网,本文不再赘述。
安装软件包(install)
该命令用于在远程节点(管理节点)上向Ceph集群节点安装Ceph软件包。其首先会在管理节点和Ceph集群节点上安装yum-plugin-priorities插件(CentOS?),确保源的优先级。之后,会检测操作系统平台并下载平台兼容的软件包。
另外,该命令有一些额外的选项,可以定义安装过程的处理细节。常用选项具体如下:
–release 用于定义安装最新的Ceph软件包。
–repo-url 定义安装Ceph时的软件包源位置。如果定义该选项,预定义的源将被覆盖。
示例:
ceph-deploy install [HOST][HOST…]
这里,[HOST]是将要安装Ceph软件的主机名。另外,该命令还有一些其它的选项可用,例如–testing, –dev,
–adjust-repos, –no-adjust-repos, –repo, –local-mirror, –repo-url and
–gpg-url等,具体可以参考官网解释。
监控服务(mon)
该命令用于在远程服务器上部署Ceph监控服务(MON)。该命令有若干子命令,通过这些子命令完成具体的部署。
子命令create-initial用于在Ceph配置文件中定义的初始监控节点(mon initial members)上部署监控服务(MON)。该命令会等待所有节点完成部署,并获取MON的状态确认,如果存在问题,则会记录日志。完成状态确认并确认成功后会gatherkeys?。
示例:
ceph-deploy mon create-initial
子命令create用于在某个特定的节点上部署MON服务。如果没有定义具体的主机名称,则会使用Ceph配置文件中的初始监控节点列表中的节点进行部署。其首先会监测平台和Ceph的发行版本是否与部署版本兼容,在确认无误的情况下进行MON服务的部署。
该命令的执行过程中,重点涉及的是秘钥的处理过程,暂时不清楚具体作用及原理。
示例:
ceph-deploy mon create [HOST] [HOST…]
这里,[HOST]是将要部署MON服务的主机名。
子命令add用来向一个已经存在的集群添加MON服务。如果Monitor没有在mon intial member列表中,或者不在monmap中,或者public_addr及public_network key没有定义,则会出现错误。
示例:
ceph-deploy mon add [HOST]
ceph-deploy mon add [HOST] –address [IP]
子命令destroy用于从远处节点上删除一个MON服务。
示例:
ceph-deploy mon destroy [HOST]
收集秘钥(gatherkeys)
为新增的节点收集认证秘钥。其检查并从Monitor节点拉取client.admin, monitor和bootstrap-mds/bootstrap-osd的钥匙圈。当新的monitors/OSDs/MDS添加到集群时,这些钥匙圈将被用到(具体什么原理不清楚)。
示例:
ceph-deploy gatherkeys [HOST] [HOST…]
其中,[HOST]为拉取钥匙圈的源。
磁盘管理(disk)
管理远程主机上的磁盘。其实际使用的是ceph-disk工具包中的子命令来管理磁盘的。
子命令list用来查看磁盘分区列表和OSD信息。
示例:
ceph-deploy disk list [HOST:[DISK]]
这里,[HOST]节点的主机名, [DISK]是磁盘路径及名称。
子命令prepare用来为OSD准备一个文件夹、磁盘或者驱动器。其创建一个GPT分区,并用Ceph类型的UUID进行标记。同时,创建文件系统、标记Ceph可用、将使用整个分区并且添加一个新的分区作为日志盘。
示例:
ceph-deploy disk prepare [HOST:[DISK]]
子命令activate用于激活一个Ceph OSD。其首先将逻辑卷挂在到一个临时的位置,并且分配一个OSD id。最后,重新逻辑卷挂在到/var/lib/ceph/osd/$cluster-$id路径下,并且启动OSD守护进程。
示例:
ceph-deploy disk activate [HOST:[DISK]]
子命令zap用于清除磁盘设备分区列表和内容。其实际使用sgdisk完成分区表的清理工作。这是,sgdisk使用—mbrtogpt来生成一个GPT磁盘。
示例:
ceph-deploy disk zap [HOST:[DISK]]
对象存储设备(osd)
该命令用于管理OSD。需要通过若干子命令实现。
子命令prepare用来为OSD准备一个文件夹、磁盘或者驱动器。该命令首先会做一些检查性的工作,然后调用磁盘相关子命令进行具体的准备工作。
示例:
ceph-deploy osd prepare HOST:DISK[:JOURNAL] [HOST:DISK[:JOURNAL]…]
子命令activate用于激活一个已经准备好的OSD设备。其实际使用的是磁盘管理的相关激活子命令。
示例:
ceph-deploy osd activate HOST:DISK[:JOURNAL] [HOST:DISK[:JOURNAL]…]
子命令create使用prepare和activate子命令创建OSD。
示例:
ceph-deploy osd create HOST:DISK[:JOURNAL] [HOST:DISK[:JOURNAL]…]
子命令list用于显示磁盘列表,OSD等内容,详见用户手册,具体示例如下:
ceph-deploy osd list HOST:DISK[:JOURNAL]
管理(admin)
将配置文件和client.admin秘钥推送到远程主机。其将{cluster}.client.admin.keyring文件从管理节点拷贝到目的节点的/etc/ceph文件夹下面。
示例:
ceph-deploy admin [HOST] [HOST…]
配置管理(config)
该命令可以从远程主机拉取配置文件,或者向远程主机推送配置文件。其使用push子命令将管理节点的配置文件传输到远程主机的/etc/ceph文件夹下面。用pull子命令做相反的事情。
示例:
ceph-deploy push [HOST] [HOST…]
ceph-deploy pull [HOST] [HOST…]
卸载(uninstall)
将远程主机的Ceph软件包卸载。但是,诸如librbd1和lirados2将不会被卸载,由于其会造成qemu-kvm出问题。
示例:
ceph-deploy uninstall [HOST] [HOST…]
清理(purge)
该命令与uninstall类似,但是其不仅会卸载软件包,还好清理远程主机上的数据。
示例:
ceph-deploy purge [HOST] [HOST…]
清理数据(purgedata)
清理远程主机/var/lib/ceph文件夹下面的数据。清理之前会对主机进行检查,确保Ceph软件已经被卸载,否则不会进行数据的清理。
示例:
ceph-deploy purgedata [HOST] [HOST…]
清理秘钥(forgetkeys)
从当前文件夹移除认证秘钥,移除所有秘钥。
示例:
ceph-deploy forgetkeys
软件包(pkg)
用于远程安装或者卸载特定的软件包。示例:
ceph-deploy pkg –install [PKGs] [HOST] [HOST…
ceph-deploy pkg –remove [PKGs] [HOST] [HOST…]
这里[PKGs]是用逗号分开的软件包名称。







