私は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
/etc
Overlayfsとしてもマウントされますが、オーバーレイのみがマウントされている場合、この問題は発生しません。
私がここで何が間違っているのかを理解できる人はいますか?
ベストアンサー1
このファイルは、/etc/mtab
およびコマンドで作成されます。ファイルが使用可能で書き込み可能な場合にのみ更新できるため、正確な状態を維持するには少し作業が必要です。mount
umount
/etc/mtab
起動時に特定の時点で読み書きをマウントする一般的な場合、ディストリビューションはルートパーティションが読み書きでマウントされたときに起動中に書き換えられる/etc
スクリプトを設定します。/etc/mtab
すべてのエントリを削除せずにシステムがシャットダウンする場合(システムのクラッシュや停電など)、これが必要です。
あなたの場合、/etc
overlayfsでは起動スクリプトは間違った時間に実行されますが、/etc
まだ読み取り専用であるか、ルートケースはサポートされていません。したがって、通常のファイルとして保存するには、/etc/mtab
このスクリプトまたは実行時間を調整する必要があります。
しかし、おそらくこれを行う必要はありません。一般的な設定は、への/etc/mtab
シンボリックリンクを持つことです/proc/mounts
。両方のファイルは、基本的に同じ情報と基本的に同じ構文を含み、それを読み取るアプリケーションの観点から互換性があります。現在のカーネル情報を反映しているので、/proc/mounts
常に最新の状態であり、mount
コマンドumount
はそれに触れません。
/proc/mounts
これに比べて欠点は、/etc/mtab
コマンドに渡された正確な引数ではなく、カーネルから再印刷された情報(特にマウントオプション)を表示することですmount
。だから少し情報が失われます。ただし、この情報はほとんど役に立ちません。