/var를 overlayfs로 마운트

/var를 overlayfs로 마운트

나는 Raspberry Pi에서 읽기 전용 파일 시스템을 실행하고 있으며 이 기능을 사용하기 위해 /var를 nginx 및 기타 서비스에 대한 Overlayfs로 마운트하려고 할 때까지 모든 것이 잘 작동합니다.

VAROVRL="-o lowerdir=/var,upperdir=/mnt/persist/var-rw,workdir=/mnt/persist/var-work"
mount -t overlay ${VAROVRL} overlay /var

이것이 작동하고 모든 서비스가 문제 없이 시작되는 동안 명령은 mount오버레이 설치만 출력하고 재부팅할 때마다 반복된다는 것을 알았습니다.

3번 재부팅 후:

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/mount 출력

/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의 출력

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

/etcOverlayfs로도 마운트되지만, 오버레이만 마운트된 경우에는 이 문제가 발생하지 않습니다 .

내가 여기서 뭘 잘못하고 있는지 알아낼 수 있는 사람이 있나요?

답변1

이 파일은 /etc/mtab및 명령으로 작성됩니다. 파일이 사용 가능하고 쓰기 가능한 경우에만 업데이트할 수 있으므로 정확한 상태를 유지하려면 약간의 작업이 필요합니다.mountumount/etc/mtab

부팅 중 특정 시점에 읽기-쓰기를 마운트하는 일반적인 경우 배포판은 루트 파티션이 읽기-쓰기로 마운트되면 부팅 중에 다시 작성되는 /etc스크립트를 설정합니다 . /etc/mtab모든 항목을 제거하지 않고 시스템이 종료되는 경우(예: 시스템 충돌 또는 정전으로 인해) 이 작업이 필요합니다.

귀하의 경우 /etcoverlayfs에서 시작 스크립트는 잘못된 시간에 실행되지만 /etc여전히 읽기 전용이거나 루트 케이스가 지원되지 않습니다. 따라서 일반 파일로 유지하려면 /etc/mtab이 스크립트나 실행 시간을 조정해야 합니다.

하지만 아마도 이렇게 할 필요는 없을 것입니다. 일반적인 설정은 /etc/mtab에 대한 심볼릭 링크를 갖는 것입니다 /proc/mounts. 두 파일은 기본적으로 동일한 정보와 기본적으로 동일한 구문을 포함하며 이를 읽는 애플리케이션의 관점에서 호환됩니다. 현재 커널 정보를 반영 하므로 /proc/mounts항상 최신 상태이며 mountumount명령이 이를 건드리지 않습니다.

/proc/mounts에 비해 단점은 /etc/mtab명령에 전달된 정확한 인수가 아니라 커널에서 다시 인쇄한 정보(특히 마운트 옵션)를 표시한다는 것입니다 mount. 그래서 약간의 정보가 손실됩니다. 그러나 이 정보는 거의 유용하지 않습니다.

관련 정보