当 PC 挂起到 RAM 时更换硬件是否安全?
具体来说:
- 拔下外部硬盘而不丢失数据吗?
- 您能更换驱动器或 PCI-express 卡等组件吗?(我不知道为什么需要这样做,但我很好奇)
我对 Linux 特别感兴趣,但我不知道操作系统是否重要。
答案1
当 PC 挂起到 RAM 时更换硬件是否安全?
不,因为Toryan 已经在他们的回答中写道,处于睡眠模式的电脑仍然处于通电状态。
具体来说:你能拔下外部硬盘而不丢失数据吗?
如果操作系统在进入睡眠模式之前刷新了磁盘缓存:可能是的。
如果未完成此操作并且您仍在对磁盘进行更改:否。
您能更换驱动器或 PCI-express 卡等组件吗?
在已通电的消费类主板上更换 PCI-e 卡绝对不是个好主意。即使忽略在已通电的计算机上插拔卡时发生短路的风险,您也会遇到初始化问题。通常,计算机会启动、检测硬件并配置硬件以供使用。当操作系统已启动时,所有设备都已配置好。添加新硬件将需要此新设备跟上。
这是可能的,但你的操作系统需要支持它。(例如,这就是为什么你可以插入 Express Card、Thunderbolt 或 USB 设备)。我对消费级操作系统和添加支持表示严重怀疑,更不用说移除PCI-e 卡。
SATA 和 SCSI 驱动器是个例外。SCSI 支持热插拔。AHCI 模式下的 SATA 也支持热插拔(AHCI 是普通的 SATA 模式,与古老的 IDE 模拟模式相反)。
(我不知道为什么需要这个,但我很好奇)
对于磁盘,答案很简单。无需关闭服务器即可更换故障驱动器。这与 RAID 结合使用效果很好。对于 SoHO 任务:只需关闭电源即可。
我对 Linux 特别感兴趣,但我不知道操作系统是否重要。
操作系统很重要,因为它需要支持才能实际使用新设备。或者支持移除它们。这是您在睡眠模式之前需要做的事情。(非常类似于在拔下 USB 笔式驱动器之前需要使用安全移除)。如果您的 PC 已经处于睡眠模式,那么您已经太迟了。
答案2
不,在电脑仍处于通电状态(即处于睡眠模式)时开始摆弄机箱内部绝对不是个好主意。最好的情况是电脑无法从睡眠状态唤醒,最坏的情况是你可能会损坏你正在更换的组件。
一个特殊的例外是服务器中的热插拔组件,例如硬盘、电源等。
(当然,您仍然可以连接/断开 PC 开机时通常会连接/断开的任何设备,例如 USB 设备。只需像正常操作时一样小心即可。)
答案3
注意:专门针对 PCIe 设备进行回答
理论上,即使在未设计用于 PCIe 热插拔的主板上,也应该可以在挂起(S3 睡眠或更深)状态下安全地更换 PCIe 设备。假设您事先卸载了使用这些设备的任何驱动程序,这样它们就不会对丢失的设备感到惊讶,并且您的操作系统已正确配置为 PCIe 热插拔。
PCIe标准为PCIe设备定义了多种电源状态,其中断电状态为D3冷状态:
5.3.1.4.2. D3冷态
当主电源被移除时,功能将转换为 D3冷状态。上电序列及其相关的冷复位将功能从 D3冷状态转换为 D0未初始化状态。此时,软件必须对功能执行完全初始化,以便重新建立所有功能上下文,完成将功能恢复到其 D0活动状态。
(请注意,这不包括 PCIe 触发唤醒事件(如局域网唤醒)的涓流电源。但即使是“正常”的 S4/S5 断电系统仍会提供这种涓流电源)
虽然 S4“休眠”或 S5“软关机”睡眠(即整个计算机关闭)会强制所有设备进入 D3冷睡眠,但 S3“挂起”睡眠并非如此。但是,Linux 将在 S3 暂停时将 PCIe 主机端口置于 D3热状态,强制连接到端口的所有下游设备进入 D3热(通电)或 D3冷(无电)状态。(Windows 做了类似的事情)
拥有单独的 D3热状态和 D3冷状态的目的是允许枚举处于 D3热状态的设备。但是一旦主机端口设置为 D3热状态,与下游设备的通信就会完全切断,这意味着从软件的角度来看,下游设备处于 D3冷状态(但不一定是电气状态)。
由于 D3 状态的一个目标是省电,因此最佳省电方式是断电。因此,进入 D3 时主机端口的最佳实现方式包括移除总线电源(即下游设备以冷电方式进入 D3 )。
由于我无法亲自查看任何主板原理图来验证,因此我只能猜测主板将实施该“最佳”策略。
但它们也可能采取节省成本的路线,将电源轨直接连接到 PSU,在这种情况下,只有当 PSU 处于挂起状态(S4 睡眠或更深)时,电气 D3冷态才有可能。
总结:理想的节能实施方案将关闭 S3 挂起到 RAM 上的 PCIe 设备和端口,这样可以安全地添加或移除设备。但成本节约实施方案可能并非如此。
答案4
更通用的理解方式是,设备有两种类型:热插拔设备和非热插拔设备。这两种设备类型都具有与此相关的硬件和软件属性。
从软件角度来看,设备是否热插拔并不重要。如果您移除设备而操作系统没有预料到,那么就会发生不好的事情。最好的情况是数据损坏。最坏的情况是操作系统崩溃。有些操作系统有断开某些设备或将其置于静止状态的方法,以便移除设备。即使是设计为热插拔的设备也必须在物理移除之前在软件中关闭。一些设备(例如声卡)没有任何内部保存的状态,可能无需关闭即可移除,但如果它们当时正在使用中,操作系统将不高兴,并且可能会至少弹出错误。
同样,从软件角度来看,添加设备需要操作系统支持。最坏的情况是,操作系统将忽略新设备。在某些情况下,可以告诉操作系统手动探测添加的设备。如果操作系统对某种设备类型具有完整的热插拔支持,它将在设备添加并启动后立即自动检测它。一些操作系统具有专门用于处理热插拔设备自动初始化的基础设施。请注意,软件热插拔支持通常独立于硬件热插拔支持。
从硬件角度来看,添加或移除非热插拔设备非常危险。在物理添加设备时,可能会使电源引脚短路,从而损坏设备和电源。插入过程中,任一设备上的静电都可能转移,导致任一设备损坏。数据引脚可能先于某些电源引脚连接,从而允许电流流过非设计用于传输电源的引脚。即使没有发生这种情况,数据引脚也可能在设备完全初始化之前变为活动状态,从而可能造成损坏。
如果设备设计为可热插拔,则上述所有问题都将得到缓解。首先,物理接口被锁定,因此不能反向插入,并且物理导轨强制引脚在进行任何电气接触之前正确对齐。一种常见的缓解策略很容易被发现并识别出设备可能可热插拔,即一些引脚会比其他引脚长。通常,接地引脚最长,因此它首先接触,允许任何静电安全消散,并使设备之间的接地电位均衡。其次最长的是电源引脚,允许设备在数据引脚接触之前通电并部分初始化。
PCI 及其变体具有允许热插拔的软件规范,但并非所有操作系统或设备驱动程序都实现此功能。虽然 pci 连接器具有部分热插拔支持,但它没有足够的物理稳定性来确保在插入卡时引脚不会交叉连接。一般来说,尝试热插拔 PCI 设备可能是一个非常糟糕的主意。但是,有一个“外部 PCI”标准应该完全可热插拔。
同样,SATA 被设计为可热插拔,但大多数 SATA 电缆在插入时不够稳定,因此不安全。如果轻轻均匀地插入电缆,这很可能可行。但是,ESATA 解决了这个问题,热插拔 SATA 磁盘托架非常常见。这些托架包括导轨,以确保驱动器均匀地插入背板,并且插入后锁定到位,以免滑出。
旧的 ATA 和 PS/2 键盘和鼠标连接器最初不是设计为热插拔的,但人们还是这么做了。有些主板不喜欢这样,会损坏。最近没有出现过这个问题。
RS232 串行除了坚固的连接器外,没有 hoplug 的任何物理缓解措施,但电气设计使其能够毫无问题地处理它。从软件角度来看,串行是一种简单的协议,并且设计用于处理噪音和中断,因此不需要额外的特殊软件配置。
USB 的设计完全支持热插拔,并且(除了少数设计不良的端口外)无需过多注意即可安全地进行热插拔。如果您真的很努力,您可能会将 USB 反插并损坏某些物理设备,但使用 USB C,即使这种情况也已修复。但是,如果您拔出 USB 存储设备而不告诉操作系统将其弹出,即使使用 USB C,您仍然可能会损坏某些设备。