Linux 文件系统因不正确关闭而损坏(fs ext4)?

Linux 文件系统因不正确关闭而损坏(fs ext4)?

我管理过很多Linux服务器,使用Linux服务器比任何其他操作系统都容易。但有时我在 Linux 操作系统中遇到的一个问题是,文件系统损坏。在 Windows 服务器中不会​​出现此问题。

我在网上详细搜索了解决方案,大部分都是大家给出的建议。

  1. 保留备份和恢复

我的评论 ==> 100% 同意,但我正在寻找一个解决方案,我不需要费力地恢复崩溃的操作系统。

  1. 运行 fsck

我的评论 ==> 根据我的经验,有时会引入额外的问题。

  1. 正确关闭/重新启动。

我的评论 ==> 每个人都想正确关闭/重新启动。我说的是一种罕见的情况,即服务器没有响应或者我无法正确关闭或重新启动

  1. Btrfs==>

我的评论 ==> 对于生产来说不够稳定

  1. 升级到 Ext4

我的评论 ==> 已经使用 ext4

  1. 升级你的硬盘 我的评论 ==> 我们遇到的问题不是由于磁盘故障,主要是由于关机不当造成的。

我的 fsck 问题:

  1. 当我们使用 -y 选项运行时,fsck 有时会损坏文件系统

  2. fsck 大约需要 1 或 2 天来修复系统,这对我来说在生产环境中是不合适的

我的问题是,在 btrfs 稳定之前,是否有任何解决办法来解决这个问题?

就像几分钟内“同步”一次文件系统一样。或编写一些脚本以在重新启动之前同步所有文件系统更改

我正在寻找这个问题的解决方案而不是建议。

答案1

ext4 应该能够抵抗甚至拔出插头的情况。然而,为此,它要求存储子系统不会丢失已提交的写入。

首先,确认您没有使用barrier=0/进行安装nobarrier。这通常会提高性能,但如果未执行适当的关闭,则会导致损坏。还要检查您的内核日志,以确保 ext4 不会禁用屏障,因为堆栈中的某些内容不支持它们。

接下来要尝试的事情是禁用磁盘写入缓存,至少在磁(非 SSD)磁盘上是如此。有时,磁盘会在实际将数据写入盘片时撒谎,这可以提高性能(只要电源不中断)。通常您可以使用hdparm -W0(对于 IDE/SATA)或sdparm --clear=WCE(对于 SCSI/SAS)来执行此操作。这些可能需要添加到您的启动脚本中,特别是对于 SATA,它可能会通过电源循环重置为默认值。

有一个(相当旧的)脚本来确认写入缓存不会丢失数据;看Brad Fitzpatrick 的 diskchecker.pl 博客文章了解该脚本以及如何使用它。

不幸的是,如果您使用的是 SSD 并且遇到了问题,您可能只需要找到不同的磁盘。

相关内容