如何在linux上覆盖根文件系统?

时间:2016-12-13 11:11:54

标签: c linux filesystems mount overlays

我使用overlayFS创建了一种简单的实验沙盒。 我想我明白它是如何运作的:

  • 下层层应始终挂载R / O
  • 上层层是发生所有变更的地方
  • 工作图层是出于交易原因
  • 目标是所有合并更低 + 上层的地方

例如,我在/disk2上安装了物理磁盘。然后我想覆盖以保留内容,所以我可以做类似的事情:

mount("overlay", "/disk2", "overlay", MS_MGC_VAL, "lowerdir=/disk2,upperdir=./upper,workdir=./work");

这很好用:当我的新流程尝试修改/disk2下的内容时,它只会在 upper 下实际修改:这确实按预期工作。例如,我还可以看到 0,0 文件,以显示在 upper 中删除了某些内容,但未在 lower 中删除。

不幸的是,我似乎无法覆盖根/:如果我执行以下代码:

mount("overlay", "/", "overlay", MS_MGC_VAL, "lowerdir=/disk2,upperdir=./upper,workdir=./work")

我仍然可以看到整个真实的 /,当我写文件时,它们会被写入 real (即 lower >)位置,而不是 upper 中的位置。

我在这里做错了什么?

我在内核4.4.0-53上。

1 个答案:

答案 0 :(得分:-1)

根据我所读到的内容,我不认为一旦系统启动就以编程方式执行此操作。