![Linux 在断电时容易崩溃吗?](https://linux22.com/image/1375173/Linux%20%E5%9C%A8%E6%96%AD%E7%94%B5%E6%97%B6%E5%AE%B9%E6%98%93%E5%B4%A9%E6%BA%83%E5%90%97%EF%BC%9F.png)
我公司的系统管理员说,Linux 很容易因断电而崩溃。他们说 Windows 机器总能经受住断电,但 Linux 机器经常无法恢复(即您无法再启动机器)。之所以发生这种情况,是因为他们告诉我,电力公司将长期切断我们办公室的电源,因此管理员希望我在断电前关闭所有只有我可以访问的 Linux 机器。
我以为 Linux 应该很强大?
我的问题是,我是否应该运行一些进程来避免我的 Linux 机器因断电而崩溃?
答案1
Linux 是否比 Windows 更脆弱?
答案是:这取决于。
当有人在这种情况下说“无法启动”时,我将其翻译为“文件系统损坏”,而对原始问题的回答是“是”或“否”完全取决于您使用的文件系统。
Windows 不允许您像 Linux 机器一样拥有各种文件系统选择。您几乎从未见过非 NTFS 的 Windows 系统。NTFS 内置了断电时可用的功能,例如日记和文件交易一旦发生故障可以回滚。
Linux 机器可能有这个,也可能没有。这完全取决于服务器的设置方式。如果服务器使用扩展21在发生电源故障时,文件很容易损坏。与使用类似文件系统它比 NTFS 具有更多的数据完整性功能。
因此,如果您正在交谈的系统管理员只使用过 ext2 系统,那么他很可能是对的,但如果您使用过其他文件系统,那么他可能是错的。
1:很长一段时间以来,Ext2 都是 Debian 和 Red Hat Linux 的默认文件系统。现在,它已基本被 Ext3 所取代,Ext3 在数据完整性方面与 NTFS 更加相似。
答案2
不,在突然断电的情况下,Linux 本质上并不比 Windows 更不可靠。可能发生的情况是 - 无论是哪种操作系统 - 在断电的那一刻,数据正在写入硬盘上的文件系统,而(从历史上看)这可能会损坏文件系统。
解决此问题的方法是使用日志文件系统,该系统根据其写入信息的方式不受此问题的影响。大多数新文件系统 - 包括 Ext3 和 ExT4(Linux 最常见的文件系统),我相信 NTFS 也是如此。因此,只要您使用日志文件系统,就不会遇到此问题。
在启动过程中,如果你有一个数据库(我正在研究 MYSQL,Postgres 不会受到这个问题的影响),你可能会遇到与 MYSQL 数据库类似的问题 - MYSQL 通常不是特别健壮(GoogleACID 合规性 MYSQL有关本主题的信息)。如果您的 MySQL 设置不符合 ACID,您可以通过在重启时强制检查索引来解决此问题。
另一个(有些厌倦并且可能对 Windows 不公平的)观点可能是这样的 - Linux 系统比 Windows 系统更可靠(以正常运行时间和需要重启来衡量) - 因此当 Linux 系统在重启时失败时,可能是由于老化导致的硬件问题而不是软件问题 - 而由于更频繁的重启,Windows 系统故障可能会更早被检测到)
答案3
根据发行版和您拥有的文件系统,它可能或多或少地存在漏洞。如果您知道计划断电,您绝对应该手动关机(并利用这段时间进行维护,例如用吸尘器清洁系统或重新布线……对于那些计划外的断电,请使用带有 Linux 关机软件的 UPS 系统,这样您就不必担心。无论如何您都应该运行它。大多数 Linux 发行版都有一个 APCUPSD 文件,如果没有,请检查您的发行版以查看其中已有的内容或可用的内容。在依赖它之前,请确保它会干净地关闭您的系统。
答案4
我对这个问题做了一些研究,发现我的 IT 部门的说法基本上是正确的,Linux 比 Windows 更容易受到断电的影响。原因在于 Linux/unix 中的 inode 表的工作方式。由于它是一个无序列表并且不断被修改,因此重要的静态文件(如内核二进制文件)和无用文件(如临时文件)之间没有区别。这意味着关键系统文件的 inode 条目不断被重写,这显然是一个非常糟糕的设计。事实上,关键系统文件实际上比非必要文件更有可能在任何给定时间写入其 inode 条目。断电时,它往往会吹走正在写入的 inode 表的任何部分,这些部分很可能包含指向系统文件的指针。系统文件本身完好无损,但查找它们的目录已损坏。磁盘缓存使情况变得更糟,这会增加 inode 表受损区域的大小。
在 Windows 中,即使是旧的 FAT 文件系统也比此文件系统强大得多。FAT 也有一个表,但它是一个有序表,因此不会将系统文件与临时文件混在一起。通常,系统文件都位于目录的一个区域中,并且该区域不太可能经常被写入。此外,FAT 有一个备份目录,因此即使目录损坏,它也只会恢复到备份。这意味着使用 FAT,用户不太可能在断电时丢失任何文件链接,即使是临时文件。但是,对于 Linux,由于 inode 表不断被写入,因此用户几乎肯定会在断电时无法访问文件。
缓解这种情况的唯一办法就是关闭磁盘缓存。
作为 Linux 系统经常因断电而死机的证据,您只需进行网络搜索即可得到数百个类似这样的结果:
https://forums.linuxmint.com/viewtopic.php?t=232793(2016 年) https://askubuntu.com/questions/813864/ubuntu-16-04-wont-boot-after-power-outage-efi(2016 年) https://forums.linuxmint.com/viewtopic.php?t=295491(2019 年) https://askubuntu.com/questions/1107318/ubuntu-is-unable-to-boot-up-after-sudden-power-outage(2019 年)
等等。这些都是最近的帖子,所以我确信它们都没有使用像 ext2 这样的旧技术。