我尝试/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 可能无法正常工作,到底是为什么呢?