我正在寻找一种方法来查询已安装的覆盖文件系统(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]
答案1
内核通过 公开挂载选项(完整列表)/proc/mounts
。对于overlayfs,这包括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
在一般情况下,解析它可能很棘手,因为路径本身可能包含空格和逗号,它们用作文件系统信息中的字段分隔符。如果你可以假设有不路径中的空格或逗号,您也许可以通过以下方式进行管理:
$ 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
mount
本身会将您的目录列为overlayfs类型,并在挂载选项中列出upperdir和lowerdir。