汇总Ceph运维中遇到的问题
汇总Ceph运维中遇到的问题
1. 更换故障盘
1.1 查看故障盘osd id
ceph osd tree
1.2 移除故障盘
ceph osd out osd.60
ceph osd crush remove osd.60
ceph auth del osd.60
ceph osd rm osd.60
# ceph osd destroy 60 --yes-i-really-mean-it # 清空硬盘上的数据和元数据
# ceph osd purge 60 --yes-i-really-mean-it # 快速删除osd,等同于crush remove+ auth del + osd rm
# destroy可以保留osd id;purge不保留osd id;新版本建议直接使用 ceph osd out && ceph osd purge 命令清除故障盘
ceph osd out osd.60
ceph osd purge 60 --yes-i-really-mean-it
1.3 下线故障硬盘
systemctl stop ceph-osd@60
umount /var/lib/ceph/osd/ceph-60
# 线下更换...
1.4 查看新硬盘盘符
lsblk
1.5 擦除新硬盘
ceph-volume lvm zap /dev/sde --destroy
# 如果更换的盘带有逻辑卷信息(旧硬盘),需要先清除逻辑卷信息,使用如下命令
# dmsetup remove ceph--176f681d--9b18--4d97--ada4--077dcb507638-osd--block--0376cd87--c5c1--4a6b--ae7a--8dff088932a4
1.6 分配新id和fsid创建并启动osd(合并以下7/8/9步骤,即 create 等同于prepare + activate,使用 prepare 和 activate 的好处是可以逐步地将新的 OSD 加入集群,避免大量的数据重平衡)
ceph-volume lvm create --data /dev/sde --bluestore
1.7 格式化lvm设备并将其与osd关联(可选)
ceph-volume lvm prepare --osd-id 60 --bluestore --data /dev/sde
# ceph-volume lvm prepare --bluestore --data /path/to/device
# ceph-volume lvm prepare --filestore --data volume_group/lv_name --journal /dev/sdh
# ceph-volume lvm prepare --filestore --data volume_group/lv_name --journal volume_group/journal_lv
1.8 查看osd fsid(可选)
ceph-volume lvm list
cat /var/lib/ceph/osd/ceph-60/fsid
1.9 发现并挂载与osd id关联的lvm设备并启动osd(可选)
ceph-volume lvm activate 60 78341e1b-3cdf-466f-bdec-fc5b09192e35
1.10 手动将osd加入到crush map
ceph osd crush add osd.60 1.63699 root=stat
ceph osd crush add osd.60 1.63699 host=stat_06
2. 扩容osd节点
scp master01:/etc/yum.repos.d/ceph_stable.repo /etc/yum.repos.d/ceph_stable.repo
scp master01:/etc/ceph/ceph.conf /etc/ceph
scp master01:/etc/ceph/ceph.client.admin.keyring /etc/ceph
scp master01:/var/lib/ceph/bootstrap-osd/ceph.keyring /var/lib/ceph/bootstrap-osd
yum install -y ceph-osd
ceph-volume lvm zap /dev/sdb --destroy
ceph-volume lvm zap /dev/sdc --destroy
ceph-volume lvm zap /dev/sdd --destroy
ceph-volume lvm zap /dev/sde --destroy
ceph-volume lvm create --data /dev/sdb --bluestore --block.db /dev/sdf --block.wal /dev/sdg --block.db-size 20G --block.wal-size 20G
ceph-volume lvm create --data /dev/sdc --bluestore --block.db /dev/sdf --block.wal /dev/sdg --block.db-size 20G --block.wal-size 20G
ceph-volume lvm create --data /dev/sdd --bluestore --block.db /dev/sdf --block.wal /dev/sdg --block.db-size 20G --block.wal-size 20G
ceph-volume lvm create --data /dev/sde --bluestore --block.db /dev/sdf --block.wal /dev/sdg --block.db-size 20G --block.wal-size 20G
# 查看硬盘对应的osd id号,并向非默认规则集中增加硬盘(根据自己的crush规则自行设置)
ceph-volume lvm list
ceph osd crush add osd.53 1.63699 root=stat
ceph osd crush add osd.53 1.63699 host=stat_06
3. 缩容osd节点
3.1 停止所有osd服务
systemctl stop ceph-osd@13.server
systemctl stop ceph-osd@14.server
systemctl stop ceph-osd@15.server
systemctl stop ceph-osd@16.server
3.2 销毁所有osd
ceph osd purge 13 --yes-i-really-mean-it
ceph osd purge 14 --yes-i-really-mean-it
ceph osd purge 15 --yes-i-really-mean-it
ceph osd purge 16 --yes-i-really-mean-it
3.3 擦除磁盘数据
ceph-volume lvm zap --osd-id 13 --destroy
ceph-volume lvm zap --osd-id 14 --destroy
ceph-volume lvm zap --osd-id 15 --destroy
ceph-volume lvm zap --osd-id 16 --destroy
3.4 清除crush数据
ceph osd crush tree
ceph osd crush rm node03
3.5 删除osd应用
yum remove -y ceph-osd ceph-common
4. 调整PG
Total PGs = ((Total_number_of_OSD * 100) / max_replication_count) / pool_count, 结算的结果往上取靠近2的N次方的值。
ceph osd lspools
ceph osd pool get pool1 all
ceph osd pool set pool1 pg_num 2048
ceph osd pool set pool1 pgp_num 2048
5. 报警提示:1 daemons have recently crashed
ceph crash ls-new
ceph crash info
ceph crash archive-all
6. 多路径创建逻辑卷失败的问题:
RuntimeError: Cannot use device (/dev/mapper/mpathh). A vg/lv path or an existing device is needed
https://tracker.ceph.com/issues/23337
systemctl reload multipathd.service
multipath -ll
# 修改ceph-volume的源代码文件
vim /usr/lib/python2.7/site-packages/ceph_volume/util/disk.py
# ... src/ceph-volume/util/disk.py
# use lsblk first, fall back to using stat
TYPE = lsblk(dev).get('TYPE')
if TYPE:
return TYPE == 'disk' or TYPE == 'mpath'
# 重新执行ceph-volume命令
ceph-volume lvm create --bluestore --data /dev/mapper/mpathh
ceph-volume lvm ls
7. 磁盘有分区表导致无法创建osd:
error: GPT headers found, they must be removed on: /dev/dm-10
sgdisk --zap-all /dev/dm-10
# 再次创建
ceph-volume lvm create --data /dev/dm-10 --bluestore
8. 集群未清理旧硬盘的认证信息导致新建osd使用与旧硬盘相同的id时报错:
Error EINVAL: entity osd.90 exists but key does not match
ceph auth rm osd.90
9. 重建mon节点
9.1 查看仲裁状态
ceph mon stat
9.2 移除MON节点
ceph mon remove node03
# ceph mon add node03 192.168.100.103:6789 用于增加mon节点
9.3 删除MON数据目录
rm -rf /var/lib/ceph/mon/ceph-node03/
9.4 获取并查看集群MON的map和keyring
ceph mon getmap -o /tmp/monmap
ceph auth get mon. -o /tmp/keyring
monmaptool --print /tmp/monmap
cat /tmp/keyring
9.5 通过map和keyring重建MON数据目录
ceph-mon --id node03 --mkfs --monmap /tmp/monmap --keyring /tmp/keyring
chown -R ceph:ceph /var/lib/ceph/mon/ceph-node03/
9.6 重启MON进程
systemctl reset-failed ceph-mon@node03.service
systemctl restart ceph-mon@node03.service
systemctl status ceph-mon@node03.service
9.7 查询节点MON状态
ceph daemon mon.node03 mon_status
作者:wanghongwei
版权声明:本作品遵循<CC BY-NC-ND 4.0>版权协议,商业转载请联系作者获得授权,非商业转载请附上原文出处链接及本声明。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统