我公司的系统管理员说Linux容易因停电而受到干扰。他们说Windows机器总是能在断电后幸存,但是Linux机器经常变得无法恢复(即,您无法再引导机器)。之所以出现这种情况,是因为他们告诉我电力公司将关闭我们办公室的电源很长时间,因此管理员希望我关闭所有我自己在停机前可以访问的Linux机器。
我以为Linux应该很健壮?
我的问题是-我应该运行一些程序来避免Linux机箱因断电而受到干扰吗?
我公司的系统管理员说Linux容易因停电而受到干扰。他们说Windows机器总是能在断电后幸存,但是Linux机器经常变得无法恢复(即,您无法再引导机器)。之所以出现这种情况,是因为他们告诉我电力公司将关闭我们办公室的电源很长时间,因此管理员希望我关闭所有我自己在停机前可以访问的Linux机器。
我以为Linux应该很健壮?
我的问题是-我应该运行一些程序来避免Linux机箱因断电而受到干扰吗?
Answers:
linux比Windows更脆弱吗?
答案是:取决于。
在这种情况下,当有人说“无法启动”时,我将其翻译为“文件系统损坏”,并且对原始问题的回答是或否取决于您所使用的文件系统。
Windows不允许您为Linux系统允许的文件系统提供所有选择。您几乎永远不会看到非NTFS Windows系统。NTFS内置了一些功能,可以在断电时提供帮助,例如日记和文件事务在发生故障时可以回滚。
Linux机顶盒可以具有此功能,而不能。这完全取决于服务器的设置方式。如果服务器使用ext2 1,则在电源出现故障时,您很容易受到文件损坏的影响。将其与使用Btrfs之类的系统进行比较,该系统比NTFS具有更多的数据完整性功能。
因此,如果您只与sys2交谈的sysadmin曾经与ext2系统一起工作过,那么他可能是对的,但是如果您使用另一个文件系统,则他可能是错的。
1:长期以来,Ext2是Debian和Red Hat Linux的默认设置。现在,它主要已被Ext3取代,而Ext3具有与NTFS相同的数据完整性功能。
不,在突然停电时,Linux在本质上并没有Windows强大。在任何一种操作系统的情况下,可能会发生的情况是,在断电的确切时刻将东西写入硬盘驱动器上的文件系统,并且(历史上)这可能会损坏文件系统。
解决此问题的方法是使用日记文件系统,该文件系统根据其写入信息的方式不受此问题的影响。我相信,NTFS也是大多数新文件系统-包括Ext3和ExT4(Linux最常见的文件系统)。因此,只要您使用日记文件系统,就不会遇到此问题。
后来就停机引导过程中,如果你有一个数据库(我看MYSQL,Postgres并没有从这个苦),你可能有类似的问题与MySQL数据库- MYSQL往往不是特别强劲(谷歌符合ACID MYSQL的这个话题)。如果您的MySQL设置不兼容ACID,则可以通过在重启时强制检查索引来解决此问题。
另一种观点(有点受累,可能对Windows不公平)是-Linux盒比Windows盒更可靠(根据正常运行时间和重新启动的需要来衡量)-因此,当Linux盒重启失败时,这可能是硬件问题是由年老引起的,而不是软件问题-但由于更频繁的重启,可能会更快地检测到出现故障的Windows框)
我对此问题进行了一些研究,发现我的IT部门所说的基本上是正确的,Linux比Windows更容易断电。原因是inode表在Linux / unix中的工作方式。由于它是无序列表,并且会不断被修改,因此重要的静态文件(如内核二进制文件)与毫无价值的文件(如临时文件)之间没有分隔。这意味着关键系统文件的inode条目不断被重写,这显然是一个非常糟糕的设计。实际上,与非必需文件相比,关键系统文件实际上更可能在任何给定时间写入其inode条目。断电时,它往往会炸毁inode表中正在写入的任何部分,其中很可能不包含指向系统文件的指针。系统文件本身是完整无缺的,但是用于查找它们的目录已损坏。磁盘缓存会使情况变得更糟,这会增加inode表损坏区域的大小。
在Windows中,即使是旧的FAT文件系统也比这更强大。FAT也有一个表,但它是有序表,因此它没有将系统文件与临时文件混在一起。通常,系统文件都位于目录的一个区域中,因此不太可能经常写入该区域。此外,FAT具有备份目录,因此即使该目录已损坏,它也将还原为备份。这意味着使用FAT,即使电源中断,用户也不会丢失任何文件链接,即使是临时文件也是如此。但是,在Linux中,由于不断写入inode表,因此实际上可以确保用户在电源故障时无法访问文件。
唯一可以减轻这种情况的方法是关闭磁盘缓存。