DragonFly users List (threaded) for 2009-02
DragonFly BSD
DragonFly users List (threaded) for 2009-02
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: the 'why' of pseudofs

From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx>
Date: Tue, 17 Feb 2009 17:38:09 -0800 (PST)

    There are several reasons for using PFSs.

    * Shared allocation space.  You don't have to worry about blowing
      out small filesystems and having to resize them.

    * Each PFS has its own inode space, allowing mirroring to be used
      to manage backups on a per-PFS basis.  Thus mirroring slaves can
      be conveniently created and destroyed, and masters can be used
      to differentiate what you do and do not want to back up.  e.g.
      I want to backup /home, I don't want to backup /usr/obj.

      In this respect there is actually a lot more to it... PFSs are
      the primary enabler for most of the future multi-master clustering
      work.  Even slaves are extremely inconvenient to do without PFSs
      to manage independant inode spaces.

    * Each PFS can have its own history/snapshot retention policy.
      For example you want to retain history on /home but who cares
      about /tmp or /usr/obj ?  You might want to retain only a few
      days worth of snapshots for /var but hundreds of days for /home.

    * Each PFS can be pruned / reblocked independantly of the others.
      For example /build on pkgbox is configured to spend a lot longer
      pruning and reblocking then /archive.

    With regards to softlinks vs null mounts, null mounts are preferred
    because softlinks are not always handled properly, or handled in
    the expected way, by utilities.

    An example of this would be, say, /usr/src.  If /usr/src is a softlink
    then the /usr/obj paths generated would be the expanded softlink.
    So instead of getting /usr/obj/usr/src/... you would instead get

    It can get messy very quickly when the filesystem space is glued 
    together with softlinks instead of mounts.


[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]