[conspire] fyi: Understanding the bin, sbin, usr/bin , usr/sbin split

Rick Moen rick at linuxmafia.com
Thu Feb 2 18:58:26 PST 2012


I wrote:

> The ability to boot a minimal standalone system without successfully
> mounting /usr and ability to do repair, maintenance, backup, and restore
> from a small filesystem furnishing /bin, /sbin, and /lib is _not_ an
> artifact of small hard drives.  It was routine caution against likely
> failure modes involving the contents of /usr, providing a method to
> recover from them.

Nor is that the only reason why people sometimes elect to have /usr
separate.  There are a number of other reasons, and frankly Rob Landley 
really ought to know better.  If I seem a little peevish about this
entire topic, it's because I recognise the distinctive odour of
freedesktop.org bullshit:  They never learn, and there's no point
talking to them.

Anyway, the server that hosts this mailing list has:

<System> <mount point>          <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/sda7       /               ext3    defaults,errors=remount-ro 0       1
/dev/md3        /home           ext3    defaults        0       2
/dev/sda8       /recovery       ext3    noauto          0       2
/dev/sda9       /usr            ext2    nodev,ro        0       2
/dev/md4        /usr/local      ext3    defaults        0       2
/dev/sda6       /var            ext2    noatime,nodev,nosuid 0       2
/dev/md1        /var/lib        ext3    nodev           0       2
/dev/md2        /var/spool      ext3    defaults        0       2
/dev/md0        /var/www        ext3    nodev,nosuid    0       2
/dev/sda5       none            swap    sw              0       0
/dev/sdb8       none            swap    sw              0       0
/dev/sdc8       none            swap    sw              0       0

Notice that the /usr filesystem is (1) ext2 (unjournaled) and (2) normally 
read-only [RM:  originally posted to say 'unmounted' in a moment of 
over-hasty writing; correcting in the archives to avert reader confusion].  
What's that all about?

Having /usr normally read-only [RM:  originally posted to say 'unmounted']
is another example of 'routine caution against likely failure modes'.  
That filesystem is where almost all system programs and libs live, and 
on a typical Linux system is (at least by default and initially) where 
most of its complexity and disk usage is.  It is a tree you as local 
system administrator wish to protect against mishap.  The most likely 
source of such mishap is: you, the local system administrator.

I have /usr normally read-only [RM:  originally posted to say 'unmounted'] 
in order to have in place a first-level default protection against the 
worst threat to its orderly management and contents, i.e., against myself.  
If I am careless with the root-user account and launch a recursive chown 
of something that would cascade down /usr, for example, it will (by design) 
fail.

Pretty much the only time /usr needs to be mounted read-write is during
package operations.  For that exact reason, I have a pair of scripts 
invoked via dpkg hooks that remount /usr read-write just before packages
get installed or removed, and then remount it read-only again
immediately when the package operations are done.

Note that I carve /usr/local, the only part of /usr that isn't normally
static in the way I describe, as a separate filesystem -- so that /usr 
is free to be treated as static other than during package operations.

Rob Landley and his friends at freedesktop.org?  I'm sure the thought of
this functionality never even occurred to them.   They've thought no
further than their own party line that 'separate /usr has been broken
for years', and the idea of consulting actual system administrators
about their professional concerns before screwing around with
filesystems is the very furthest thought from their minds.

Why is /usr an ext2 filesystem?  Because, since it's mounted read-only
99.999% of the time and only briefly made read-write for a few seconds
while adding or removing packages, the overhead of journaling would be
wasted.  So, Don't Do That, Then.

The /var filesystem is ext2 (and has the noatime mount option) for
maximum performance, having had all subtrees of ongoing significance
(/var/lib, /var/spool, /var/www) carved out separately.

I expect the freedesktop.org people likewise cannot understand the
motivation of custom mount flags and filesystem choice for performance,
either -- nor strategic ordering of filesystems around the swap partitions
in order to minimise average seek distance, improved disk speed, and 
longer disk service before failure.  There seem to be a whole lot of 
aspects of competent system operation that they class as 'obsolete' and
'what people used to do when they had small hard disks'.

And, just by coincidence, freedesktop.org / GNOME stuff apparently
breaks unless everything's on One Big Dumb Partition.  Gosh, who'd have
thought?





More information about the conspire mailing list