迅雷下载导致 Windows 11 频繁卡死?一根 SATA 线的锅

背景

家里有台组装的桌面工作站,平时用来跑 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

发现了两个关键线索:

  1. Event ID 41(Kernel-Power):系统未正常关机就重启了------就是卡死后强制断电
  2. 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 小时

几个经验:

  1. 系统冻住不一定是软件问题。频繁卡死先看事件日志里有没有 Event 153(IO 重试),有的话大概率是硬盘通路的问题。
  2. SMART 的 UDMA_CRC_Error_Count 非常有用。这个值只要不是 0 就说明 SATA 传输通道有问题,不管是线缆、接口还是控制器。正常使用的硬盘这个值应该永远是 0。
  3. PCIe 转 SATA 扩展卡(ASMedia 106x)本身不一定是问题。通过对比同一张卡上两块盘的 SMART 数据,可以区分是卡的问题还是线的问题。
  4. smartmontools 是 Windows 上也能用的好工具winget install smartmontools.smartmontools 就能装,比 HD Tune 适合命令行排查。
  5. SATA 线是消耗品。特别是机箱里盘多、线密集的情况下,线缆被挤压或弯折后接触不良很常见。家里多备几根没坏处。
相关推荐
名字还没想好☜8 小时前
Python itertools 实战:用 groupby、chain、islice 优雅处理大数据流
linux·windows·python·迭代器·itertools
ziguo112211 小时前
深入浅出 C/C++ 数据类型:从入门到踩坑
linux·c语言·c++·windows·visual studio
阿扬ABCD12 小时前
ipmitool的Windows版本编译
windows·驱动开发
王维同学15 小时前
Credential Provider、Filter 与 PLAP 的 CLSID 枚举
c++·windows·安全·注册表
寒水馨17 小时前
Windows下载、安装 Codex CLI(附安装包codex-x86_64-pc-windows-msvc.exe)
windows·rust·codex·终端工具·自动化编程·codex cli·ai编码代理
其实防守也摸鱼20 小时前
镜像校验完成iso完整操作流程(Windows 环境,适配 Ubuntu 22.04 / 24.04)
linux·服务器·windows·学习·ubuntu·教程
像风一样自由20201 天前
从本地到公网:Windows 下使用 Cloudflare Quick Tunnel 与 Natapp 联调 FastAPI
windows·fastapi
2601_960906721 天前
科技“无人区”跋涉,难度高、不确定性大
windows·macos·pycharm·myeclipse
会飞的大鱼人2 天前
一文搞懂 Java HashSet:把它想成游乐园里只允许一次入场的盖章名单
java·开发语言·windows
ziguo11222 天前
C/C++ 错误处理全解:从 errno 到 C++ 异常
linux·c语言·c++·windows·visual studio