为什么不建议“强行”关闭计算机(电源开关)?[重复]


13

众所周知,现在不应该使用电源开关关闭计算机。但是,为什么呢?这是过去的体系结构遗留下来的神话吗?

是否仅是为了防止关闭时正在写入的数据被破坏(奖金:如何准确地破坏它?)?我敢肯定,断电后硬盘驱动器的阅读提示不会再在磁盘上崩溃(否则,我现在将没有HDD)。

更精确地讲,使用电源开关对计算机重新通电是否会使计算机更快磨损甚至损坏,为什么?(仅适用于硬件)?


2
对于消费类设备,实际上是相反的情况:使用MS-DOS,您只需拔下插头即可。Windows接管时,您必须学会正确关闭。

SSD可能是类似于HDD的问题。他们通过擦除大块中的数据并重新写入新数据来进行写入,因此,如果对该块执行的操作未完成,则将导致数据损坏。操作系统可能很聪明,可以从中恢复,但不是“好”,最终您可能会遇到不可恢复的错误。
Spehro Pefhany,2015年

3
让我指出的“拔插头”,而技术上是正确的,通常是潜在的副作用大大夸大了。我“无情地”关闭了我的计算机无数次。我从未遇到过文件损坏或硬件问题。从来没有。在超过15年的时间里。
Thomas Bonini 2015年

5
@AndreasBonini“我从未遇到过文件损坏或硬件问题。” 只要是一个学究,你从未有过损坏的文件,你已经注意到了,或者有大的影响(例如,你确定没有持续写入日志文件或临时文件已损坏?),或者不能修复了系统启动时遇到的错误(“系统未正确关闭,正在检查错误...”消息)或完全停止运行的硬件(例如,大量硬件,尤其是存储设备)内置了检测和修复机制。解决损坏的零件)。
约书亚·泰勒

1
实际上,对于一台现代计算机,我可以这样总结一下:假设您已经保存了所有文件,则在大多数情况下电源故障最有可能被接受,尽管这可能会稍微缩短电源的寿命。告诉您不要拔出计算机电源,这永远不是一个好主意。例如,Windows更新或刷新BIOS。中断这些进程可能会使您的OS甚至硬件无法运行。故意中断核心更新可能是您可能承担的最大风险。
phyrfox

Answers:


18

它纯粹是软件。

当您写入磁盘时,它不会直接进入磁盘,而是进入缓存,然后在以后的某个时间点将缓存复制到实际磁盘。当高速缓存已满并且需要留出一些额外的空间时,或者仅在计算机没有执行其他重要操作时,或者经过专门指示。

关闭过程中的最后一项操作是将缓存刷新到磁盘。

如果仅关闭电源,该高速缓存中的数据将丢失。结果,您的数据可能会损坏。

关闭过程中发生的另一件重要事情是,指示所有正在运行的进程退出,这时关闭所有打开的文件并自行清理。


3
可能还有一些硬件问题。如果只是切断电源,读/写头可能会“浸入”并划伤磁盘表面。同样,如果移动计算机或使其受到冲击,任性的头部可能会损坏表面。另一方面,当正确断电时,磁头停放在既不会损坏也不会受到损坏的位置。
Baard Kopperud 2015年

6
@BaardKopperud也许有40年历史的磁盘,但不是现代磁盘。不再需要“停放”磁盘头。
Majenko

2
@Majenko好吧,40年有点夸张了……如果电源也被切断,则某些特殊的1990年代的磁盘和CD-ROM容易发生磁头碰撞-可能是由于振动/阻尼问题-我经历了自己13岁GB驱动器,之后看碟片时所看到的东西并不漂亮。另外,我在CD音频播放器销毁CD上也遇到过类似的问题。虽然我还没有那么麻烦从那时起,20岁的装备是不是那个罕见的如服务器或学院的环境,所以我用作何感想在这一个同意; 它不一定纯粹的软件。

8
@Majenko大多数人。
保姆2015年

2
回到步进电机驱动器被统治的时候,人们会(理想地)将硬盘驱动器停放(将磁头放在不可写的圆柱体上),然后再关闭(通过物理电源开关)。Park软件还将清除写缓存。伺服驱动器消除了停车需求,因为当断电时它们增加了缩回机构,因此您在停电前暂停了几秒钟。在气垫使磁头沉降到地面之前,磁头将缩回到驻车缸。数年之后,我们才真正有了一个“软”电源关闭按钮。从历史上看,这始终是硬断电。
Brian Knoblauch

