Ceph集群定时Scrub

Scrub是什么?

  1. ScrubCeph集群副本进行数据扫描的操作,用以检测副本间数据的一致性,包括ScrubDeep-Scrub,其中Scrub只对元数据信息进行扫描,相对比较快,而Deep-Scrub不仅对元数据进行扫描,还会对存储的数据进行扫描,相对比较慢

实战案例
晚22点到第二天7点进行scrub

  1. 配置scrub其实时间为22点整
  2. ceph tell osd.* injectargs --osd_scrub_begin_hour 22
  3. 配置Scrub结束时间为第二天早上7点整:
  4. ceph tell osd.* injectargs --osd_scrub_end_hour 7

配置文件

  1. [osd]
  2. osd_scrush_begin_hour = 22
  3. osd_scrush_end_hour = 7

Ceph数据重建配置策略

  1. ceph集群出现OSDout或者in(增加,删除,上线,下线osd等情况),最终会导致集群ceph集群中的数据迁移及数据重建

案例实战

1.优先保证Recovery带宽
在对数据安全性要求比较高的场景下,为了保证数据副本的完整性以及快速恢复存储集群的健康,会优先保证数据恢复带宽,此时需要提升Recovery的I/O优先级,降低Client的I/O优先级

  1. 提升RecoveryI/O优先级
  2. ceph tell osd.* injectargs --osd_recovery_op_priority 63
  3. 降低ClientI/O优先级
  4. ceph tell osd.* injectargs --osd_client_op_priority 3
  1. 优先保证Client带宽
    对数据安全性要求不是很高的场景下,为了降低对用户体验的影响,会优先对Client的I/O优先级及带宽进行保证,此时需要降低Recovery的I/O优先级及带宽
  1. 降低RecoveryI/O优先级
  2. ceph tell osd.* injectargs --osd-recovery-op-priority 1
  3. 降低RecoveryI/O带宽及Backfilld
  4. ceph tell osd.* injectargs --osd_recovery_max_active 1
  5. ceph tell osd.* injectargs --osd_recovery_sleep 0.4
  6. 待完成
  7. ceph tell osd.* injectargs --osd-recovery-op-priority 1
  8. ceph tell osd.* injectargs --osd_recovery_max_active 1
  9. ceph tell osd.* injectargs --osd_recovery_sleep 0.4
  1. 完全保证Client带宽
    在极端情况下,如果网络带宽及磁盘性能都有限,这个时候为了不影响用户体验,不得不在业务繁重时段关闭数据重建及迁移的I/O,来完成保证Client的带宽,在业务空闲时,再打开数据重建及迁移
  1. 在业务繁忙时,完全关闭数据重建及迁移
  2. ceph osd set norebalance
  3. ceph osd set norecover
  4. ceph osd set nobackfill
  5. 空闲时,打开数据重建及迁移
  6. ceph osd unset norebalance
  7. ceph osd unset norecover
  8. ceph osd unset nobackfill

Ceph集群Full紧急处理

1 near_full 和 full是什么?

  1. near_full 空间使用率的告警水位
  2. full 空间使用率大于等于full告警水位时

2 如何查看当前集群的near_full 及 full 水位?
在mon节点查询mon配置

  1. ceph --admin-daemon /run/ceph/ceph-mon.{your-mon-ip}.asok config show | grep full_ratio

在OSD所在节点查询OSD配置

  1. ceph --admin-daemon /run/ceph/ceph-osd.{your-osd-id}.asok config show | grep full

3.遇到near_full 的告警该怎么办?

  1. 如果集群已经有near_full的告警了,也扩容的设备

4.遇到full的告警该怎么办?

  1. 数据保存工作,并对集群进行紧急配置删除一些无用的数据,恢复工作状态,待扩容设备到了再进行扩容

案例实战

  1. 1. 设置OSD禁止读写
  2. ceph osd pause #改操作会禁止接收一切读写请求
  3. 2. 通知mon osd 修改full阈值
  4. ceph tell mon.* injectargs --mon_osd_full_ratio 0.96
  5. ceph tell osd.* injectargs --mon_osd_full_ratio 0.96
  6. 3.通知PG修改full阈值
  7. ceph pg set_full_ratio 0.96
  8. 4. 解除OSD禁止读写
  9. ceph osd unpause
  10. 5. 删除相关数据
  11. 6. 将配置还原
  12. ceph tell mon.* injectargs --mon_osd_full_ratio 0.95
  13. ceph tell osd.* injectargs --mon_osd_full_ratio 0.95
  14. ceph pg set_full_ratio 0.95

ceph快照在增量备份的应用

1.容灾和备份差异

  1. 容灾:为了保证业务的“连续性”,侧重的是业务连续
  1. 什么是全量备份,增量备份,差量备份
  1. 全量备份:备份所有的数据
  2. 增量备份:每次备份与上一次以来增加的内容
  3. 差量备份:每次都备份当前与基准备份之间的差异内容
  4. 空间开销: 全量>差量>增量
  5. 恢复难度: 增量 > 差量 > 全量