一。问题现象:电脑上有一块闪迪500G pcie3.0的nvme固态硬盘,当前启动盘,还有一块2TB的机械硬盘作为数据备份盘。升级之前一直用的好好的,为了能正常用上Codex Cli,就给升级到了21H2,结果发现电脑断电再开机正常认nvme,但是重启后就认不到了。要反复多重启几次才能认到。

二。解决过程:先是怀疑CMOS电池是否没电了,电脑拔掉电源 线,把cmos电池给抠下来放了一会电再安上,确实能认得到了。但是每次启动都报一个BIOS Check Sum Error,校验失败的框。问了豆包,怀疑是电池没电了,花了10块钱买了一个换上,问题依旧。一会又怀疑是BIOS版本太老,让我刷BIOS,结果主板厂商还没提供新版本。

三。静下心来一想,这肯定是21H2的某些电源管理策略有关。随即去微软官网找答案,功夫不负有心人,果然发现有几个节电方面的参数,试着修改了一下,问题解决了!
最后在cmd中修改了3个系统nvme驱动相关的参数,让nvme空闲时不要进入低功耗状态。
第一条:
bash
powercfg -setacvalueindex scheme_current sub_disk d639518a-e56d-4345-8af2-b9f32fb26109 0
修改的是:Primary NVMe Idle Timeout
第二条:
bash
powercfg -setacvalueindex scheme_current sub_disk d3d55efd-c1ff-424e-9dc3-441be7833010 0
修改的是:Secondary NVMe Idle Timeout
以上两个命令把两个 Timeout 都设置成:0,核心目的就是阻止/避免 StorNVMe 因空闲超时把你的 SSD 转入对应的低功耗 F-State。微软官方文档明确列出了这两个 StorNVMe 电源设置。
最后,再运行第三条:
bash
powercfg -setactive scheme_current
让当前电源方案重新应用这些参数。