什么会导致 ext4 驱动器上出现“多重声明的块”?

Pet*_*ver 5 filesystems ext4 corruption linux-kernel e2fsck

\xe2\x80\x9c多重声明的块\xe2\x80\x9d 是当块似乎属于多个文件时 fsck 报告的一种错误。这会导致数据损坏,因为写入其中一个文件时两个文件都会发生更改。

\n

但区块被多重认领的最初原因可能是什么?它们是如何创建的以及我如何避免它们?

\n

MC6*_*020 4

正如Theodore Tso本人很早就指出的那样, fsck 报告\xe2\x80\x9c乘法声明块\xe2\x80\x9d可能有两个直接原因:

\n
\n

一种是索引节点表中的一个或多个块被写入错误的位置,从而覆盖索引节点表中的另一个块。

\n
\n

这通常是由某些内核错误触发的。(你可以读到 T\'Tso 能够描述一些容易识别的模式 => 不是随机的,因为外部引起的任何虚假损坏都会产生。)。
\n这种情况特别发生在 EXT 系列文件系统新功能的早期,主要是因为罕见的竞争条件:

\n\n
\n

第二种情况是块分配位图被损坏,使得某些正在使用的块被标记为空闲,然后重新挂载文件系统并将文件写入文件系统,从而使这些块被重新挂载。为新文件重新分配。

\n
\n

在一些损坏之后,这些问题的出现更加随机,其根本原因不太可能是内核错误。
\n这包括不干净的关闭、写得不好的应用程序、与硬件环境相关的不合理的安装选项等。内存和其他硬件故障。

\n

当然,人们不应该忘记fsck自己产生错误报告的可能责任,甚至在尝试修复某些其他文件系统不一致时甚至在问题的根本原因上,实际上已经有

\n

你怎样才能避免它们,那么,根据上面的内容,你只能期望限制它们发生的概率:

\n
    \n
  • 保持低科技含量;-) 避免在全新功能可用后立即对其进行设置,
  • \n
  • 使用ECC内存和可靠的存储设备,
  • \n
  • 微调您的文件系统选项(位于mkfs)并明智地选择安装选项(与环境保持一致),
  • \n
  • 在沙盒中运行所有不受信任的软件。
  • \n
  • 最终在崩溃的情况下以 T\'Tso 的方式工作e2croncheck,运行:
  • \n
\n
\n

我现在实际上正在做的是在每次崩溃后,我重新启动,\n登录,并在登录后立即运行 e2croncheck。这\n允许我在任何潜在的文件系统损坏\n变得令人讨厌之前注意到\n xe2\x80\xa6 E2croncheck 更方便,因为当 e2fsck 在一个终端窗口中运行时我可以做\n其他事情。

\n
\n