意外断电会损害 Linux 安装吗?

意外断电会损害 Linux 安装吗?

我正在 Linux 嵌入式主板(运行 Debian)上开发应用程序,例如 Raspberry Pi、Beagle Board/Bone 或 olimex。主板在意外断电的环境中工作(放置 PSU 等非常复杂),并且每天都会发生几次。我想知道意外断电是否会导致 Linux 操作系统崩溃/出现问题?如果这是我应该担心的事情,您建议如何防止意外断电对操作系统造成损害?

PS. 应用程序需要将一些数据写入存储介质(SD 卡),我认为将其安装为只读不太合适。

答案1

意外断电可能会导致文件系统数据损坏 - 例如,如果某个进程已开始写入文件,但尚未完成写入,则文件可能只写入了一半。现在想象一下,如果在您进行内核升级时发生断电......

正如 l0b0 所写,使用日志文件系统会有所帮助,因为它能够跟踪实际完成的工作。除了 l0b0 链接的维基百科信息外,您可能还对以下内容感兴趣 https://unix.stackexchange.com/questions/12699/do-journaling-filesystems-guarantee-against-corruption-after-a-power-failure也一样。

作为一名程序员,你显然需要仔细考虑如何处理文件写入,以便使其成为一个原子过程(即要么完全完成,要么根本不完成,但绝不会只完成一半)。这是一个相当复杂的问题。

答案2

为了最大限度地降低操作系统损坏的可能性,最好在 SD 卡上设置单独的“系统”和“数据”分区。这样,您可以以只读方式安装“系统”分区,并在“数据”分区上使用高弹性 FS。

此外,大多数电路板的功率要求都很低,因此可以使用电池备份。Raspberry Pi 的“LiPo rider”电路板可用作基本 UPS,在断电时提供干净的关机。

答案3

这取决于

  1. 无论你使用的是日志文件系统
  2. 应用程序处理中止处理的能力有多好。

例如,考虑一个处理文件并在计算结果时将其写入另一个文件(每行输入一个输出行)的应用程序。如果在处理过程中断电,并且重新启动后运行相同的应用程序,它不能只是从输入文件的开头重新开始处理 - 这意味着输出文件将包含重复的信息。

对于一个假设的复杂系统来说,可能很难说出任何明确的信息,但是大多数稳定的 Linux 软件似乎能够很好地处理崩溃。

答案4

由于没有人提到任何特定的文件系统:更现代的文件系统(ext3、ext4、ntfs)能够比旧的文件系统(ext2、ext、fat32)更好地处理崩溃,这是因为日记

假设硬盘没有崩溃,并且不说谎,完全断电不会损坏文件系统。但是,正在写入的个别文件可能仍会损坏,因此,如果您在断电时正在更新操作系统,则仍有可能导致操作系统崩溃。

相关内容