我遇到了一些电气问题,主要是几个月来突然断电,虽然不间断电源可以解决大部分问题。
但我仍然担心文件系统损坏和数据丢失。
当计算机关机、崩溃或出现其他文件系统问题时,xfs 是否比 ext3 更差或更不可靠?
拥有一个不间断电源和一个好的备份策略(我有一个 1.5 TB 的磁盘,我想用它来备份所有关键数据)就足够了,我不应该担心?
我一直读到,当电源关闭时,xfs 会将数据清零(尽管我认为这个问题已经解决了),而且诸如此类的 XFS 并不能安全地抵御数据损坏。
启用写屏障和正确调整 xfs,并且拥有 ups 和备份,xfs 是否可以像 ext3 一样可靠,或者至少足够可接受?
如果我使用 xfs 来提高 / 和 /home 的性能(主要是处理大文件),那么与使用 xfs 相比,我的数据是否会面临更大的风险?
答案1
我个人对 XFS 的体验是,它的 fsck 不如 ext3 好。我们在 XFS 上运行镜像服务器,镜像的 Linux 发行版等大约有 3TB 的空间。有一次它出现了一些问题(我们没有断电,我记得它只是开始报告错误)。所以在重新启动时它想要执行 fsck。但是,fsck 占用的 RAM 超过了我们系统上的 2GB,所以它开始交换。3 天后它就用完了内存。我将盒子的内存调到最大 3GB,然后它能够相当快地完成 fsck。我知道现在 3GB 的内存并不多,但在当时那是一个相当大的盒子。
我也曾在笔记本电脑上尝试过 XFS。这更像您的“电源故障”情况,因为我的笔记本电脑出现锁定问题,所以我不得不经常对其进行强制电源循环。我遇到过几次这种情况,崩溃前我处理的文件会恢复为几个小时前的副本。我在处理文件时多次编辑并保存文件,然后系统会锁定,我又会回到几个小时前的状态。
由于这些问题,我倾向于避免使用 XFS。XFS fsck 似乎不如 EXT 成熟,可能是因为 XFS 几乎从来不需要 fsck,而 ext2/3/4 却经常需要。
但我承认这些经历可能都是五年前的事了。希望现在情况会好一些。我只是想把我的经历分享给大家。
回想起来,我意识到当时的 EXT3 也存在损坏问题。但我现在运行了数百台基于 EXT3 的服务器,不记得上次硬电源循环导致损坏是什么时候了。
说实话,XFS 让我非常反感的一点是 fsck 占用了太多的内存,导致系统崩溃。就我们的镜像服务器而言,它可以承受宕机。如果这是一台业务服务器,那么知道 fsck 需要一段时间,而不是几天的时间,这一点至关重要。
答案2
没有人能比你自己更好地回答这个问题。
换句话说,测试它。
这并不难:拿一台典型的机器,让它执行与你想要做的类似的负载(在我的情况下,它是在两个 SAN 卷之间复制小文件)。当它处于重负载之下时,让它失败。尝试你能想象到的每一种失败(在我的情况下,它主要是拔掉一个卷、另一个卷、服务器和 SAN 交换机上的插头)。
对所有候选文件系统重复上述操作,在我的情况下,它们是 ext3、XFS、ReiserFS 和 JFS。现在我将使用 ext4 和 btrfs,而不是 ReiserFS 和 JFS。
我发现 ext3 每百万个文件中大约会丢失 5-10 个文件,XFS 每百万个文件中大约会丢失 5-30 个文件,而 Reiser 和 JFS 都至少有一次丢失了数百个、上千个文件。
所以在我的测试案例中,答案是肯定的:ext3 是最有弹性的文件系统,但 XFS 并没有我担心的那么强。考虑到我即将达到 ext3 8TB 的限制,答案显然是 XFS。
我计划利用假期的淡季来重复使用更现代的文件系统;我对 ext4 寄予厚望,但在看到它在实际故障下的表现之前,我不会拿我的数据下赌注。btrfs 将是一个有趣的测试,但不要认为它还足够成熟。