Ceph OSD 部署過程中若發生檔案系統錯誤,會導致底層裝置無法正常讀寫、命令卡住無回應。本文記錄實戰故障現象 (dmesg I/O error、ceph-disk 指令失敗)、診斷步驟 (smartctl、fsck、dmesg -T)、修復策略 (唯讀掛載搶救資料、fsck.ext4 修復、必要時重建 OSD)、預防措施 (監控 SMART、預留備用裝置)。


ceph-disk prepare / activate 長時間無輸出、最終失敗。ls /var/lib/ceph/osd/ 卡住無回應。dmesg -T 大量:Buffer I/O error on device sdb, logical block XXXX、Medium Error、Unrecovered read error。smartctl -a /dev/sdb 關注 Reallocated_Sector_Ct、Current_Pending_Sector、Offline_Uncorrectable。fsck.ext4 -n /dev/sdb1 (唯讀檢查) → 若無錯誤則為硬體層面問題。dmesg -T | grep -i -e error -e fail -e sdb 追蹤首發錯誤時間點。
umount /var/lib/ceph/osd/osd.X
fsck.ext4 -fy /dev/sdb1
mount -a
systemctl restart ceph-osd@X
# 1. 唯讀掛載搶救關鍵資料
mount -o ro /dev/sdb1 /mnt/rescue
cp -a /mnt/rescue/current/ /backup/osd.X/
# 2. 標記 OSD out、destroy
ceph osd out X
ceph osd purge X --yes-i-really-mean-it
# 3. 更換硬碟、重建 OSD
ceph-disk prepare /dev/sdX
ceph-disk activate /dev/sdX1
ceph osd set noout 防止資料再平衡風暴。
# Prometheus + node_exporter 監控指標
node_disk_io_time_seconds_total
node_disk_read_errors_total
node_disk_write_errors_total
smartmon_attr_Reallocated_Sector_Ct
smartmon_attr_Current_Pending_Sector
檔案系統故障往往源於硬體劣化,建立「監控 → 告警 → 隔離 → 更換」閉環,才能守住資料安全底線。