我遇到了一个从 aufs 到 overlayfs 的迁移难题。使用 aufs,您可以指定多个 RO 层,并且更新其中的一些文件时,可以通过重新挂载来刷新。
带有 aufs 的 fstab:
aufs /etc aufs noauto,br:/rw-root/etc=rw:/ro-root/etc=ro:/etc=rr 0 0
与 overlayfs 相同的功能:
none /.tmp-root/etc overlayfs noauto,upperdir=/ro-root/etc,lowerdir=/etc 0 0
none /etc overlayfs noauto,upperdir=/rw-root/etc,lowerdir=/.tmp-root/etc 0 0
按顺序安装系统没问题,一切正常。当我需要更新 ro-root 分区上的某些内容时,问题就出现了。运行 remount 时,会将 /etc 视为已安装的 overlayfs,而不是原始的 ro-root。(用 解决了删除线问题mount --bind
)
显然问题出在inode
文件数量上。因此,编辑文件时一切正常,但如果我将新文件复制到较低级别的旧文件上,则更改不会传播。因此,这可能是一个真正的 overlayfs 问题。
我非常希望这个设置能够继续工作(重新构建所有内容需要大量工作和测试,我宁愿避免,因为这会影响 50 多个虚拟机)。话虽如此,我也会接受能够安全地在 initrd-stage 之后移动 readonly-root 以解决这个问题的答案,如果这不可能,那么建议以最简单的方式更改/修改/创建 initrd 来完成此移动。
还有另一个相关问题,但它是只有两层的更简单形式。 简单的 overlayfs 重新加载问题
答案1
您是否尝试过先在 /.tmp-reoot/etc 上运行 remount,然后在 /etc 上运行 remount
例如:
mount -o remount /.tmp-reoot/etc
mount -o remount /etc