Ceph集群定时Scrub
Scrub是什么?
Scrub是Ceph集群副本进行数据扫描的操作,用以检测副本间数据的一致性,包括Scrub和Deep-Scrub,其中Scrub只对元数据信息进行扫描,相对比较快,而Deep-Scrub不仅对元数据进行扫描,还会对存储的数据进行扫描,相对比较慢
实战案例
晚22点到第二天7点进行scrub
配置scrub其实时间为22点整
ceph tell osd.* injectargs --osd_scrub_begin_hour 22
配置Scrub结束时间为第二天早上7点整:
ceph tell osd.* injectargs --osd_scrub_end_hour 7
配置文件
[osd]
osd_scrush_begin_hour = 22
osd_scrush_end_hour = 7
Ceph数据重建配置策略
ceph集群出现OSD的out或者in(增加,删除,上线,下线osd等情况),最终会导致集群ceph集群中的数据迁移及数据重建
案例实战
1.优先保证Recovery带宽
在对数据安全性要求比较高的场景下,为了保证数据副本的完整性以及快速恢复存储集群的健康,会优先保证数据恢复带宽,此时需要提升Recovery的I/O优先级,降低Client的I/O优先级
提升Recovery的I/O优先级
ceph tell osd.* injectargs --osd_recovery_op_priority 63
降低Client的I/O优先级
ceph tell osd.* injectargs --osd_client_op_priority 3
- 优先保证Client带宽
对数据安全性要求不是很高的场景下,为了降低对用户体验的影响,会优先对Client的I/O优先级及带宽进行保证,此时需要降低Recovery的I/O优先级及带宽
降低Recovery的I/O优先级
ceph tell osd.* injectargs --osd-recovery-op-priority 1
降低Recovery的I/O带宽及Backfilld
ceph tell osd.* injectargs --osd_recovery_max_active 1
ceph tell osd.* injectargs --osd_recovery_sleep 0.4
待完成
ceph tell osd.* injectargs --osd-recovery-op-priority 1
ceph tell osd.* injectargs --osd_recovery_max_active 1
ceph tell osd.* injectargs --osd_recovery_sleep 0.4
- 完全保证Client带宽
在极端情况下,如果网络带宽及磁盘性能都有限,这个时候为了不影响用户体验,不得不在业务繁重时段关闭数据重建及迁移的I/O,来完成保证Client的带宽,在业务空闲时,再打开数据重建及迁移
在业务繁忙时,完全关闭数据重建及迁移
ceph osd set norebalance
ceph osd set norecover
ceph osd set nobackfill
空闲时,打开数据重建及迁移
ceph osd unset norebalance
ceph osd unset norecover
ceph osd unset nobackfill
Ceph集群Full紧急处理
1 near_full 和 full是什么?
near_full 空间使用率的告警水位
full 空间使用率大于等于full告警水位时
2 如何查看当前集群的near_full 及 full 水位?
在mon节点查询mon配置
ceph --admin-daemon /run/ceph/ceph-mon.{your-mon-ip}.asok config show | grep full_ratio
在OSD所在节点查询OSD配置
ceph --admin-daemon /run/ceph/ceph-osd.{your-osd-id}.asok config show | grep full
3.遇到near_full 的告警该怎么办?
如果集群已经有near_full的告警了,也扩容的设备
4.遇到full的告警该怎么办?
数据保存工作,并对集群进行紧急配置删除一些无用的数据,恢复工作状态,待扩容设备到了再进行扩容
案例实战
1. 设置OSD禁止读写
ceph osd pause #改操作会禁止接收一切读写请求
2. 通知mon 和 osd 修改full阈值
ceph tell mon.* injectargs --mon_osd_full_ratio 0.96
ceph tell osd.* injectargs --mon_osd_full_ratio 0.96
3.通知PG修改full阈值
ceph pg set_full_ratio 0.96
4. 解除OSD禁止读写
ceph osd unpause
5. 删除相关数据
6. 将配置还原
ceph tell mon.* injectargs --mon_osd_full_ratio 0.95
ceph tell osd.* injectargs --mon_osd_full_ratio 0.95
ceph pg set_full_ratio 0.95
ceph快照在增量备份的应用
1.容灾和备份差异
容灾:为了保证业务的“连续性”,侧重的是业务连续
- 什么是全量备份,增量备份,差量备份
全量备份:备份所有的数据
增量备份:每次备份与上一次以来增加的内容
差量备份:每次都备份当前与基准备份之间的差异内容
空间开销: 全量>差量>增量
恢复难度: 增量 > 差量 > 全量