[fhs-discuss] static sharable files

Roger Leigh rleigh at codelibre.net
Mon May 9 02:38:42 PDT 2011


On Mon, May 09, 2011 at 09:33:48AM +0200, Tollef Fog Heen wrote:
> ]] Bruce Dubbs 
> 
> | Currently the FHS has a discussion in Chapter 2 about sharable and 
> | unsharable files that are static or dynamic.
> | 
> | The example shows /usr as a prototypical static, shared directory.  The 
> | implication is that /usr can be mounted from a remote host.
> | 
> | The problem is that /usr has become a place that is necessary before a 
> | network mount is available.  For instance, if an administrator finds it 
> | necessary to use lspci, or lsusb before the networked /usr is mounted, 
> | the pci.ids and usb.ids files are not available.
> 
> I think
> http://www.freedesktop.org/wiki/Software/systemd/separate-usr-is-broken
> is relevant in this context.

These threads also contain issues pertaining to the / vs /usr split:
http://lists.debian.org/debian-devel/2009/05/msg00075.html
http://lists.debian.org/debian-devel/2011/01/msg00006.html

But all of the existing issues identified by having the separation
fail to address an even bigger issue: sharing /usr is entirely
incompatible with a modern package manager, and this has always been
the case.  See:

http://lists.debian.org/debian-devel/2011/01/msg00152.html

In this message, I've detailed various historical use cases for a
separate /usr, together with brief pros/cons/rationale.  On a modern
Linux system, most of these make zero sense, and it is preferable to
have them on the same filesystem.  This summary is the most important
point (refers to dpkg, but applies to all package managers):

  "I think many instances of confusion and misunderstanding over the / and
  /usr separation, particularly with regard to NFS mounts, but also
  covering read-only mounts and recovery are due to not fully considering
  the implications of a modern package manager on the traditional UNIX
  filesystem hierarchy.  We can consider that there are just two
  different types of directory in the file system:

  • those managed by dpkg
  • those containing user data which are not under dpkg control

  All locations managed by dpkg must be considered a unified whole; it
  does not make any sense to share one part and not another.  They must
  be updated together or else the system will be left in a broken and
  inconsistent state.  A separate /usr is no longer required to boot the
  system now we have initramfs."

> Another option is to deprecate or disallow /usr not being on the root
> file system.
> 
> Separate /usr made sense back when drives were small and disk space was
> expensive, but in the vast majority of cases today, having /usr on the
> root file system is no real burden.  Not having it on the root file
> system means more brittle setups and trying to share /usr between
> installations can easily lead to maintenance headaches.
> 
> Separate /usr makes sense is in the embedded case where you are
> seriously space-restricted and you might want have your OS on fast flash
> and the apps and user data on cheaper, but slower flash.  In those
> cases, I'd suggest putting apps in /opt rather than the more common
> /usr.

This makes a lot of sense.

From the FHS POV, I would like to suggest these changes:

• "/usr is shareable, read-only data"
  - Remove the "shareable" qualifier.  With a package manager such as
    dpkg or rpm etc., it does not make any sense to share /usr since
    the content is managed as a whole with the other contents of /,
    including conffiles.
  - While it's technically possible to share /usr, this requires a lot
    of additional custom support scripts to sync the configuration files
    and other parts of the software not provided under /usr; no
    distribution caters for this use case directly.
  - Even when you don't have a package manager, you still have the issue
    with the configuration files not being shared (as pointed out
    elsewhere in this thread).
• Sharing / works, so permit sharing of / (which would include /usr)
  - Sharing a read-only / allows use on many hosts; host-specific
    configuration can be stored in a writable aufs/unionfs overlay, or
    on /run (for example).
• Permit /usr to be a symlink to /.  This gives distributors the option
  of unifying the / and /usr namespaces.  This is a logical consequence
  of keeping / and /usr on the same filesystem.  In the distant future
  it might be possible to eliminate /usr entirely, but at this point
  it would be appropriate to have the option of making it a symlink.

Related to /usr it would also be good to:
• Remove the special treatment for /usr/X11R6; we no longer need it
  now X uses the standard hierarchy (same as for /usr/games).


Regards,
Roger

-- 
  .''`.  Roger Leigh
 : :' :  Debian GNU/Linux             http://people.debian.org/~rleigh/
 `. `'   Printing on GNU/Linux?       http://gutenprint.sourceforge.net/
   `-    GPG Public Key: 0x25BFB848   Please GPG sign your mail.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
Url : http://lists.linux-foundation.org/pipermail/fhs-discuss/attachments/20110509/2451a781/attachment.pgp 


More information about the fhs-discuss mailing list