交换分区中的读取错误如何影响正在运行的进程?

时间:2013-09-06 06:30:08

标签: linux memory segmentation-fault swap

想象:

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

我认为内核应该在这种情况下崩溃。

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

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

更新

使用带有swap映射目标的dmsetup可以轻松模拟特定error卷上的错误:

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

1 个答案:

答案 0 :(得分:1)

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

  

交换缓存中的脏页以延迟方式处理。该   页面清除脏标志,页面交换缓存条目为   保持。在稍后的页面错误上,相关的应用程序将是   杀死。