我使用硬盘已经 8 年了。每次停电,或者出于某种原因,我不得不通过关闭电源或按下 PC 机箱上那个花哨但危险的重启按钮来强制关闭计算机时,我都会心跳加速,害怕接下来会发生什么:Windows 会在启动期间或启动后给我一个错误,提示我的计算机需要维修,还是会正常启动?70% 的情况是第一种情况。
到目前为止,我已经使用 SSD 大约 9 个月了(使用 HDD 的 Visual Studio 2022 启动速度太慢,最终迫使我购买了 SSD),在此期间,计算机大约发生过 8 次突然意外关机,但都没有导致 Windows 启动错误或关键系统文件损坏(按照习惯,我每次都尝试 SFC 和 DISM 以确保操作系统正常运行)。
计算了事件的数量并感到惊讶的是,没有一个事件迫使我修复或更改我的 Windows 安装,我在网上搜索了一下,但遇到的所有主题都是关于 SSD 的耐用性和类似主题,但与我所描述的无关(顺便说一句,我很懒,没有在网上挖掘太多),所以我决定自己开始一个关于它的话题。
那么,有谁知道并愿意为大家解释一下为什么会发生这种情况吗?是不是因为 SSD 的快速特性,在断电之前有足够的时间完成 I/O 周期,从而避免文件损坏?
我认为还值得一提的是,我将 GPT 与 SSD 一起使用,但始终将 MBR 分区表与 HDD 一起使用。
答案1
固态硬盘是容易因停电等原因造成损坏(https://arxiv.org/pdf/1805.00140.pdf) 正是因为它们的存在,制造商才实施了在硬件或软件层面或两者上从中恢复的机制。
硬件:通常采用超级电容器的形式,一旦检测到断电,它就会存储足够的电量以正确关闭 SSD(https://transcend-info.com/embedded/technology/power-loss-protection-plp)。
软件:类似于 Windows 以某些脏标志的形式检测未正确卸载的卷,SSD 检测到它未正确关闭并将使用某些日志机制等恢复到一致状态。
换句话说,虽然旋转 HDD 上因断电而导致的损坏主要是文件系统及其自我修复能力的问题,但 SSD 会尝试在驱动器固件级别检测并处理断电的后果。
https://www.kingston.com/en/blog/servers-and-data-centers/ssd-power-loss-protection
答案2
SSD 速度快得多。与 HHD 相比,SSD 可以即时读取和写入。好吧,不是即时的,但与 HDD 相比,它是即时的。由于其性质,驱动器在写入时被捕获的可能性很小。它只是将 RAM 用作磁盘驱动器。
答案3
SSD 相对于 HHD 的主要优势在于可以避免因断电而导致数据损坏,这仅仅是因为使用了 FTL,Flash 转换层。
在写入过程中,硬盘驱动器的某个扇区会受到损坏,而磁盘旋转时,实际将该扇区写入介质的时间就是这个时间。硬盘驱动器的(长)访问/寻道时间与这个问题无关,因为在实际写入之前,不可能出现损坏。但是,一旦找到扇区并开始写入,写入操作必须完成,并以写入 ECC 结束,否则无法读取和验证该扇区。这是硬盘驱动器的一个众所周知的缺点。
写入 SSD 逻辑块(又称扇区)的时间在很大程度上取决于先前擦除的逻辑块的可用性。最坏的情况描述为写入放大问题。
但无论将一个逻辑块写入NAND闪存实际需要多长时间,SSD都不必在写入真正完成之后才将这个新写入的块暴露给主机,然后映射到指定的LBA。
换句话说,HDD 在实际物理扇区上执行写入操作,因此漏洞间隔相当长。
而 SDD 具有 FTL,并将在未映射/备用块上执行写入操作。只有在写入操作实际完成并成功后,FTL 才会将指定的 LBA 从旧/陈旧块重新映射到新写入的块。执行此 LB 地址简单重新映射的短暂时间是获取损坏的 SSD 块的漏洞间隔。但电源故障逻辑可能会努力避免映射表的任何损坏。
答案4
这只是纯粹的巧合。
任何现代操作系统都有一个称为写缓存这意味着操作系统不是立即刷新需要写入磁盘的数据,并且可能会等待一段时间再执行此操作,以提高性能并优化文件写入(例如,避免碎片化)。
如果你强制重置你的电脑,它会使不无论您拥有哪种类型的存储,所谓的“写入缓冲区”都将丢失。
从理论上可以缓解(但不能完全解决)这个问题的原因是 SSD/NVMe 的寻道时间实际上为零,这意味着与 HDD 相比,Windows 有更大的机会成功将数据刷新到磁盘。
您可以Windows Disk write cache
使用设备管理器完全禁用它,这样可以减少出现此问题的可能性(但不能完全解决问题,因为数据刷新仍然不是即时的)。这样做可能会在高负载操作期间对 SSD/NVMe 的性能产生负面影响。