实战01:OSD操做(扩容/缩容/换盘/数据重平衡/数据一致性)

参考链接:<https://ceph.readthedocs.io/en/latest/rados/deployment/ceph-deploy-osd/>;node

1 OSD扩容/缩容

1.1 横向扩容(scale out)

横向扩容:简单的理解,就是增长节点,经过增长节点来达到增长容量的目的shell

一、部署环境,参见《02 Ceph集群规划及部署mimic》,按照全部标注node节点的执行,包括安装环境准备,用户建立,配置源,安装ceph等;网络

二、ceph-deploy osd create --data {data-disk} {node-name} 同步配置文件app

三、添加OSDide

1.2 纵向扩容(scale up)

纵向扩容:经过增长现有节点的硬盘(OSD)来达到增长容量的目的;性能

(1)确认osd容量状况线程

[cephuser@cephmanager01 cephcluster]$ sudo ceph -s
[cephuser@cephmanager01 cephcluster]$ sudo ceph osd tree

实战01:OSD操做(扩容/缩容/换盘/数据重平衡/数据一致性)

(2) 查看磁盘信息和分区信息3d

# node节点(osd)查看,本例在cephnode0一、cephnode0二、cephnode03上须要添加/dev/sdf
[root@cephnode001 ~]# lsblk
[root@cephnode001 ~]# fdisk -l
# manager节点上查看
[cephuser@cephmanager01 cephcluster]$ ceph-deploy disk list cephnode001 cephnode002 cephnode003

实战01:OSD操做(扩容/缩容/换盘/数据重平衡/数据一致性)

若是添加的盘上面有分区,能够经过以下命令清除(分区上的数据也会被清除)rest

ceph-deploy disk zap {osd-server-name} {disk-name}日志

# 清除cephmanager002上的/dev/sdf1和/dev/sdf2分区
# ceph-deploy disk zap cephmanager002 /dev/sdf1 /dev/sdf2

(3)添加OSD

# 添加cephnode001的/dev/sdf
[cephuser@cephmanager01 cephcluster]$ ceph-deploy osd create --data /dev/sdf cephnode001
# 添加cephnode002的/dev/sdf
[cephuser@cephmanager01 cephcluster]$ ceph-deploy osd create --data /dev/sdf cephnode002
# 添加cephnode003的/dev/sdf
[cephuser@cephmanager01 cephcluster]$ ceph-deploy osd create --data /dev/sdf cephnode003

(4)确认添加结果

[cephuser@cephmanager01 ~]$ sudo ceph -s
[cephuser@cephmanager01 ~]$ sudo ceph osd tree

实战01:OSD操做(扩容/缩容/换盘/数据重平衡/数据一致性)

1.3 缩容:删除OSD

​ 删除osd,通常分两种状况,一种状况是服务故障,这个时候重启有故障的osd便可,以下:

[root@cephnode002 ceph]# systemctl restart ceph-osd@5.service

​ 另一种状况是物理坏块,特别是在即将坏的过程当中,对集群性能影响极大,能够经过查看日志和延迟状况来确认,以下.这种状况能够先踢掉故障osd。

[root@cephmanager01 ~]# ceph osd perf

这里以cephnode001上的osd.12为例

步骤1:中止相应OSD服务

此步骤须要在Down掉的OSD所在节点上操做,

[root@cephnode001 ~]# systemctl stop ceph-osd@12

实战01:OSD操做(扩容/缩容/换盘/数据重平衡/数据一致性)

步骤2:取消OSD挂载

安装OSD时,会将osd.12挂载至/var/lib/ceph/osd/ceph-12,所以,删除OSD时,须要首先取消OSD挂载

# 查看osd.12的源数据信息
[root@cephnode001 ~]# ceph osd metadata 12 
"bluestore_bdev_partition_path": "/dev/dm-7"
[root@cephnode001 ~]# ll /dev/mapper/*  |grep dm-7
[root@cephnode001 ~]# umount /var/lib/ceph/osd/ceph-12/

实战01:OSD操做(扩容/缩容/换盘/数据重平衡/数据一致性)

这里磁盘路径是/dev/sdf

步骤3: 设置OSD为OUT

# 将osd.12的状态设置为out,对应权重reweight会变为0
[cephuser@cephmanager01 cephcluster]$ sudo ceph osd out 12

步骤4:删除OSD

