-----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-----