debian:在启动时将 /var 挂载为 overlayfs

debian:在启动时将 /var 挂载为 overlayfs

我尝试/var在启动时使用 overlayfs(带有 tmpfs)进行挂载,但无法使其工作。

以下是我所做的:

# creating tmpfs
mkdir /var.tmpfs
mount -t tmpfs -o rw,nosuid,nodev,noexec,noatime,size=512m,mode=0775 tmpfs /var.tmpfs
chmod -R u=rwX,g=rX,o=rX /var.tmpfs

# creating overlay
mkdir /var.tmpfs/{work,upper} /var.overlay
mount -t overlay -o rw,lowerdir=/var,upperdir=/var.tmpfs/upper,workdir=/var.tmpfs/work overlay /var.overlay
chmod -R u=rwX,g=rX,o=rX /var.overlay

# binding to /var
mount --bind /var.overlay /var

# filling /etc/fstab
[...]
tmpfs           /var.tmpfs      tmpfs   rw,nosuid,noatime,size=512m          0  0
overlayfs       /var.overlay    overlay rw,lowerdir=/var,upperdir=/var.tmpfs/upper,workdir=/var.tmpfs/work    0   0
/var.overlay    /var            none    bind    0   0  

当系统启动时我遇到以下错误:

overlayfs: failed to resolve '/var.tmpfs/upper' -2

这是正常的,因为 tmpfs 在挂载时是空的。

  • 如何在启动时 创建upper目录work
    • 挂载 /var.tmpfs 后
    • 在挂载 /var.overlay 之前
  • 或者是否存在其他解决方案,且目录在启动时已经存在?

提前致谢。

答案1

文件夹/var.tmpfs/upper/var.tmpfs/work位于 tmpfs 中,重启后将不再存在。

一种选择是在 fstab 中创建它们两者。

答案2

我做了类似的事情https://github.com/StuartIanNaylor/zram-config但使用 zram 而不是 tmpfs。

我将目标目录绑定挂载到其他地方。创建并挂载 zram 和 mkdir overlayfs 目录。然后挂载覆盖

mount --verbose --types overlay -o lowerdir=$BIND_DIR,upperdir=/opt/zram$RAM_DEV/upper,workdir=/opt/zram$RAM_DEV/workdir overlay $ZRAM_DIR

$ZRAM_DIR 是目标目录,它会被绑定到其他地方,因此在停止时我可以同​​步更改。您可能只需要添加一组 lowerdir 而不是完整的 /var,因为 tmpfs over tmpfs 可能无法正常工作,到底是为什么呢?

相关内容