From: Marc Perkel <mperkel@yahoo.com>
To: Craig Ruff <cruff@ucar.edu>
Cc: Kyle Moffett <mrmacman_g4@mac.com>,
Michael Tharp <gxti@partiallystapled.com>,
alan <alan@clueserver.org>,
LKML Kernel <linux-kernel@vger.kernel.org>,
Lennart Sorensen <lsorense@csclub.uwaterloo.ca>
Subject: Re: Thinking outside the box on file systems
Date: Wed, 15 Aug 2007 13:35:08 -0700 (PDT) [thread overview]
Message-ID: <614991.75774.qm@web52507.mail.re2.yahoo.com> (raw)
In-Reply-To: <20070815182252.GA14104@ucar.edu>
--- Craig Ruff <cruff@ucar.edu> wrote:
> On Wed, Aug 15, 2007 at 10:30:19AM -0700, Marc
> Perkel wrote:
> > --- Kyle Moffett <mrmacman_g4@mac.com> wrote:
> > > Except they do, and without directories the
> > > performance of your average filesystem is going
> to suck.
> >
> > Actually you would get a speed improvement. You
> hash
> > the full name and get the file number. You don't
> have
> > to break up the name into sections except for
> > evaluating name permissions.
> >
> > The important concept here is that files and name
> > aren't stored by levels of directories. The name
> > points to the file number. Directory levels are
> > emulated based on name separation characters or
> any
> > other algorithm that you want to use.
> >
> > One could create a file system and permission
> system
> > that gets rid of the concept of directories
> entirely
> > if one chooses to.
>
> I would like to add support for Kyle's assertion.
>
> The model described by Marc is exactly the method
> used by the current
> version of the NCAR Mass Storage Service (MSS),
> which is data archive
> of 4+ petabytes contained in 40+ million files. To
> the user's point
> of view, it looks somewhat like a POSIX file system
> with both some
> extensions and deficiencies. The MSS was designed
> in the mid-1980s,
> in an era where the costs of the supercomputers
> (Cray-1s at that time)
> were paramount. This lead to some MSS design
> decisions to minimize the
> need for users to rerun jobs on the expensive
> supercomputer just because
> they messed up their MSS file creation statements.
>
> Files names are a maximum of 128 bytes, with a
> dynamically managed
> directory structure indicated by '/' characters in
> the name. The file
> name is hashed, and the hash table provides the
> internal file number (the
> address in the Master File Directory (MFD)). Any
> parent directories
> are created automatically by the system upon file
> creation, and are
> automatically deleted if empty upon file deletion.
> Directories also
> have a self pointer, and both files and directories
> are chained together
> to allow the user to list (or otherwise manipulate)
> the contents of
> a directory.
>
> The biggest problem with this model is that to
> manipulate the a directory
> itself, you have to simulate the operation on all of
> the files contained
> within it. For example to rename a directory with
> 'n' descendants,
> you must perform:
>
> n+1 hash table removals
> n+1 hash table insertions (with collision
> detection)
> n+1 MFD record updates
> 1 directory chain removal
> 1 directory chain insertion
>
> This is, needless to say, very painful when n is
> large. Since users
> must use directory trees to efficiently manage their
> data holdings,
> efficient directory manipulation is essential.
> Contrast this with
> the number of operations required for a directory
> rename if files
> do not record their complete pathname:
>
> 1 directory chain removal
> 1 directory chain insertion
>
> Fortunately we are currently working to change from
> using a model like
> Marc describes to one Kyle describes.
>
I am describing a kind of functionality and not tied
to the method that implements that functionality.
Perhaps a straight hash of the name isn't the best way
to implement it. Just because someone tried to do
something like what I'm suggesting years ago and it
didn't work doesn't mean that it can't be done. You
just have to come up with a better method.
Lets take this example. We are moving a million files
from one branch if a tree to another. Do we wait for a
million renames and hashes to occur? Of course not. So
what to we do? We continue to be innovative.
One must first adopt the attitude that anything can be
done - you just have to be persistent until you figure
out how.
In this case we could have a name translation layer so
if you want to do a move you change the translation
layer indicating that a move occurred. Thus access to
the new files get translated into the old name and
accessed until the files are rehashed.
Or - maybe there is some sort of tokenizer database
for the names in the directory sections and you can
just rename the section. Sort of a tree like database
of hashes data within hashes.
My point - you start with what you want to do and then
you figure out how to make it happen. I can't answer
all the details of how to make it happen but when I do
something I start with the idea that if this were done
right it would work this way and then I figure out
how.
Marc Perkel
Junk Email Filter dot com
http://www.junkemailfilter.com
____________________________________________________________________________________
Take the Internet to Go: Yahoo!Go puts the Internet in your pocket: mail, news, photos & more.
http://mobile.yahoo.com/go?refer=1GNXIC
next prev parent reply other threads:[~2007-08-15 20:35 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-14 22:45 Marc Perkel
2007-08-14 22:51 ` alan
2007-08-15 13:02 ` Michael Tharp
2007-08-15 13:30 ` Lennart Sorensen
2007-08-15 13:53 ` Kyle Moffett
2007-08-15 15:14 ` Michael Tharp
2007-08-15 16:36 ` Marc Perkel
2007-08-15 17:17 ` Kyle Moffett
2007-08-15 17:30 ` Marc Perkel
2007-08-15 18:22 ` Craig Ruff
2007-08-15 20:35 ` Marc Perkel [this message]
2007-08-16 11:27 ` Helge Hafting
2007-08-15 16:02 ` Marc Perkel
2007-08-15 16:57 ` Valdis.Kletnieks
2007-08-15 17:09 ` Marc Perkel
2007-08-15 17:22 ` Kyle Moffett
2007-08-15 17:34 ` Marc Perkel
2007-08-18 23:27 ` Alan
2007-08-18 23:26 ` Alan
2007-08-19 2:03 ` david
2007-08-19 2:57 ` Al Viro
2007-09-01 23:20 ` Oleg Verych
2007-08-15 19:20 ` Lennart Sorensen
2007-08-16 23:12 ` H. Peter Anvin
2007-08-15 16:58 ` Kyle Moffett
2007-08-15 17:19 ` Marc Perkel
2007-08-15 17:37 ` Kyle Moffett
2007-08-15 17:59 ` Marc Perkel
2007-08-15 19:26 ` Lennart Sorensen
2007-08-15 20:11 ` Kyle Moffett
2007-08-15 20:44 ` Marc Perkel
2007-08-15 21:04 ` Lennart Sorensen
2007-08-16 11:42 ` Helge Hafting
2007-08-16 12:09 ` linux-os (Dick Johnson)
2007-08-15 17:34 ` Phillip Susi
2007-08-15 17:53 ` Kyle Moffett
2007-08-15 18:05 ` Marc Perkel
2007-08-15 18:14 ` Kyle Moffett
2007-08-15 20:20 ` Marc Perkel
2007-08-15 20:43 ` Phillip Susi
2007-08-15 20:50 ` Marc Perkel
2007-08-15 21:20 ` Valdis.Kletnieks
2007-08-15 22:48 ` Marc Perkel
2007-08-16 3:42 ` Valdis.Kletnieks
2007-08-15 20:38 ` Phillip Susi
2007-08-15 21:17 ` Kyle Moffett
2007-08-15 22:14 ` Phillip Susi
2007-08-16 4:44 ` Kyle Moffett
2007-08-16 15:09 ` Phillip Susi
2007-08-16 15:29 ` Valdis.Kletnieks
2007-08-16 17:28 ` Phillip Susi
2007-08-16 17:31 ` Valdis.Kletnieks
2007-08-16 22:03 ` Phillip Susi
2007-08-16 23:17 ` Kyle Moffett
2007-08-17 4:24 ` Marc Perkel
2007-08-17 4:52 ` Valdis.Kletnieks
2007-08-17 15:19 ` Phillip Susi
2007-08-17 15:39 ` Valdis.Kletnieks
2007-08-17 19:01 ` Phillip Susi
2007-08-18 5:48 ` Kyle Moffett
2007-08-18 16:45 ` Marc Perkel
2007-08-18 18:19 ` Al Viro
2007-08-19 4:07 ` Marc Perkel
2007-08-20 7:05 ` Nix
2007-08-20 7:47 ` Brennan Ashton
2007-08-20 11:18 ` Marc Perkel
2007-08-20 13:32 ` linux-os (Dick Johnson)
2007-08-20 15:25 ` Lennart Sorensen
2007-08-20 15:26 ` Helge Hafting
2007-08-20 19:52 ` Nix
2007-08-20 16:21 ` [OT] " Randy Dunlap
2007-08-20 16:20 ` Xavier Bestel
2007-08-20 14:29 ` Phillip Susi
2007-08-20 15:13 ` Lennart Sorensen
2007-08-20 14:24 ` Phillip Susi
2007-08-15 22:40 ` Marc Perkel
2007-08-15 17:54 ` Marc Perkel
2007-08-15 17:02 ` Marc Perkel
2007-08-15 17:30 ` Michael Tharp
2007-08-15 17:51 ` Marc Perkel
2007-08-15 20:02 ` Yakov Lerner
2007-08-15 7:49 Tim Tassonis
2007-08-15 18:23 Brian Wheeler
2007-08-20 11:54 Tim Tassonis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=614991.75774.qm@web52507.mail.re2.yahoo.com \
--to=mperkel@yahoo.com \
--cc=alan@clueserver.org \
--cc=cruff@ucar.edu \
--cc=gxti@partiallystapled.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lsorense@csclub.uwaterloo.ca \
--cc=mrmacman_g4@mac.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®