11

I'm looking for a way to query a mounted overlay filesystem (overlayfs) in order to check it's upper and lower directory, but until now I haven't found any suitable command for that. Is there is a way to do such a check ?

I mounted the overlayfs with a command like the one below:

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

The mount command didn't give me enough information:

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]
6
  • 1
    Which type of "overlay" filesystem are you using?
    – Celada
    May 15, 2013 at 17:36
  • 1
    I'm using overlayfs
    – enzo1959
    May 17, 2013 at 6:08
  • Oh! I didn't realize there was a filesystem actualy called "overlayfs". I'm only familiar with aufs and unionfs. The latter two do provide an easy way to query what their underlying branches are, but I wouldn't know about overlayfs.
    – Celada
    May 17, 2013 at 14:49
  • Please Celada, tell me about the method suitable for aufs and unionfs so I can check if something similar is working also for overlayfs
    – enzo1959
    May 20, 2013 at 6:26
  • aufs: Under /sys/fs/aufs can be found one directory per instance of currently mounted aufs filesystem. Inside each directory, there are files br0, br1, and so on, which contain the names of each of the branches of that aufs instance.
    – Celada
    May 20, 2013 at 20:04

2 Answers 2

3

The kernel exposes the (full list of) mount options via /proc/mounts. For overlayfs, this includes the lowerdir and upperdir options:

$ 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

In the general case, parsing this can be tricky as the paths themselves may contain spaces and commas which are used as field separators in the filesystem information. If you can assume that there are no spaces or commas in the paths, you might be able to manage with something like:

$ 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
1
  • note that in Ubuntu you would need to add mkdir workdir and add workdir=/tmp/workdir to the options in the mount command. Nov 30, 2015 at 17:12
0

mount will itself list your directory as overlayfs type, and upperdir and lowerdir in mount options.

1
  • I see that some tutorial told that, that moiunt will shoe the detail of mounted overlayfs, but in practise, on ubuntu 12, the mount give me not enought info.
    – enzo1959
    May 24, 2013 at 8:01

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .