当安装 SD 卡时,笔记本电脑休眠/挂起是否不安全?

当安装 SD 卡时,笔记本电脑休眠/挂起是否不安全?

多年来,我一直目睹我的戴尔笔记本电脑在从休眠状态恢复时死机,此时 SD 卡插入插槽并安装。当然,我花了一些时间才弄清楚,但现在我可以 100% 准确地重现该事件:每次我的笔记本电脑从休眠状态恢复 — — 我对电源管理器进行了编程,当剩余时间超过 8% 时 — — 当插入并安装 SD 卡时,它会冻结(锁定),我只能硬关闭它……当然,每次都会从我的 SD 卡上丢失不少数据。我一次最多可以丢失数百兆字节。

最近我碰巧用 12 V 电池给一台电脑供电。有一次我发现它在从我的 USB 密钥运行时完全冻结,我已将 USB 密钥设置为启动设备 [以运行 Linux Mint]。后来我意识到电脑已经冻结,因为我忘记插入电源充电器,电池电压下降到 11.5 伏左右。我还发现我用来启动电脑的 USB 密钥分区在此过程中已完全损坏且无法恢复。

我也读过很多次树莓派用户(比如我)报告了 SD 卡损坏,后者由于(低)电量问题。在我读到这个解释之前,我(也)注意到我的 Raspberry Pi SD 卡的可用大小由于未知原因而显著减少,所以我想到了这个解释。

结论

所以,简而言之,我已经通过惨痛的经历了解到使用闪光设备时冒烟会带来的致命后果。


我只是怀疑这是一个电气问题,所以我基本上是在寻求确认。我过去遇到过几个 SD 卡驱动程序问题,这些问题导致(至少)Linux 遭受各种错误,包括系统冻结,尤其是当这些驱动程序还很年轻时,即不像今天这样成熟。随着时间的推移,我开始怀疑我的笔记本电脑冻结(在上述条件下)是否可能是由于电池电量有点“低”时硬件的反应。

我的问题是我的分析有道理吗,还是真的是其他问题,比如某些笔记本电脑的电源管理设计不佳,等等?

如果这是正确的,那么不应该建议笔记本电脑用户在使用 SD 卡时插入电源吗?(尽管它总是最好尽可能使用主电源


注意:我在这里问这个问题是因为我怀疑我一直认为的 Linux SD 卡驱动程序中的错误实际上是一个电子(工程)问题。

答案1

警告:这里没有 Linux 专家

卡损坏可能是由于休眠过程未正确断开卡或没有等待足够长的时间让卡完成写入周期,此时数据可能仍在 PC 缓存中。当在写入操作期间发生不良事件(例如电源故障)时,闪存卡的硬件损坏更为常见。

至于 PC 冻结,我怀疑某些操作系统组件存在一些问题。可能某些驱动程序不够强大,无法处理休眠过程中的硬件故障。如果某些非必要硬件组件(如 SD 卡读卡器)发生故障,操作系统不应该简单地冻结或崩溃(这是操作系统的作用之一)。诚然,休眠过程并不常见,因此也许编写驱动程序的人处理了关机过程中的异常事件(最常见的“特殊”情况),但忘记或忽略了休眠过程。

PS:我也见过很多视窗PC 在从休眠状态唤醒或休眠期间会冻结,因此我通常会默认禁用 Windows 机器上的该功能(相反,待机在大多数情况下工作得非常好)。我怀疑休眠期间与硬件的交互并不是 PC 行业的主要关注点。

答案2

您在 SD 卡上使用哪种文件系统?我猜是 fat32 或类似的。我认为问题在于 SD 卡本身等待某些延迟事务,对操作系统来说是透明的。(报告为好像是由 SD 卡向操作系统完成的)该事务因断电速度太慢而变得疯狂。(我的意思是断电的瞬变可能不一定很快,这使得它容易脱离定义的状态。这可能是在休眠请求时以某种方式提交的,但由于硬件延迟对文件系统是透明的,它不会暂时阻止断电。我的猜测是,如果您使用 ext4 或 btrfs 并且屏障选项处于开启状态(默认情况下已经处于开启状态),它可能会等到进入安全状态。

是否有可能恢复该事件的内核消息?


我尝试使用 Dell Studio 14 笔记本电脑复制该问题,该笔记本电脑在 USB 闪存盘上运行 archlinux(3.18 vanilla 内核),还安装了 SD 卡的 2GB ext2 分区。使用“systemctl suspend”暂停到 RAM。成功唤醒。

挂起并不是一个简单的过程,只需告诉内核挂起即可,这只是挂起脚本要做的最后一件事。不同的挂起脚本的准备过程可能不同。有关更多信息:https://wiki.archlinux.org/index.php/Power_management/Sus​​pend_and_hibernate

相关内容