本文主要简单讲述一下ceph集群迁移的一个整体步骤。

1. 关机前操作

1.1 确认集群当前状态

确认当前集群状态的是否为HEALTH_OK, 查看并记录osd所在的domain

在monitor节点执行:

$ ceph -s 									#查看ceph集群当前状态
$ ceph osd tree >>/tmp/ceph_osd_tree 		#查看osd所在domain

1.2 为ceph集群设置标志位

在数据以及CrushMap没有发生变化的情况下,Ceph是不会触发数据迁移以及CrushMap的变化的,但是为了安全起见,我们手动设置上标志 位,防止ceph集群在开关机前后过程中有状态变化以及数据的迁移。

在ceph集群monitor节点执行:

$ ceph osd set noout
$ ceph osd set norebalance
$ ceph osd set norecover

1.3 关闭rgw服务

逐台关闭rgw服务:

$ service ceph-radosgw stop

确认下rgw服务状态:

$ service ceph-radosgw status

1.4 关闭osd服务

在存储节点逐个执行:

$ service ceph stop osd

查看下osd状态:

$ service ceph status osd

1.5 关闭mon服务

在monitor节点逐台执行:

$ service ceph stop mon

查看mon服务:

$ service ceph status mon

2. 迁移机器

Ceph集群节点关机 先关闭存储节点,后关闭monitor节点

做机器迁移

ceph集群节点开机

先开启monitor节点,后开启存储节点

3. 开机后操作

3.1 开启mon服务

在monitor节点执行:

逐个开启mon服务:

$ service ceph start mon

查看mon服务状态:

$ service ceph status mon

查看mon是否在集群内:

$ ceph quorum_status

3.2 开启osd服务

逐个开启存储节点上的osd服务(按domain开启)

在存储节点执行:

$ service ceph start osd

查看该节点osd是否成功开启:

$ ceph osd tree

3.3 开启rgw服务

逐台开启rgw服务:

$ service ceph-radosgw start

确认下rgw服务状态:

$ service ceph-radosgw status

3.4 去除ceph标志位

确保所有节点mon和osd启动后,去除ceph集群标志位:

在ceph集群任意节点执行:

$ ceph osd unset noout
$ ceph osd unset norebalance
$ ceph osd unset norecover

去掉标志位后注意检查ceph集群状态是否恢复至HEALTH_OK

$ ceph -s    #检查集群当前状态