5

在引导过程中,计算机的文件系统将被标记为“脏”。在关闭期间,所有缓冲区都将清除到磁盘,并且磁盘上的数据与操作系统认为的样子相同。磁盘随后被标记为“干净”。

在下次启动时,将检查该标志。如果为“ clean”,则系统将启动;如果为“ dirty”,则将扫描文件系统的完整性。扫描文件系统可能要花费很长时间,所以这就是为什么您不希望关闭电源的原因。真正的问题出现在文件系统扫描引发不可恢复的错误时,这些错误意味着您丢失/损坏了数据。现代文件系统使用一种称为“ journalling”的技术来最大程度地减少不可恢复错误的机会。

在我看来,硬件真的不能少关心硬关机。


3

现代计算机具有许多级别的数据存储缓存。这是因为大多数存储设备使用较大的数据包进行读写时速度更快。操作系统将在RAM中保留写入一段时间。然后将它们发送到硬盘。它们在这里临时存储,同时等待硬盘驱动器到达正确的扇区。然后将它们写成。如果未彻底关闭系统电源,则整个链上的数据都可能丢失。


2

这实际上既是软件问题,又是硬件问题。

如先前在其他答案中所述,当前的体系结构使用许多缓存机制,以加快处理速度。断电时,即使您认为已将其写入文件,也会丢失尚未写入非易失性存储器的内容。这是数据丢失。这也可能导致数据损坏,因为某些文件系统的写入顺序与上述程序不同,以提高I / O速率。我听说有人禁用ext4中的乱序写操作以使某些软件文件损坏防护机制仍然有效,而ext4开发人员告诉此类程序应使用fsync来确保文件系统行为

还有硬件问题。残酷的断电可能导致过电压或过电流,这主要是由于某些电气组件(主要是电动机)的感应行为所致。但是,设计良好的硬件应能够防止后续损坏。它的价格要贵一些,但是,如果您购买的计算机具有一年的保修期(甚至是可选件),或者至少可以处理客户退货,那么制造商增加反激二极管的成本要比处理客户退货的成本低。因此,除了非常便宜的电源外,我在这里并不担心。

值得注意的是,今天避免残酷关机的原因与30年前的原因有所不同。30年前,文件系统对电源故障非常敏感,因此您可以破坏文件系统本身。今天,从理论上讲,您可能会损坏文件,而不是整个文件系统。实际上,如果您想要高端的最新性能,则将切换到SSD。固态驱动器使用托管闪存,通常是多层单元NAND闪存(这意味着双层单元),有时是三层单元。使用这些技术,由于在写入过程中断电,您可能会损坏正在写入的页面,但也会破坏同一块中的一个或两个其他页面。在文件系统级别,一个文件的修改可能会损坏另一个文件,甚至是文件系统数据。由于磨损均衡,垃圾收集,以及其他正确和重定位机制,即使文件系统不需要来自SSD的任何活动(也称为后台操作),也可能发生写入,因此从文件系统的角度来看,损坏是不可预测的。为了避免这种损坏,一些SSD制造商在其SSD上增加了一个电容器,以便在检测到功耗时终止闪存上正在进行的任何操作(这大约需要10ms的电源)。SD卡和USB闪存驱动器具有相同的约束,但不能具有此类电容器。一些SSD制造商在其SSD中添加了电容器,以在检测到功率损耗时终止正在进行的闪存操作(这大约需要10ms的电源)。SD卡和USB闪存驱动器具有相同的约束,但不能具有此类电容器。一些SSD制造商在其SSD中添加了电容器,以在检测到功率损耗时终止正在进行的闪存操作(这大约需要10ms的电源)。SD卡和USB闪存驱动器具有相同的约束,但不能具有此类电容器。

简而言之,设计良好的硬件通常可以防止功耗,但价格更高。软件大部分时间都是省电的,但是有时其他软件的发展可能会打破假设。任何进行更便宜的设计或最小化设计的尝试都可能降低使设计抗功耗的能力。也很难知道您的计算机是否始终能够抵抗残酷的功耗。


为什么闪存驱动器不能具有此类电容器?成本?
恢复莫妮卡-ζ-15年

此功能需要为NAND芯片和内部控制器维持10ms的电源。更高的充电容量需要更大的物理空间。这不适合SD卡,这绝对不适合microSD卡。在USB闪存驱动器上,这取决于闪存驱动器的实际形状。
哈森2015年

2

电气开关将瞬态电压输入电源。(瞬态电压极高,宽度极窄。实际上,根据我在四年制电子学课程中的定义,瞬态电压是极窄宽度的无限电压。)如果没有足够的滤波,则这些尖峰会损坏电子器件。机械开关也容易响铃。振铃是电源线上的振荡,可能引起类似的问题。

尽管上述许多答案对于软件都是正确的,但也必须考虑电子硬件。


4
现代PC电源上的电源开关不会直接切换电源,而只是控制电源。关于瞬态等等,“强制关闭电源”(通过按住电源开关足够长的时间)应该与CPU指示的关闭电源没有什么不同。而且,即使您拔下插头,正确设计的现代电源也不应产生危险的直流瞬变。
greggo,2015年

@greggo正确。就现代电源(ATX-24标准)而言,拔插头关闭电源的计算机主板完全相同
AStopher

我想有必要在PS本身的拨动开关和PC正面的待机开关之间进行说明。是的,备用开关不会直接供电,但是拨动开关与拉动电源线相同((可能是在触点/弹簧的机械部分中进行了更好的硬件过滤)。)谢谢格雷格(Greggo)指出这一点!
理查德·豪斯2015年

0

不只是计算机!不执行“安全删除”序列而拔出USB设备(如闪存驱动器)的效果与某些PC相同,即,序列的写入部分可能未完成,并且闪存内容可能已损坏。


USB设备可以(通常使用并且没有从数据端口以外的其他地方获得额外的电力)不会因从系统中拔出而损坏(其端口设计为“可热插拔”,但是如果您由于未将缓存写入磁盘而做了
LvB 2015年

0

缺少的答案仍然是当前的答案:计算机在强制关机时(例如在“拔下的电源线等”中)会损坏电子设备。(这不适用于电源开关,因为它会执行“安全”的电源循环,不会损坏电子设备,对稳定的HDD状态不利,或者会导致数据丢失,如上所述)。

强制断开电源时会发生突然的电涌(认为是“尖峰”),在极少数情况下可能会超过滤波器极限/ IC击穿电压。如果在CMOS或其他内存中发生这种情况,则可能会永久损坏“单元”或损坏“单元”上的数据。如今这已是一件罕见的事情,大多数系统对此都有对策(可能会失败)。

如果使用电机(例如磁盘驱动器),则这种情况尤其如此。由于降速有时会导致其一条线(+ 12,+ 5,-5,0)出现尖峰。这不一定是电动机本身的电源线(由于“重影”)。

低于5伏的信号很少这样做,因为大多数IC设计为以5伏信号工作,尽管有些处理器利用3.3V作为其最大电压,但大多数情况下仍会屏蔽与5 V相同的信号。

@samuel,是的,我是。但是工作电压会指示您可以“预期”哪种感应尖峰(隔离器/保护器件或数量)


2
建议使用“。” 键盘上的键非常少用,如果没有它,您的帖子将变得很有趣
peterh-Reinstate Monica 2015年

1
工作电压无关紧要,您在说的是电感尖峰,那里是大电流。
塞缪尔

在现代计算机中,不可能通过“拔出插头”来损坏电子设备。
AStopher

@cybermonkey现代是什么意思?我的sister子通过按配电盘上的开关杀死psu或主板。这台计算机建于2005
。– 287352

@cybermonkey恐怕那根本不是真的,你可以,而且确实会发生。它不像过去那样普遍,但这归功于更好的设计和保护措施。这些并不能解决问题,并且有环境因素以及较差的(廉价)硬件导致了这些问题。或当系统扩展到极限时,就会发生这些问题。在数据中心和服务器运营商中众所周知,这些事情很重要。仅对于未充分利用的“消费类”硬件,我才称“安全”来拔掉插头。并警告您仍然可能发生损坏!
LvB
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.