#从集群中删除
[cephuser@cephmanager01 cephcluster]$ sudo ceph osd rm osd.12
# 从CRUSH中删除,而后经过ceph osd crush dump确认没有对应信息
[cephuser@cephmanager01 cephcluster]$ sudo ceph osd crush rm osd.12
# 删除osd.12的认证信息,而后经过ceph auth list确认有没有对应信息
[cephuser@cephmanager01 cephcluster]$ sudo ceph auth del osd.12

步骤5:清空已删除磁盘中的内容

# 确认osd.12已经移除
[cephuser@cephmanager01 cephcluster]$ sudo ceph osd tree
# 清空磁盘中的数据
[root@cephnode001 ~]# wipefs -af /dev/sdf

确认osd.12已经移除,同时/dev/sdf已经没有挂载信息

实战01:OSD操做(扩容/缩容/换盘/数据重平衡/数据一致性)

1.4 换盘

能够简单的理解为删除osd(详见1.3)和添加OSD(相见1.2)的过程;

2 REBALANCING数据重平衡

2.1 数据重平衡演示

​ 当有新的osd加入集群或者移除了osd,就会把状态上报给Monitor,Monitor知道了osd map发生了变化就会触发rebalancing,确保pg可以平滑的移动到各个osd上。以pg为总体进行数据重平衡,重平衡的过程当中可能会影响性能。一次性加入的osd越多,数据rebalancing就越频繁,业务也可能所以受到影响。生产环境中,强烈建议一次只添加一个osd,最大限度的减小性能和业务的影响。

(1)准备数据文件

# 或者拷贝一些大文件到rbd或者cephfs里面
[root@localhost ~]# cp -r project/ /cephfs
[root@localhost ~]# cp -r project/ /ceph_disk_rbd

(2)添加osd或者删除osd,或者直接停掉单个osd的服务

# 添加cephnode001的/dev/sdf, 因为刚刚咱们删除了,这里须要zap一下该磁盘
[cephuser@cephmanager01 cephcluster]$ ceph-deploy disk zap cephnode001 /dev/sdf
[cephuser@cephmanager01 cephcluster]$ ceph-deploy osd create --data /dev/sdf cephnode001
# 确认已经添加进来
[cephuser@cephmanager01 cephcluster]$ sudo ceph osd tree

(3)查看数据平衡状况

# 查看平衡状况
[root@cephmanager01 ~]#  ceph -s

实战01:OSD操做(扩容/缩容/换盘/数据重平衡/数据一致性)

2.2 临时关闭rebalance

​ 当在作rebalance的时候,每一个osd都会按照osd_max_backfills指定数量的线程来同步,若是该数值比较大,同步会比较快,可是会影响部分性能;另外数据同步时,是走的cluster_network,而客户端链接是用的public_network,生产环境建议这两个网络用万兆网络,较少网络传输的影响;

[root@cephnode001 ~]#  ceph --admin-daemon /var/run/ceph/ceph-osd.12.asok config show |grep max_backfills

​ 一样,为了不业务繁忙时候rebalance带来的性能影响,能够对rebalance进行关闭;当业务比较小的时候,再打开;

# 设置标志位
[root@cephmanager01 ~]# ceph osd set norebalance
# 关闭数据填充
[root@cephmanager01 ~]# ceph osd set nobackfill

实战01:OSD操做(扩容/缩容/换盘/数据重平衡/数据一致性)

取消继续进行rebalance:

[root@cephmanager01 ~]# ceph osd unset nobackfill
[root@cephmanager01 ~]# ceph osd unset norebalance

3 数据一致性检查

​ ceph会按期去检查指定冗余副本数的数据是否一致。分两种状况检查:

3.1 scrub

​ 比较轻量级的检查,主要检查元数据(metadata )信息,好比文件名、object属性、大小等,若是不同,就会从主pg复制一份过去。通常天天都会检查。

# 获取pgid
[root@cephmanager01 ~]# ceph pg dump
# 数据一致性检查
[root@cephmanager01 ~]# ceph pg scrub 2.19
# 查看对应的scrub信息
[root@cephmanager01 ~]# ceph -s

3.2 deeper scrubbing

​ 深度一致性检查,主要对比数据内容。数据量比较大的时候,这个检查相对来讲比较耗费资源。通常每周检查。

# 深度检查
[root@cephmanager01 ~]# ceph pg deep-scrub 2.19
# 查看对应的scrub信息
[root@cephmanager01 ~]# ceph -s

也能够对全部的pg作deep-scrub操做

相关文章
相关标签/搜索