Ceph OSD.419 故障分析
1. 問題描述
在 Ceph 存儲集群中,OSD.419 無法正常啟動,系統日志顯示服務反復重啟失敗。
2. 初始狀態分析
觀察到 OSD.419 服務啟動失敗的系統狀態:
systemctl status ceph-osd@419
● ceph-osd@419.service - Ceph object storage daemon osd.419Loaded: loaded (/usr/lib/systemd/system/ceph-osd@.service; enabled-runtime; vendor preset: disabled)Active: failed (Result: start-limit) since Thu 2025-07-17 10:55:23 CST; 2s agoProcess: 1459996 ExecStart=/usr/bin/ceph-osd -f --cluster ${CLUSTER} --id %i --setuser ceph --setgroup ceph (code=exited, status=1/FAILURE)
這表明 OSD 進程啟動后立即失敗,退出狀態碼為 1。
3. 日志分析
查看 OSD.419 的詳細日志:
journalctl -u ceph-osd@419 -n 50
日志中發現關鍵錯誤信息:
2025-07-17 10:55:23.127 7f102fcbca80 -1 bluestore(/var/lib/ceph/osd/ceph-419/block) _read_bdev_label failed to read from /var/lib/ceph/osd/ceph-419
2025-07-17 10:55:23.127 7f102fcbca80 -1 ** ERROR: unable to open OSD superblock on /var/lib/ceph/osd/ceph-419: (2) No such file or directory
這表明 BlueStore 無法讀取塊設備上的標簽信息,導致 OSD 無法啟動。
4. 文件系統與設備鏈接檢查
檢查 OSD 數據目錄及其塊設備鏈接:
ls -la /var/lib/ceph/osd/ceph-419
輸出顯示目錄存在且包含必要文件:
total 28
drwxrwxrwt 2 ceph ceph 200 Jun 28 22:17 .
drwxr-x--- 63 ceph ceph 4096 Apr 15 19:50 ..
lrwxrwxrwx 1 ceph ceph 93 Jun 28 22:17 block -> /dev/ceph-51f28752-dd94-4636-ad49-4f94adeec1fb/osd-block-4e392de5-7359-44a9-b5d3-2e4ad333bd87
lrwxrwxrwx 1 ceph ceph 23 Jun 28 22:17 block.db -> /dev/vg_nvme1n1/lv_sdbc
-rw------- 1 ceph ceph 37 Jun 28 22:17 ceph_fsid
-rw------- 1 ceph ceph 37 Jun 28 22:17 fsid
-rw------- 1 ceph ceph 57 Jun 28 22:17 keyring
-rw------- 1 ceph ceph 6 Jun 28 22:17 ready
-rw------- 1 ceph ceph 10 Jun 28 22:17 type
-rw------- 1 ceph ceph 4 Jun 28 22:17 whoami
進一步追蹤塊設備鏈接:
ls -la /dev/ceph-51f28752-dd94-4636-ad49-4f94adeec1fb/osd-block-4e392de5-7359-44a9-b5d3-2e4ad333bd87
輸出顯示其指向 /dev/dm-77
:
lrwxrwxrwx 1 root root 8 Jul 17 10:02 /dev/ceph-51f28752-dd94-4636-ad49-4f94adeec1fb/osd-block-4e392de5-7359-44a9-b5d3-2e4ad333bd87 -> ../dm-77
5. 設備映射與 LVM 分析
檢查設備映射器信息:
dmsetup info /dev/dm-77
輸出表明這是一個活躍的 LVM 設備:
Name: ceph--51f28752--dd94--4636--ad49--4f94adeec1fb-osd--block--4e392de5--7359--44a9--b5d3--2e4ad333bd87
State: ACTIVE
Read Ahead: 256
Tables present: LIVE
Open count: 0
Event number: 0
Major, minor: 253, 77
Number of targets: 1
UUID: LVM-D48Kd1xr9eXJxf8QOiu6d1PMQH3v50ElpO9ex3rKqF3wo9n21vF32ecPkt1Fl3Xs
通過 ceph-volume
工具確認 OSD 使用的物理設備:
ceph-volume lvm list | grep osd.419 -A 50
輸出確認 OSD.419 使用的是 /dev/sdbk
作為塊設備,/dev/vg_nvme1n1/lv_sdbc
作為數據庫設備:
===== osd.419 ======[block] /dev/ceph-51f28752-dd94-4636-ad49-4f94adeec1fb/osd-block-4e392de5-7359-44a9-b5d3-2e4ad333bd87block device /dev/ceph-51f28752-dd94-4636-ad49-4f94adeec1fb/osd-block-4e392de5-7359-44a9-b5d3-2e4ad333bd87block uuid pO9ex3-rKqF-3wo9-n21v-F32e-cPkt-1Fl3Xscephx lockbox secret cluster fsid 44599101-c099-4508-90de-5c748ea5b0f2cluster name cephcrush device class Nonedb device /dev/vg_nvme1n1/lv_sdbcdb uuid 7Wengz-0w4M-DkOu-Uyff-FWE3-fW4f-5wiBAgencrypted 0osd fsid 4e392de5-7359-44a9-b5d3-2e4ad333bd87osd id 419osdspec affinity type blockvdo 0devices /dev/sdbk[db] /dev/vg_nvme1n1/lv_sdbc
6. 設備健康狀態檢查
系統日志中的 I/O 錯誤
檢查系統日志中的 I/O 錯誤:
dmesg | grep -i error | tail -20
發現多個與 dm-77
和 sdbc
相關的 I/O 錯誤:
[1593796.275701] Buffer I/O error on dev dm-77, logical block 3906468848, async page read
[1593796.738615] Buffer I/O error on dev dm-77, logical block 3906468848, async page read
[1593797.475909] Buffer I/O error on dev dm-77, logical block 0, async page read
[1593798.084174] Buffer I/O error on dev dm-77, logical block 0, async page read
[1593798.576004] Buffer I/O error on dev dm-77, logical block 0, async page read
物理設備健康狀態
檢查底層物理設備 /dev/sdbk
的 SMART 信息:
smartctl -a /dev/sdbk
雖然整體狀態為 “PASSED”,但發現一些潛在問題指標:
Raw_Read_Error_Rate
值較高 (214634404)Reallocated_Sector_Ct
顯示有 8 個扇區被重新分配Command_Timeout
值非常高 (4295032833)
直接讀取測試
使用 dd
命令嘗試從設備讀取數據:
dd if=/dev/dm-77 of=/dev/null bs=4k count=1
結果確認存在 I/O 錯誤:
dd: error reading '/dev/dm-77': Input/output error
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.00196238 s, 0.0 kB/s
使用 BlueStore 工具檢查塊設備標簽:
ceph-bluestore-tool show-label --dev /dev/dm-77
結果同樣顯示 I/O 錯誤:
unable to read label for /dev/dm-77: (5) Input/output error
2025-07-17 11:00:23.188 7f6fc31efec0 -1 bluestore(/dev/dm-77) _read_bdev_label failed to read from /dev/dm-77: (5) Input/output error
檢查正常osd
# ls -lh /dev/ceph-1902944b-03e6-40f6-9e60-155c8eb0867a/osd-block-3a3bc0db-3cf6-40ef-948f-563e971bb455
lrwxrwxrwx 1 root root 8 Jun 29 12:35 /dev/ceph-1902944b-03e6-40f6-9e60-155c8eb0867a/osd-block-3a3bc0db-3cf6-40ef-948f-563e971bb455 -> ../dm-78
# dd if=/dev/dm-78 of=/dev/null bs=4k count=1
1+0 records in
1+0 records out
4096 bytes (4.1 kB) copied, 0.0122036 s, 336 kB/s
# ceph-bluestore-tool show-label --dev /dev/dm-78
{"/dev/dm-78": {"osd_uuid": "3a3bc0db-3cf6-40ef-948f-563e971bb455","size": 16000896466944,"btime": "2025-04-15 19:48:22.746107","description": "main","bluefs": "1","ceph_fsid": "44599101-c099-4508-90de-5c748ea5b0f2","kv_backend": "rocksdb","magic": "ceph osd volume v026","mkfs_done": "yes","osd_key": "AQB+R/5n9/t/HxAAmxcGbkW30GeHo+gMyYGLtA==","ready": "ready","require_osd_release": "14","whoami": "420"}
}
7. 故障結論
通過以上分析,可以得出以下結論:
- OSD.419 無法啟動是因為其塊設備
/dev/dm-77
(對應物理設備/dev/sdbk
)存在嚴重的 I/O 錯誤 - 錯誤主要發生在邏輯塊 0 處,這是關鍵的超級塊位置,導致 BlueStore 無法讀取 OSD 的元數據
- 物理設備
/dev/sdbk
雖然 SMART 狀態為 “PASSED”,但有多個指標顯示潛在問題 - 多次直接讀取測試確認設備確實存在物理 I/O 錯誤
8. 解決方案
基于故障分析,建議采取以下解決措施:
短期解決方案
-
將 OSD 標記為 out,確保集群不會嘗試向它寫入數據:
ceph osd out 419
-
嘗試修復 BlueStore(成功率較低):
ceph-bluestore-tool repair --path /var/lib/ceph/osd/ceph-419
-
如果修復失敗,完全移除這個 OSD:
ceph osd purge 419 --yes-i-really-mean-it
長期解決方案
-
更換物理硬盤
/dev/sdbk
,該硬盤顯示有潛在問題 -
使用新硬盤創建新的 OSD:
ceph-volume lvm create --data /dev/NEW_DISK --db /dev/vg_nvme1n1/lv_sdbc
-
定期檢查所有 OSD 的物理設備健康狀態,設置監控預警
9. 經驗總結
- 在 Ceph 集群中,OSD 故障通常可以追溯到底層物理設備問題
- 完整的故障分析應包括:服務狀態、日志分析、設備鏈接追蹤、物理設備健康檢查和直接 I/O 測試
- 即使 SMART 狀態顯示為 “PASSED”,也應關注各項指標的異常值
- 在處理 I/O 錯誤時,通常更換設備是最可靠的長期解決方案
- 維護良好的監控系統可以幫助提前發現潛在的硬件問題,避免服務中斷