背景
家里有台组装的桌面工作站,平时用来跑 AI 训练和挂迅雷下载。最近一段时间频繁遇到系统整个冻住的情况------鼠标不动、键盘没反应,只能长按电源强制关机。一开始以为是 Windows 11 的锅,后来发现每次卡死都和迅雷下载有关,特别是往某块特定的硬盘写数据时。
机器配置:
- CPU:12 代 Intel(i7-12700K)
- 主板:MSI MS-7D42
- 内存:32GB
- GPU:魔改 RTX 3080 20GB
- 存储:2 块 NVMe SSD + 6 块 SATA HDD + 3 块 USB 外置
- 系统:Windows 11 专业版 26200
盘太多主板 SATA 口不够用,额外买了两张 ASMedia 106x 的 PCIe 转 SATA 扩展卡。
现象
用迅雷往 D 盘(希捷 ST16000NM001G,16TB 企业盘)下载电影,下着下着突然听见"嘟"一声,像是硬盘掉了。迅雷的下载速度瞬间归零,整个系统开始卡顿,过几秒就彻底冻住,最后只能强制重启。
翻了一下,最近一个月发生了 3 次非正常关机(4/19、4/25、5/4)。
排查过程
第一步:看事件日志
打开 PowerShell,查系统日志里的错误和警告:
text
Get-WinEvent -FilterHashtable @{LogName='System'; Level=1,2; StartTime=(Get-Date).AddDays(-7)} | Select-Object -First 30 | Format-List TimeCreated, ProviderName, Message
发现了两个关键线索:
- Event ID 41(Kernel-Power):系统未正常关机就重启了------就是卡死后强制断电
- Event ID 153(disk):大量 IO 重试,全部指向 Disk 8
text
The IO operation at logical block address 0x1f724a278 for Disk 8
(PDO name: \Device�00058) was retried.
统计了一下 30 天内 Event 153 的数量:
text
Get-WinEvent -FilterHashtable @{LogName='System'; Id=153; StartTime=(Get-Date).AddDays(-30)} |
Group-Object {($_.Properties[0].Value)} | Format-Table Name, Count -AutoSize
结果:
| 磁盘 | IO 重试次数 |
| Harddisk8 | 907 |
| Harddisk7 | 13 |
| 其他 | 43 |
Disk 8 独占 907 次,而且按天分布来看,5 月 2 日那天单日爆发了 728 次------那天刚好在大量下载。
第二步:确认是哪块盘
text
Get-Disk -Number 8 | Select-Object Number, FriendlyName, BusType, Location
输出:
text
Number : 8
FriendlyName : ST16000NM001G
BusType : SATA
Location : PCI Slot 8 : Bus 7 : Device 0 : Function 0 : Adapter 4 : Port 1
ST16000NM001G,Lenovo OEM 版的希捷 Exos X16 企业盘,接在 ASMedia PCIe 转 SATA 扩展卡上。
第三步:看 SMART
装了 smartmontools 用 smartctl 拉完整 SMART 数据:
text
smartctl -a /dev/sdi
关键指标:
| SMART 属性 | 值 | 判断 |
| Reallocated_Sector_Ct (#5) | 0 | 正常,没有坏扇区 |
| Current_Pending_Sector (#197) | 0 | 正常 |
| Offline_Uncorrectable (#198) | 0 | 正常 |
| UDMA_CRC_Error_Count (#199) | 713 | 严重异常 |
| Command_Timeout (#188) | 4295099085 | 严重异常 |
看到这里就明白了:
UDMA_CRC_Error_Count = 713:SATA 传输层的 CRC 校验失败了 713 次。这个值正常应该是 0。CRC 错误说明数据在 SATA 线缆上传输时出了问题,原因一般是线缆质量差、接触不良、或者线缆老化。Command_Timeout很高:和 CRC 错误一致,大量命令因为传输失败而超时。- 坏扇区相关的三个指标(#5、#197、#198)全是 0:盘本身没坏。
第四步:交叉验证
同一张 ASMedia 扩展卡上还接了另一块盘------Disk 7(HGST 4TB),查它的 SMART:
text
smartctl -A /dev/sdh | findstr "UDMA_CRC"
结果:UDMA_CRC_Error_Count = 0
同一张卡,一块盘 713 次 CRC 错误,另一块 0 次。 问题锁定在 Disk 8 那根 SATA 线上。
第五步:换线
关机,拆开机箱,找到 D 盘(序列号 ZL23XSR8),换了一根新的 SATA 数据线。
开机后开迅雷往 D 盘全速下载,等了 15 分钟后再查:
text
# SMART CRC 计数
smartctl -A /dev/sdi | findstr "UDMA_CRC"
# 系统日志 IO 重试
(Get-WinEvent -FilterHashtable @{LogName='System'; Id=153; StartTime=(Get-Date).AddMinutes(-20)} -ErrorAction SilentlyContinue | Measure-Object).Count
结果:
- CRC 计数还是 713(历史累计,不会清零),没有新增
- IO 重试事件:0 次
问题解决。
总结
| 项目 | 详情 |
| 故障现象 | 迅雷下载时系统整个冻住,只能强制关机 |
| 根本原因 | SATA 数据线故障导致 CRC 校验失败 |
| 故障链 | 高速写入 → CRC 错误 → IO 重试 → 磁盘掉线 → 系统阻塞 → 冻住 |
| 解决方法 | 换一根 SATA 线 |
| 排查耗时 | 约 1 小时 |
几个经验:
- 系统冻住不一定是软件问题。频繁卡死先看事件日志里有没有 Event 153(IO 重试),有的话大概率是硬盘通路的问题。
- SMART 的 UDMA_CRC_Error_Count 非常有用。这个值只要不是 0 就说明 SATA 传输通道有问题,不管是线缆、接口还是控制器。正常使用的硬盘这个值应该永远是 0。
- PCIe 转 SATA 扩展卡(ASMedia 106x)本身不一定是问题。通过对比同一张卡上两块盘的 SMART 数据,可以区分是卡的问题还是线的问题。
- smartmontools 是 Windows 上也能用的好工具 。
winget install smartmontools.smartmontools就能装,比 HD Tune 适合命令行排查。 - SATA 线是消耗品。特别是机箱里盘多、线密集的情况下,线缆被挤压或弯折后接触不良很常见。家里多备几根没坏处。