Ceph集群中安全删除OSD磁盘指南:Rocky Linux 9.6 + Ceph 17.2.9容器化环境实践
Ceph集群中安全删除OSD磁盘指南:Rocky Linux 9.6 + Ceph 17.2.9容器化环境实践
在Ceph分布式存储系统的日常运维中,经常会遇到需要安全地从集群中移除某个OSD(Object Storage Daemon)的场景。这些场景可能包括磁盘故障、硬件升级、容量调整或集群重构等情况。本文将详细介绍在Rocky Linux 9.6环境下使用Ceph 17.2.9 (Quincy)版本时,如何安全地将某个OSD磁盘从容器化集群中退出并进行物理移除。
适用场景
在以下情况下,您可能需要从Ceph集群中安全地删除OSD:
- 磁盘故障:硬盘出现坏道或其他硬件故障,需要更换
- 硬件升级:需要更换更大容量或更高性能的磁盘
- 集群扩容/缩容:根据业务需求调整集群规模
- 节点维护:需要对特定节点进行维护或退役
- 容量优化:重新平衡集群中的数据分布
删除OSD前的准备工作
在开始删除OSD之前,需要进行充分的准备工作以确保操作的安全性。
1. 检查集群状态
# 检查集群整体健康状态ceph-s# 查看集群详细健康信息ceph health detail# 查看OSD树状结构ceph osd tree# 查看数据分布情况ceph osddf确保集群处于 HEALTH_OK 或 HEALTH_WARN 状态,避免在集群已有问题时进行OSD删除操作。
2. 确定要删除的OSD
# 列出所有OSD及其状态ceph osdls# 查看特定OSD的详细信息ceph osd info osd.0# 查看OSD的使用情况ceph osddftree|greposd.0# 查看OSD所在的主机ceph osd tree|greposd.03. 检查数据分布影响
# 查看集群的副本策略ceph osd poollsdetail# 检查删除OSD对数据冗余的影响ceph pg dump|grep-cactive+clean安全删除OSD的详细步骤
步骤1:将OSD标记为out状态
首先需要将目标OSD标记为out状态,让Ceph开始将该OSD上的数据迁移到其他OSD上。
# 将OSD标记为out状态(以osd.0为例)ceph osd out0# 验证OSD状态ceph osd tree|greposd.0当OSD被标记为out后,Ceph会自动开始数据重平衡过程,将该OSD上的数据复制到其他OSD上。
步骤2:监控数据迁移进度
在数据迁移过程中,需要密切关注进度以确保操作顺利完成。
# 查看集群状态,观察数据迁移进度ceph-s# 查看PG状态详情ceph pgstat# 查看详细的PG状态ceph pg dump# 监控特定OSD的使用情况变化watch-n5"ceph osd df | grep osd.0"等待直到数据迁移完成,集群状态回到 HEALTH_OK 或 HEALTH_WARN 状态。
步骤3:停止OSD容器
数据迁移完成后,需要停止目标OSD的容器进程。
# 查看OSD容器状态ceph orchps--daemon-type osd# 停止特定OSD容器(以osd.0为例)ceph orch daemon stop osd.0# 或者停止指定主机上的OSD容器ceph orch daemon stop osd.node1.hostename.vjpidb# 验证OSD容器已停止ceph orchps--daemon-type osd|greposd.0步骤4:从集群中移除OSD
停止容器后,需要将OSD从集群中彻底移除。
# 从CRUSH map中移除OSDceph osd crush remove osd.0# 删除OSD的认证密钥ceph auth del osd.0# 最终从OSD map中移除OSDceph osdrm0# 验证OSD已完全移除ceph osd tree|greposd.0||echo"OSD已成功移除"步骤5:使用orchestrator删除OSD(推荐方法)
对于使用cephadm/orchestrator管理的容器化集群,推荐使用orchestrator命令来删除OSD:
# 查看OSD守护进程ceph orchps--daemon-type osd# 删除OSD守护进程(以osd.0为例)ceph orch osdrm0# 或者强制删除OSD守护进程ceph orch daemonrmosd.0--force# 查看删除状态ceph orch osdrmstatus# 如果需要取消删除操作ceph orch osdrmcancel0步骤6:清理磁盘设备
最后,需要清理物理磁盘上的数据和元数据,以便磁盘可以重新使用或安全处置。
# 登录到运行OSD的主机sshceph-node-1# 使用ceph-volume清理设备(如果使用LVM)cephadm shell -- ceph-volume lvm zap--destroy/dev/sdb# 或者手动清理磁盘# 警告:以下操作会彻底清除磁盘上的所有数据sgdisk --zap-all /dev/sdbddif=/dev/zeroof=/dev/sdbbs=1Mcount=100wipefs-a/dev/sdb刷新设备状态
有时候,即使已经删除了OSD并清理了磁盘,在ceph orch device ls命令输出中仍然可以看到旧的设备信息。这是因为Orchestrator的设备信息缓存尚未刷新。
# 刷新设备列表缓存ceph orch devicels--refresh# 查看刷新后的设备列表ceph orch devicels# 只查看特定主机上的可用设备ceph orch devicels<hostname>--available使用--refresh参数可以强制刷新设备列表,更新设备的状态信息。这通常需要几秒钟时间来完成。
验证删除结果
完成所有操作后,需要验证OSD确实已从集群中移除:
# 检查集群状态ceph-s# 查看OSD列表ceph osdls|grep0||echo"OSD 0 已成功移除"# 查看OSD树状结构ceph osd tree# 检查PG状态ceph pgstat常见问题及解决方案
1. 数据迁移时间过长
如果数据迁移耗时过长,可能是由于以下原因:
# 调整恢复参数加快迁移速度ceph configsetosd osd_max_backfills8ceph configsetosd osd_recovery_max_active8# 监控迁移进度ceph pg dump|grep-vactive+clean2. OSD无法正常停止
# 强制停止OSD服务systemctlkillceph-osd@0 systemctl stop ceph-osd@0# 检查是否还有相关进程psaux|grepceph-osd3. 删除后集群状态异常
# 重新平衡集群ceph osd reweight-by-utilization# 检查并修复PG状态ceph pg repair<pg_id>最佳实践建议
1. 操作时机选择
- 选择业务低峰期进行操作
- 确保集群有足够的冗余能力
- 提前通知相关人员
2. 操作前检查清单
- 集群健康状态检查
- 确定要删除的OSD ID
- 确认数据冗余策略
- 备份重要配置信息
- 准备应急回滚方案
3. 操作后验证
- 集群状态恢复正常
- 数据分布均衡
- 应用程序访问正常
- 监控告警消除
安全注意事项
- 数据安全:确保集群有足够的副本或纠删码保护,避免数据丢失
- 逐步操作:严格按照步骤执行,不要跳过任何环节
- 实时监控:操作过程中持续监控集群状态
- 备份准备:重要操作前做好配置备份
- 权限控制:使用具有足够权限但不过度授权的账户执行操作
总结
安全地从Ceph集群中删除OSD是一个需要谨慎处理的操作。通过遵循本文介绍的步骤,您可以有效地将OSD从集群中移除,同时确保数据安全和集群稳定。关键在于:
- 充分的准备工作和状态检查
- 正确的数据迁移和等待过程
- 完整的清理和验证步骤
- 及时的监控和问题处理
在实际操作中,建议先在测试环境中练习相关步骤,熟悉整个流程后再在生产环境中执行。同时,根据具体的集群规模和业务需求,适当调整相关参数和操作策略。
参考文档
- Ceph官方文档 - OSD管理
- Ceph官方文档 - 数据分布
- Ceph官方文档 - cephadm
- Ceph存储池管理
- Ceph Quincy版本发布说明
温馨提示
由于网络环境或文件存储等因素,若相关文件或图片链接暂时无法访问,您也可以通过访问张师傅的好来斯技术博客获取更多相关资源和最新信息。
本篇文章原始链接:
https://www.howlaisi.com/categories/ceph/rocky-linux-9.6-ceph-17.2.9rong-qi-hua-huan-jing-shi-jian