3

想象:

  • 您在故障磁盘上有交换分区;
  • 一个进程是空闲的,它的部分内存被交换到这个分区;
  • 一段时间后它醒来,内核尝试将交换的页面加载回内存;
  • 内核检测到不可恢复的读取错误。

我相信内核应该在这种情况下使进程崩溃。

我还没模拟。我只是想知道一些答案(可能还有如何在 Linux 中模拟它的说明)并分享我随后的发现。

也许这种情况可以解释一些存储硬件故障的遗留系统上很少发生崩溃。

更新

使用映射目标swap可以轻松地模拟特定卷上的错误:dmsetuperror

我唯一没有深入研究的是如何控制加载、交换和重新加载特定进程的虚拟内存到卷的特定error映射部分swap。基本上,我需要避免使用这个错误swap的任何其他过程,除了模拟过程。

4

1 回答 1

1

“毒药”补丁应该处理你的情况:https ://lwn.net/Articles/348886/

交换缓存中的脏页以延迟方式处理。清除页面的脏标志并维护页面交换缓存条目。在稍后的页面错误中,关联的应用程序将被终止。

于 2014-05-05T09:51:00.650 回答