web-dev-qa-db-ja.com

オーバーレイのクエリ

マウントされたオーバーレイファイルシステム(overlayfs)をクエリして、その上位ディレクトリと下位ディレクトリを確認する方法を探していますが、これまで、それに適したコマンドは見つかりませんでした。そのようなチェックを行う方法はありますか?

以下のようなコマンドでoverlayfsをマウントしました。

mount -t overlayfs -o lowerdir=/mnt/root-ro,upperdir=/data/root-rw overlayfs-root ${rootmnt}

mountコマンドは私に十分な情報を与えませんでした:

root@ubuntu12:~# mount -l
overlayfs-root on / type overlayfs (rw)
/dev/sda1 on /mnt/root-ro type ext4 (ro,relatime,data=ordered) [ROOT]
/dev/sdb1 on /data type ext4 (rw,errors=remount-ro) [DATA]
8
enzo1959

カーネルは、/proc/mountsを介してマウントオプション(の完全なリスト)を公開します。オーバーレイの場合、これにはlowerdirおよびupperdirオプションが含まれます。

$ cd /tmp
$ mkdir lower upper overlay
$ Sudo mount -t overlayfs -o lowerdir=/tmp/lower,upperdir=/tmp/upper none /tmp/overlay
$ tail -n 1 /proc/mounts
none /tmp/overlay overlayfs rw,relatime,lowerdir=/tmp/lower,upperdir=/tmp/upper 0 0

一般的なケースでは、パス自体にスペースとコンマが含まれている可能性があるため、これを解析するのは難しい場合があります。これらは、ファイルシステム情報のフィールド区切り文字として使用されます。パスにnoスペースまたはコンマがあると想定できる場合は、次のような方法で管理できる可能性があります。

$ LOWER=$(tail -n 1 /proc/mounts | egrep -om1 'lowerdir=[^, ]*' | sed s/lowerdir=//)
$ UPPER=$(tail -n 1 /proc/mounts | egrep -om1 'upperdir=[^, ]*' | sed s/upperdir=//)
$ echo $LOWER $UPPER
/tmp/lower /tmp/upper
2
Thomas Nyman

mount自体が、ディレクトリをoverlayfsタイプとしてリストし、upperdirとlowerdirをマウントオプションとしてリストします。

0
tavish