Ceph OSD 命令详解
OSD(Object Storage Daemon)是 Ceph 存储集群的核心组件,负责存储数据、处理数据复制、恢复、再平衡等操作。掌握 OSD 相关命令对于管理和维护 Ceph 集群至关重要。
OSD 基础命令
1. 查看 OSD 状态
# 查看 OSD 状态概览
ceph osd stat
# 查看 OSD 树状结构
ceph osd tree
# 查看 OSD 详细信息
ceph osd dump
# 查看 OSD 性能统计
ceph osd perf
2. OSD 状态管理
# 将 OSD 标记为 out(从集群中移出)
ceph osd out <osd_id>
# 将 OSD 标记为 in(加入集群)
ceph osd in <osd_id>
# 将 OSD 标记为 down(标记为宕机)
ceph osd down <osd_id>
# 将 OSD 标记为 lost(标记为丢失)
ceph osd lost <osd_id>
3. OSD 权重和 Crush Map
# 调整 OSD 权重
ceph osd crush reweight <osd_name> <weight>
# 查看 Crush Map
ceph osd crush dump
# 查看 Crush 树
ceph osd crush tree
OSD 管理命令
1. 创建和删除 OSD
在 cephadm 环境中,通常使用 orch 命令来管理 OSD:
# 使用 orch 命令添加 OSD
ceph orch daemon add osd <host>:<device>
# 删除 OSD
ceph orch osd rm <osd_id>
# 查看 OSD 删除状态
ceph orch osd rm status
常用 OSD 管理场景
场景 1:替换故障磁盘
当某个 OSD 对应的磁盘发生故障时,需要替换磁盘:
# 1. 将故障 OSD 标记为 out
ceph osd out osd.<osd_id>
# 2. 等待数据迁移完成(可通过 ceph -s 观察)
ceph -s
# 3. 从集群中移除 OSD
ceph orch osd rm <osd_id>
# 4. 确认 OSD 已被移除
ceph osd tree
# 5. 物理更换磁盘
# 6. 添加新磁盘为 OSD
ceph orch daemon add osd <host>:<new_device>
场景 2:临时维护 OSD
当需要临时关闭某个 OSD 进行维护时:
# 1. 将 OSD 标记为 out(数据会被迁移到其他 OSD)
ceph osd out osd.<osd_id>
# 2. 等待数据迁移完成
ceph -s
# 3. 执行维护操作...
# 4. 维护完成后重新加入集群
ceph osd in osd.<osd_id>
场景 3:调整 OSD 权重
当需要调整某个 OSD 的权重(影响数据分布)时:
# 1. 查看当前权重
ceph osd tree
# 2. 调整权重(例如调整为 0.8)
ceph osd crush reweight osd.<osd_id> 0.8
OSD 相关配置参数
| 参数名 | 含义 | 默认值 | 建议值 |
|---|---|---|---|
| osd_memory_target | OSD 内存限制 | 4GB | 根据节点内存调整 |
| osd_max_backfills | 最大回填数 | 1 | 2-4(视网络带宽) |
| osd_recovery_max_active | 最大恢复并发数 | 3 | 2-4(视磁盘性能) |
| osd_op_threads | OSD 操作线程数 | 2 | 4-8(视 CPU 核心数) |
注意事项
- 数据安全:在删除 OSD 前,务必确保数据已完全迁移
- 集群状态:执行任何 OSD 操作前,先检查集群健康状态 (
ceph -s) - 备份配置:重要操作前备份相关配置
- 权限要求:大部分命令需要管理员权限执行
总结
OSD 是 Ceph 集群中最重要的组件之一,掌握这些命令有助于更好地管理和维护存储集群。在实际操作中,应根据具体情况选择合适的命令,并严格按照操作流程执行,确保数据安全和集群稳定。
评论区