-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

On 11/25/2015 05:10 PM, waltd...@waltdnes.org wrote:
>   I'll admit that my system setup is a bit unusual.  A long time ago, in
> a place far away, hard drives were small, compared to today's standards.
> The usual unix practice of multiple seprate partitions was not feasable
> for me, but I did want to keep root on its own partition.  So I
> compromised with a small / partition, with empty /home, /opt, /var,
> /usr, and /tmp directories.  Their real equivalents are bind-mounted
> from a much larger partition.  I just re-did my oldest machine.  It has
> a primary partition 1, which covers the entire hard drive.  The /
> partion on /dev/sda5 is approximately 500 megabytes (YES!).  There's a
> 3.8 gigabyte swap partion /dev/sda6, and the rest of the drive is
> /dev/sda7.  Here's the relevant portion of /etc/fstab...
>
> /dev/sda5               /           ext2     noatime,async      0 1
> /dev/sda7               /home       ext3     noatime,async      0 1
> /home/bindmounts/opt    /opt        auto     bind               0 0
> /home/bindmounts/var    /var        auto     bind               0 0
> /home/bindmounts/usr    /usr        auto     bind               0 0
> /home/bindmounts/tmp    /tmp        auto     bind               0 0
> /dev/sda6               none        swap     sw                 0 0
>
> ...and the output from "df"...
>
> Filesystem     1K-blocks      Used Available Use% Mounted on
> /dev/root         495944     49416    420928  11% /
> devtmpfs           10240         0     10240   0% /dev
> tmpfs             310080       356    309724   1% /run
> shm              1550384         0   1550384   0% /dev/shm
> cgroup_root        10240         0     10240   0% /sys/fs/cgroup
> /dev/sda7      476205120 292365556 159643008  65% /opt
>
> ...showing /dev/sda7 mounted on /opt !?!?  mc (Midnight Commander) shows
> 152 of 454 gigabytes free on all of /home, /opt, /var, /usr, and /tmp,
> which is correct, since they're all really bindmounts from /dev/sda7.
> The / partition (/dev/sda5) has 411 of 484 megabytes free.  The machine
> works OK, but the "df" output is a head-scratcher.  I've re-booted a
> couple of times, with no change.
>

df reads /proc/self/mountinfo to get the list of mount points. This file
will probably look something like this for your system (exact numbers,
order, and contents may vary):

1 0 4:0 / / rw,noatime,async - ext2 /dev/root rw
2 1 0:1 / /sys rw,nosuid,nodev,noexec,relatime - sysfs sysfs rw
3 1 0:2 / /proc rw,nosuid,nodev,noexec,relatime - proc proc rw
4 1 0:3 / /dev rw,nosuid - devtmpfs devtmpfs rw,size=10240k,mode=755
5 1 0:4 / /run rw,nosuid,nodev - tmpfs tmpfs rw,size=310080k,mode=755
5 4 0:5 / /dev/shm rw,nosuid,nodev - shm tmpfs rw
6 4 0:6 / /dev/pts rw,nosuid,noexec,relatime - devpts devpts 
rw,gid=5,mode=620,ptmxmode=000
7 2 0:7 / /sys/fs/cgroup rw,nosuid,nodev,noexec - tmpfs cgroup_root 
rw,size=1024k,mode=755
8 1 8:7 / /home rw,noatime,async - ext3 /dev/sda7 rw,data=ordered
9 1 8:7 /bindmounts/opt /opt rw,noatime,async - ext3 /dev/sda7 rw,data=ordered
10 1 8:7 /bindmounts/var /var rw,noatime,async - ext3 /dev/sda7 rw,data=ordered
11 1 8:7 /bindmounts/usr /usr rw,noatime,async - ext3 /dev/sda7 rw,data=ordered
12 1 8:7 /bindmounts/tmp /tmp rw,noatime,async - ext3 /dev/sda7 rw,data=ordered

Note that all the bind mounts show up with the exact same device name as
the original mount they were bound off of. In the interest of not
showing duplicate information, df will only show the mountpoint that has
the shortest path, using the first of those that have the same length
path. As "/opt" is shorter than "/home", that is the mountpoint df uses
as its display name.

The fields in the file are as follows:

1: mount number
2: parent mount number
3: device major:minor mounted (0:x for filesystems not backed by a
block device)
4: path within filesystem mounted
5: mountpoint
6: per-mount options (may differ with multiple mounts of same
filesystem)
(any number of optional per-mount flags may follow, terminated with...)
7: the exact string "-"
8: filesystem type
9: filesystem device name (or string passed to mount(2) for virtual
filesystems)
10: per-device options (always the same for multiple mounts of same
device)
(any number of optional per-device flags may follow)

Note that on Linux, df now prefers to use /proc/self/mountinfo
*instead* of the old /etc/mtab file that (usually) gets written when
mount is called.

- -- 
Jonathan Callen
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCgAGBQJWVk7iAAoJEEIQbvYRB3mg0pkP/2q3QsRDFFNZShv/tH5W6zkO
tDk9GX/fMa6R+DyY151ZHiMNOqb/DZRupFudOHJOAIP8oUHAJxOdDg8NXrLFsbcs
8iNEKfLLQq2VrTPpdOoFZcNu2I8vVhc9F08IFTo2wqS8CXPzu7qBH/e5cpDsq43S
W0QKxEptgaGoYSdy3PLRoXcz8kUHYC/tbnJo33tZFu9iRss2WF1EAw3jOtZh0SNO
IoZmowzVNml9WQr7SKVGx/8lrOqzUfahb+vBRnpGi+B+VSLrhbAnkWLtxz7Kv5ws
OyuCuN2DCkyDKFjF/KxP/vp4Uyx6xkqX2KEfG0FcctMD17eHMJFscXb6RMNKQhUu
LNgqfn3Tkk555GC2lP9ZWlT08BqijQ8Tg7d36iCcwJcb5qQpCsszH2j1uHq+4pzi
pVxlshP06puswtOv6paHrTZYecavpSqLXd1VJL4p/iOwW/bgr9a70OAwVA2dQYH2
nxU84l/K76IEtj6SRz7L4rqY2B9a6uVEznDOKnPuUQ7zWg0NN8m+EYtIFLorBGE7
rDaebAeyFZurq0OvHLt3YQ6FtJMlS6zJviBCqVedgYHII2kdi0Sa54kwA2R0v2Cz
XiM9EojdYGRmmbOVFFDl41lyQC9MODzSQS+GnkwTLn11rwF6WVgmXtl+U8u3Le6c
Ogp2XYHBEOxiAhF21N9I
=MJKk
-----END PGP SIGNATURE-----

Reply via email to