运行时随意拔掉计算机电源会导致数据丢失

运行时随意拔掉计算机电源会导致数据丢失

我来自奥地利,我们和德国每天都会播出一档糟糕的科学节目。我称之为“一知半解”。这个节目叫做“伽利略”。

他们制作了一个打破计算机神话的视频并问道:“拔掉计算机电源会损坏数据吗?”

然后他们启动了一台装有 Vista 的机器,开始复制一些文件,并随机拔掉电脑电缆,整个过程大约 50 次。

在他们的计算机继续正常启动后,他们只是说“什么都不会发生,您的数据或计算机不会损坏”。

当然,他们将文本编辑器等运行程序中未保存的数据排除在外。

  • 我问自己:他们的“计算机专家”到底在说什么?你无法通过拔掉电缆 50 次来判断这是否会损坏你的计算机。

  • 运行时拔掉电缆是否会导致数据丢失(正如节目主持人所说)?

我在重置期间曾经破坏过我的 Windows 注册表,所以我很好奇。

答案1

如果您拔下计算机的电源插头,这与您关闭或简单地重置计算机是一样的。在现代文件系统(如 NTFS)上,这不会造成问题。NTFS 称为日志文件系统,这意味着当不正确地卸载驱动器时(例如,如果您关闭计算机或操作系统意外崩溃),它将在重新启动操作系统时恢复到稳定的位置。您正在复制的文件可能不完整,但除此之外不会丢失任何数据。

在较旧的非日志文件系统(如 FAT)上,操作系统无法自动修复文件系统。这就是 Win98 崩溃时您必须运行 Scandisk 的原因。这里常见的问题是某些数据已写入磁盘,但这些数据不属于任何文件,但仍在磁盘上分配空间。

答案2

电源循环后,已完全保存的数据可以正常使用,但部分保存的数据可能不行。

理论是,随着现代日志文件系统数据写入的方式使得对文件系统的任何更改都可以回滚(如果您在写入大型文件时崩溃,而无法在日志的简单界限内完成)或继续前滚(即文件重命名或删除),这样系统就可以处于操作之前的状态或尽可能接近预期状态。这个系统并不是万无一失的。

实际上,这种随机断电可能不会导致文件系统出现问题(由于日志记录),但在某些关键操作(例如调整分区大小或格式化)期间的随机电源峰值或异常行为可能会使系统陷入非常糟糕的状态。

假设这些“专家”使用了久经考验的可靠方法,即启动机器,等待硬盘指示灯停止闪烁(即系统实际上没有使用硬盘),然后在最有可能造成损害时切断电源。如果我进行测试,我会执行以下操作:

  1. 删除尽可能多的内存,以便使用页面文件难的
  2. 启动一些大型视频或数据处理任务以保持硬盘正常运转难的
  3. 启动一些随机程序并运行它们(为了好运)
  4. 尽可能多地保存程序数据
  5. 然后在此列表中的随机点处切断电源,并在重新启动时查看哪些幸存下来。Windows 可能会没问题,但某些数据可能不一致。YMMV

为了获得最佳效果,请尝试调整 Windows 分区的大小,然后切断电源,看看您的机器是否正常。

答案3

我不在乎“专家”怎么说,这仍然是一个愚蠢的想法。

Can unplugging the cable during runtime cause data loss 

当然。如果您正在执行任何非原子文件复制操作、磁盘转换、修改分区表、下载文件……

不过,这还不是我遇到过的最糟糕的伪科学案例。英国有一档节目警告不要把钻石放进烤箱,因为“因为它们是由碳构成的,所以它们会变成二氧化碳然后飘走!”

答案4

除了可能的硬件损坏之外,数据的安全性实际上取决于您使用的文件系统,与流行的神话不同,日志文件系统不是数据丢失的灵丹妙药,它们可能恰恰相反。原因是日志记录本身只是意味着文件系统的完整性受到保护,并不意味着数据的完整性受到保护。例如,使用 Linux 上的 XFS,在应用程序写入数据和数据实际到达磁盘之间有一个非常大的窗口,如果在这期间发生某些事情,数据就会丢失。这本身并不是那么糟糕,但结合 POSIX 在文件系统语义方面允许的一些怪癖,您会遇到这样的情况:当应用程序用新配置文件替换旧配置文件时,您无法保证在崩溃的情况下两个文件都能幸存下来。相反,您可能会得到一个 0 字节的文件。这不是百万分之一的事故,它基本上发生在普通桌面系统崩溃到某个随机配置文件的每秒一次(.gconf 数据库很容易成为受害者)。

其他文件系统(如 ext3)不会出现此问题,因为它们的语义略有不同,或者缓存窗口小得多。早期版本的 Ext4 和 reiserfs 也存在此问题,但目前已得到修复。

长话短说:已存在于磁盘上且未被触及的数据将保留下来,但是,当您使用错误的文件系统时,被修改的数据很容易被擦除,而对于其他文件系统而言,数据则非常安全。

相关内容