journalctl 不直接记录坏道,但可捕获内核io错误、smartd告警及文件系统异常等关键线索:用 journalctl -k -p err | grep -i "sector\|i/o error" 查内核报错,journalctl -u smartd | grep -i "failing\|reallocated" 查smart告警,再结合 smartctl -a /dev/sdx 确认坏道。

journalctl 本身不直接记录磁盘坏道(bad sector)的物理检测结果,但它会捕获内核、驱动、文件系统和 SMART 监控服务(如 smartd)在发现 IO 异常、读写失败或磁盘健康告警时输出的关键日志。这些日志是排查坏道问题的第一手线索,尤其当坏道已引发实际错误(如挂载失败、服务中断、IO timeout)时。
以下是从 journalctl 中定位磁盘坏道相关底层日志的实用路径:
查看内核层 IO 错误日志
坏道触发的底层读写失败,通常由内核 block 层或 SCSI/ATA 驱动上报,表现为 I/O error、end_request: I/O error、sector、timeout 等关键词:
- 查看最近一次启动以来所有内核错误(含磁盘 IO):
journalctl -k -p err | grep -i "error\|fail\|timeout\|sector\|ata\|sd\[a-z\]"
- 实时监控新出现的磁盘 IO 报错(推荐在复现问题时运行):
journalctl -k -f | grep -i "sd\[a-z\]\|ata\|I/O error\|end_request"
示例典型输出:
kernel: end_request: I/O error, dev sdb, sector 123456789kernel: ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
检查 smartd 主动告警日志
若系统启用了 smartmontools(绝大多数生产环境默认启用),smartd 会在检测到预失效属性(Pre-failure)、重映射扇区数增长、UNC(uncorrect)错误等坏道征兆时主动写入日志:
- 查看
smartd服务日志:journalctl -u smartd --since "7 days ago"
- 快速筛选高风险信号:
journalctl -u smartd | grep -i "Failing\|Pre-failure\|reallocated\|pending\|uncorrect"
常见关键句:
Device: /dev/sda, FAILED SMART self-check. BACK UP YOUR DATA!SMART error log contains one or more errorsCurrent Drive Temperature: 52 C [uncorrect]
关联文件系统级报错(间接佐证)
坏道常导致 ext4/xfs 等文件系统无法读取元数据或数据块,进而触发 kernel 或 fsck 日志:
- 搜索文件系统错误与设备名绑定的日志:
journalctl -k | grep -i "ext4\|xfs\|filesystem.*error\|sda\|sdb" | head -20
- 若系统曾自动运行
e2fsck或提示“corruption”,可重点查:journalctl --since "1 hour ago" | grep -i "e2fsck\|fsck\|corrupt\|read-only"
如出现
EXT4-fs (sdb1): INFO: recovery required on readonly filesystem,说明文件系统因底层 IO 失败被强制只读——这是坏道的强烈间接证据。
补充验证:结合 dmesg 和 smartctl 手动确认
journalctl -k 是 dmesg 的持久化版本,但若日志未持久化(默认内存存储),需先确保 /var/log/journal 已启用:
sudo mkdir -p /var/log/journal sudo systemctl restart systemd-journald
之后再执行上述命令,避免重启后丢失早期线索。
最终确认坏道,仍需手动运行:
-
sudo smartctl -a /dev/sda(查看 Reallocated_Sector_Ct、Current_Pending_Sector、UDMA_CRC_Error_Count 等关键属性) -
sudo badblocks -v /dev/sda1 > badsectors.txt(对已挂载分区慎用,建议卸载后执行)
不复杂但容易忽略











