首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将/var安装为overlayfs

将/var安装为overlayfs
EN

Unix & Linux用户
提问于 2017-01-23 10:35:00
回答 1查看 2.9K关注 0票数 0

到目前为止,我正在raspberry pi上运行一个只读文件系统,直到我尝试将/var挂载为overlayfs以供nginx和其他服务使用之前,一切都很好:

代码语言:javascript
复制
VAROVRL="-o lowerdir=/var,upperdir=/mnt/persist/var-rw,workdir=/mnt/persist/var-work"
mount -t overlay ${VAROVRL} overlay /var

虽然这是可行的,而且所有服务都没有启动问题,但我注意到mount命令只输出覆盖挂载,每次重新启动时它都会被复制。

3次重新启动后的

代码语言:javascript
复制
mount
overlay on /var type overlay (rw,lowerdir=/var,upperdir=/mnt/persist/var-rw,workdir=/mnt/persist/var-work)
overlay on /var type overlay (rw,lowerdir=/var,upperdir=/mnt/persist/var-rw,workdir=/mnt/persist/var-work)
overlay on /var type overlay (rw,lowerdir=/var,upperdir=/mnt/persist/var-rw,workdir=/mnt/persist/var-work)

输出/etc/装入

代码语言:javascript
复制
/dev/root / ext4 ro,relatime,data=ordered 0 0
devtmpfs /dev devtmpfs rw,relatime,size=469532k,nr_inodes=117383,mode=755 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,relatime 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,nodev,mode=755 0 0
tmpfs /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
tmpfs /sys/fs/cgroup tmpfs ro,nosuid,nodev,noexec,mode=755 0 0
cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd 0 0
cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpu,cpuacct 0 0
cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0
cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0
cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0
cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0
cgroup /sys/fs/cgroup/net_cls cgroup rw,nosuid,nodev,noexec,relatime,net_cls 0 0
systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=23,pgrp=1,timeout=300,minproto=5,maxproto=5,direct 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
mqueue /dev/mqueue mqueue rw,relatime 0 0
configfs /sys/kernel/config configfs rw,relatime 0 0
tmpfs /tmp tmpfs rw,relatime,size=102400k 0 0
/dev/mmcblk0p1 /boot vfat ro,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro 0 0
/dev/mmcblk0p5 /mnt/persist ext4 rw,relatime,data=ordered 0 0
/dev/mmcblk0p6 /mnt/cache ext4 rw,relatime,data=ordered 0 0
/dev/mmcblk0p7 /mnt/osboot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro 0 0
/dev/mmcblk0p8 /mnt/osimage ext4 rw,relatime,data=ordered 0 0
/dev/mmcblk0p9 /mnt/userdata ext4 rw,relatime,data=ordered 0 0
overlay /etc overlay rw,relatime,lowerdir=/etc,upperdir=/mnt/persist/etc-rw,workdir=/mnt/persist/etc-work 0 0
overlay /var overlay rw,relatime,lowerdir=/var,upperdir=/mnt/persist/var-rw,workdir=/mnt/persist/var-work 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0

输出/etc/mtab

代码语言:javascript
复制
overlay /var overlay rw,lowerdir=/var,upperdir=/mnt/persist/var-rw,workdir=/mnt/persist/var-work 0 0
overlay /var overlay rw,lowerdir=/var,upperdir=/mnt/persist/var-rw,workdir=/mnt/persist/var-work 0 0
overlay /var overlay rw,lowerdir=/var,upperdir=/mnt/persist/var-rw,workdir=/mnt/persist/var-work 0 0

请注意,/etc也是作为overlayfs挂载的,但是当它是唯一的覆盖挂载时,不会产生这个问题。

有人能发现我做错了什么吗?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2017-01-25 01:56:52

/etc/mtab文件是由mountumount命令编写的。保持文件的精确性需要做一些工作,因为只有在文件可用和可写的情况下,它们才能更新/etc/mtab

对于通常情况下,/etc是在启动期间的某个点挂载读-写,发行版设置了一个脚本,在启动期间重写/etc/mtab,一旦根分区被挂载-读-写。这是必要的,如果系统关闭,而没有卸载所有(例如,由于系统崩溃或电源故障)。

在您的例子中,如果/etc位于overlayfs上,那么启动脚本在/etc仍然是只读的时候运行的时间是错误的,或者它不支持覆盖根的情况。因此,如果要将/etc/mtab保持为常规文件,则必须修改此脚本或执行该脚本的时间。

但你可能不需要这么做。一个常见的设置是让/etc/mtab成为指向/proc/mounts的符号链接。这两个文件包含的信息大多相同,语法基本相同;从读取它们的应用程序的角度来看,它们是兼容的。因为/proc/mounts反映了当前的内核信息,所以它始终是最新的,mountumount命令不会触及它们。

/proc/mounts相比,/etc/mtab的缺点是它显示内核打印的信息(特别是挂载选项),而不是传递给mount命令的确切参数。所以有一点信息丢失了。然而,这些信息很少有用。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/339496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档