Ceph BlueFS 溢出修复
- [Ceph BlueFS 溢出修复](#Ceph BlueFS 溢出修复)
-
- 问题概述
-
- [检查 osd.383 的详细信息](#检查 osd.383 的详细信息)
- [查看 BlueFS 空间使用情况](#查看 BlueFS 空间使用情况)
- [方案一: RocksDB Compact (推荐先尝试)](#方案一: RocksDB Compact (推荐先尝试))
- [执行方案二:重启 OSD.383](#执行方案二:重启 OSD.383)
-
- [步骤 1: 确认 OSD 可以安全重启](#步骤 1: 确认 OSD 可以安全重启)
- [步骤 2: 在 ceph116 节点执行重启](#步骤 2: 在 ceph116 节点执行重启)
- [步骤 3: 验证健康状态](#步骤 3: 验证健康状态)
Ceph BlueFS 溢出修复
问题概述
集群信息:
- Ceph 版本: 14.2.22 (Nautilus stable)
告警信息:
bash
HEALTH_WARN BlueFS spillover detected on 1 OSD(s)
BLUEFS_SPILLOVER BlueFS spillover detected on 1 OSD(s)
osd.383 spilled over 352 MiB metadata from 'db' device (28 GiB used of 58 GiB) to slow device
影响:
- OSD.383 的元数据溢出到 HDD,导致性能下降
检查 osd.383 的详细信息
bash
ceph osd metadata osd.383
设备配置:
json
{
"hostname": "ceph116",
"bluefs_db_dev_node": "/dev/dm-102",
"bluefs_db_size": "62277025792", // 58 GiB
"bluefs_db_type": "ssd",
"bluestore_bdev_dev_node": "/dev/dm-28",
"bluestore_bdev_size": "16000896466944", // 14.5 TiB
"bluestore_bdev_type": "hdd",
"devices": "nvme0n1,sds"
}
查看 BlueFS 空间使用情况
bash
ceph tell osd.383 bluestore bluefs available
BlueFS 空间使用:
json
{
"BDEV_DB (NVMe)": {
"total": "58 GiB",
"used": "28.3 GiB",
"free": "29.7 GiB"
},
"BDEV_SLOW (HDD)": {
"spillover": "352 MiB",
"free": "595 GiB"
}
}
方案一: RocksDB Compact (推荐先尝试)
执行压缩操作
Compact 操作会压缩 RocksDB,有可能将溢出的数据迁移回 DB 设备。
bash
# ceph tell osd.383 compact
compacted omap in 278.544 seconds
bash
tail -f /var/log/ceph/ceph-osd.383.log | grep -i compact
执行方案二:重启 OSD.383
Compact 操作虽然成功执行,但溢出告警仍然存在。这是因为已经溢出到 HDD 的 352 MiB 数据不会自动迁移回 DB 设备
步骤 1: 确认 OSD 可以安全重启
bash
ceph osd ok-to-stop 383
步骤 2: 在 ceph116 节点执行重启
bash
systemctl restart ceph-osd@383
步骤 3: 验证健康状态
bash
ceph health detail