* Re: [RFC] mount flag "direct" (fwd)
2002-09-03 21:07 ` Peter T. Breuer
@ 2002-09-03 21:15 ` Andreas Dilger
2002-09-03 21:15 ` Rik van Riel
` (4 subsequent siblings)
5 siblings, 0 replies; 28+ messages in thread
From: Andreas Dilger @ 2002-09-03 21:15 UTC (permalink / raw)
To: Peter T. Breuer; +Cc: Lars Marowsky-Bree, root, Rik van Riel, linux kernel
On Sep 03, 2002 23:07 +0200, Peter T. Breuer wrote:
> You don't really want the whole rationale. It concerns certain
> european (nay, world ..) scientific projects and the calculations of the
> technologists about the progress in hardware over the next few years.
> We/they foresee that we will have to move to multiple relatively small
> distributed disks per node in order to keep the bandwidth per unit of
> storage at the levels that they will have to be at to keep the farms
> fed. We are talking petabytes of data storage in thousands of nodes
> moving over gigabit networks.
>
> The "big view" calculations indicate that we must have distributed
> shared writable data.
>
> These calculations affect us all. They show us what way computing
> will evolve under the price and technology pressures. The calculations
> are only looking to 2006, but that's what they show. For example
> if we think about a 5PB system made of 5000 disks of 1TB each in a GE
> net, we calculate the aggregate bandwidth available in the topology as
> 50GB/s, which is less than we need in order to keep the nodes fed
> at the rates they could be fed at (yes, a few % loss translates into
> time and money). To increase available bandwidth we must have more
> channels to the disks, and more disks, ... well, you catch my drift.
>
> So, start thinking about general mechanisms to do distributed storage.
> Not particular FS solutions.
Please see lustre.org.
Cheers, Andreas
--
Andreas Dilger
http://www-mddsp.enel.ucalgary.ca/People/adilger/
http://sourceforge.net/projects/ext2resize/
^ permalink raw reply [flat|nested] 28+ messages in thread* Re: [RFC] mount flag "direct" (fwd)
2002-09-03 21:07 ` Peter T. Breuer
2002-09-03 21:15 ` Andreas Dilger
@ 2002-09-03 21:15 ` Rik van Riel
2002-09-03 21:54 ` Anton Altaparmakov
` (3 subsequent siblings)
5 siblings, 0 replies; 28+ messages in thread
From: Rik van Riel @ 2002-09-03 21:15 UTC (permalink / raw)
To: Peter T. Breuer; +Cc: Lars Marowsky-Bree, root, linux kernel
On Tue, 3 Sep 2002, Peter T. Breuer wrote:
> The "big view" calculations indicate that we must have distributed
> shared writable data.
Agreed. Note that the same big view also dictates that any such
solution must have good performance.
Do you need any more reasons for having special cluster filesystems
instead of trying to add clustering to already existing filesystems ?
regards,
Rik
--
Bravely reimplemented by the knights who say "NIH".
http://www.surriel.com/ http://distro.conectiva.com/
^ permalink raw reply [flat|nested] 28+ messages in thread* Re: [RFC] mount flag "direct" (fwd)
2002-09-03 21:07 ` Peter T. Breuer
2002-09-03 21:15 ` Andreas Dilger
2002-09-03 21:15 ` Rik van Riel
@ 2002-09-03 21:54 ` Anton Altaparmakov
2002-09-03 22:46 ` Andreas Dilger
2002-09-03 23:19 ` Daniel Phillips
2002-09-04 7:16 ` Helge Hafting
` (2 subsequent siblings)
5 siblings, 2 replies; 28+ messages in thread
From: Anton Altaparmakov @ 2002-09-03 21:54 UTC (permalink / raw)
To: ptb; +Cc: Lars Marowsky-Bree, Peter T. Breuer, root, Rik van Riel, linux kernel
At 22:07 03/09/02, Peter T. Breuer wrote:
>"A month of sundays ago Lars Marowsky-Bree wrote:"
> > On 2002-09-03T18:29:02,
> > "Peter T. Breuer" <ptb@it.uc3m.es> said:
> > > If that presently is not possible, then I would like to think about
> > > making it possible.
> >
> > Just please, tell us why.
>
>You don't really want the whole rationale. It concerns certain
>european (nay, world ..) scientific projects and the calculations of the
>technologists about the progress in hardware over the next few years.
>We/they foresee that we will have to move to multiple relatively small
>distributed disks per node in order to keep the bandwidth per unit of
>storage at the levels that they will have to be at to keep the farms
>fed. We are talking petabytes of data storage in thousands of nodes
>moving over gigabit networks.
>
>The "big view" calculations indicate that we must have distributed
>shared writable data.
>
>These calculations affect us all. They show us what way computing
>will evolve under the price and technology pressures. The calculations
>are only looking to 2006, but that's what they show. For example
>if we think about a 5PB system made of 5000 disks of 1TB each in a GE
>net, we calculate the aggregate bandwidth available in the topology as
>50GB/s, which is less than we need in order to keep the nodes fed
>at the rates they could be fed at (yes, a few % loss translates into
>time and money). To increase available bandwidth we must have more
>channels to the disks, and more disks, ... well, you catch my drift.
>
>So, start thinking about general mechanisms to do distributed storage.
>Not particular FS solutions.
Hm, I believe you are barking up the wrong tree. Either you are omitting
too much information in your statement above or you are contradicting
yourself.
What you are looking for is _exactly_ particular FS solution(s)! And in
particular you are looking for a truly distributed file system.
I just get the impression you are not fully aware what a distributed FS
(call it DFS for short) actually is.
In my understanding a DFS offers exactly what you need: each node has disks
and all disks on all nodes are part of the very same file system. Of course
each node maintains the local disks, i.e. the local part of the file system
and certain operations require that the nodes communicates with the "DFS
master node(s)" in order for example to reserve blocks of disks or to
create/rename files (need to make sure no duplicate filenames are
instantiated for example). -- Sound familiar so far? You wanted to do
exactly the same things but at the block layer and the VFS layer levels
instead of the FS layer...
The difference between a DFS and your proposal is that a DFS maintains all
the caching benefits of a normal FS at the local node level, while your
proposal completely and entirely disables caching, which is debatably
impossible (due to need to load things into ram to read them and to modify
them and then write them back) and certainly no FS author will accept their
FS driver to be crippled in such a way. The performance loss incurred by
removing caching completely is going to make sure you will only be dreaming
of those 50GiB/sec. More likely you will be getting a few bytes/sec... (OK,
I exaggerate a bit.) The seek times on the disks together with the
read/write timings are going to completely annihilate performance. A DFS
maintains caching at local node level, so you can still keep open inodes in
memory for example (just don't allow any other node to open the same file
at the same time or you need to do some juggling via the "Master DFS node").
To give you an analogy, you can think of a DFS like a NUMA machine, where
you have different access speeds to different parts of memory (for DFS the
"storage device", same thing really) and where decision on where to store
things are decided depending on the resource/time cost involved. Simplest
example: A file created on node A, will be allocated/written to a disk (or
multiple disks) located on node A, because accessing the local disks has a
lower time cost compared to going to a different node over the slower wire.
Your time would be much better spent in creating the _one_ true DFS, or
helping improve one of the existing ones instead of trying to hack up the
VFS/block layers to pieces. It almost certainly will be a hell of a lot
less work to implement a decent DFS in comparison to changing the block
layer, the VFS, _and_ every single FS driver out there to comply with the
block layer and VFS changes. And at the same time you get exactly the same
features you wanted to have but with hugely boosted performance.
I hope my ramblings made some kind of sense...
Best regards,
Anton
--
"I've not lost my mind. It's backed up on tape somewhere." - Unknown
--
Anton Altaparmakov <aia21 at cantab.net> (replace at with @)
Linux NTFS Maintainer / IRC: #ntfs on irc.openprojects.net
WWW: http://linux-ntfs.sf.net/ & http://www-stu.christs.cam.ac.uk/~aia21/
^ permalink raw reply [flat|nested] 28+ messages in thread* Re: [RFC] mount flag "direct" (fwd)
2002-09-03 21:54 ` Anton Altaparmakov
@ 2002-09-03 22:46 ` Andreas Dilger
2002-09-03 23:19 ` Daniel Phillips
1 sibling, 0 replies; 28+ messages in thread
From: Andreas Dilger @ 2002-09-03 22:46 UTC (permalink / raw)
To: Anton Altaparmakov
Cc: ptb, Lars Marowsky-Bree, root, Rik van Riel, linux kernel
On Sep 03, 2002 22:54 +0100, Anton Altaparmakov wrote:
> In my understanding a DFS offers exactly what you need: each node has disks
> and all disks on all nodes are part of the very same file system. Of course
> each node maintains the local disks, i.e. the local part of the file system
> and certain operations require that the nodes communicates with the "DFS
> master node(s)" in order for example to reserve blocks of disks or to
> create/rename files (need to make sure no duplicate filenames are
> instantiated for example). -- Sound familiar so far? You wanted to do
> exactly the same things but at the block layer and the VFS layer levels
> instead of the FS layer...
>
> The difference between a DFS and your proposal is that a DFS maintains all
> the caching benefits of a normal FS at the local node level, while your
> proposal completely and entirely disables caching, which is debatably
> impossible (due to need to load things into ram to read them and to modify
> them and then write them back) and certainly no FS author will accept their
> FS driver to be crippled in such a way. The performance loss incurred by
> removing caching completely is going to make sure you will only be dreaming
> of those 50GiB/sec. More likely you will be getting a few bytes/sec... (OK,
> I exaggerate a bit.) The seek times on the disks together with the
> read/write timings are going to completely annihilate performance. A DFS
> maintains caching at local node level, so you can still keep open inodes in
> memory for example (just don't allow any other node to open the same file
> at the same time or you need to do some juggling via the "Master DFS node").
>
> Your time would be much better spent in creating the _one_ true DFS, or
> helping improve one of the existing ones instead of trying to hack up the
> VFS/block layers to pieces. It almost certainly will be a hell of a lot
> less work to implement a decent DFS in comparison to changing the block
> layer, the VFS, _and_ every single FS driver out there to comply with the
> block layer and VFS changes. And at the same time you get exactly the same
> features you wanted to have but with hugely boosted performance.
This is exactly what Lustre is supposed to be. Many nodes, each with
local storage, and clients are able to do I/O directly to the storage
nodes (for non-local storage, or if they have no local storage at all).
There is (currently) a single metadata server (MDS) which controls the
directory tree locking, and the storage nodes control the locking of
inodes (objects) local to their storage.
It's not quite in a robust state yet, but we're working on it.
Cheers, Andreas
--
Andreas Dilger
http://www-mddsp.enel.ucalgary.ca/People/adilger/
http://sourceforge.net/projects/ext2resize/
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [RFC] mount flag "direct" (fwd)
2002-09-03 21:54 ` Anton Altaparmakov
2002-09-03 22:46 ` Andreas Dilger
@ 2002-09-03 23:19 ` Daniel Phillips
2002-09-04 0:18 ` Anton Altaparmakov
2002-09-04 5:23 ` David Lang
1 sibling, 2 replies; 28+ messages in thread
From: Daniel Phillips @ 2002-09-03 23:19 UTC (permalink / raw)
To: Anton Altaparmakov, ptb
Cc: Lars Marowsky-Bree, Peter T. Breuer, root, Rik van Riel, linux kernel
On Tuesday 03 September 2002 23:54, Anton Altaparmakov wrote:
> The difference between a DFS and your proposal is that a DFS maintains all
> the caching benefits of a normal FS at the local node level, while your
> proposal completely and entirely disables caching, which is debatably
> impossible (due to need to load things into ram to read them and to modify
> them and then write them back) and certainly no FS author will accept their
> FS driver to be crippled in such a way. The performance loss incurred by
> removing caching completely is going to make sure you will only be dreaming
> of those 50GiB/sec. More likely you will be getting a few bytes/sec... (OK,
> I exaggerate a bit.) The seek times on the disks together with the
> read/write timings are going to completely annihilate performance. A DFS
> maintains caching at local node level, so you can still keep open inodes in
> memory for example (just don't allow any other node to open the same file
> at the same time or you need to do some juggling via the "Master DFS node").
You're well wide of the mark here, in that you're relying on the assumption
that caching is important to the application he has in mind. The raw transfer
bandwidth may well be sufficient, especially if it is unimpeded by being
funneled through a bottleneck like our vfs cache.
--
Daniel
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [RFC] mount flag "direct" (fwd)
2002-09-03 23:19 ` Daniel Phillips
@ 2002-09-04 0:18 ` Anton Altaparmakov
2002-09-04 5:23 ` David Lang
1 sibling, 0 replies; 28+ messages in thread
From: Anton Altaparmakov @ 2002-09-04 0:18 UTC (permalink / raw)
To: Daniel Phillips
Cc: ptb, Lars Marowsky-Bree, Peter T. Breuer, root, Rik van Riel,
linux kernel
At 00:19 04/09/02, Daniel Phillips wrote:
>On Tuesday 03 September 2002 23:54, Anton Altaparmakov wrote:
> > The difference between a DFS and your proposal is that a DFS maintains all
> > the caching benefits of a normal FS at the local node level, while your
> > proposal completely and entirely disables caching, which is debatably
> > impossible (due to need to load things into ram to read them and to modify
> > them and then write them back) and certainly no FS author will accept
> their
> > FS driver to be crippled in such a way. The performance loss incurred by
> > removing caching completely is going to make sure you will only be
> dreaming
> > of those 50GiB/sec. More likely you will be getting a few bytes/sec...
> (OK,
> > I exaggerate a bit.) The seek times on the disks together with the
> > read/write timings are going to completely annihilate performance. A DFS
> > maintains caching at local node level, so you can still keep open
> inodes in
> > memory for example (just don't allow any other node to open the same file
> > at the same time or you need to do some juggling via the "Master DFS
> node").
>
>You're well wide of the mark here, in that you're relying on the assumption
>that caching is important to the application he has in mind. The raw transfer
>bandwidth may well be sufficient, especially if it is unimpeded by being
>funneled through a bottleneck like our vfs cache.
I don't think I am. I think we just define "caching" differently. The "raw
transfer bandwidth" will be close to zero if no caching happens at all. I
agree with you if you define caching as data caching. But both Peter and I
are talking about metadata caching + data caching. Sure, you can throw data
caching out the window and actually gain performance. I would never dispute
that. But if you throw away metadata caching you destroy performance. Maybe
not on "simplistic" file systems like ext2 but certainly so on complex ones
like ntfs... I described already what a single read in ntfs entails if no
metadata caching happens. I doubt very much that there is a possible
scenario where not doing any metadata caching would improve performance (on
ntfs and at a guess many other fs). Even a sequential read or write from
start of file to end of file would be really killed without caching of the
logical to physical block mapping table for the inode being read/written on
ntfs...
So we aren't in disagreement I think. (-:
Best regards,
Anton
--
"I've not lost my mind. It's backed up on tape somewhere." - Unknown
--
Anton Altaparmakov <aia21 at cantab.net> (replace at with @)
Linux NTFS Maintainer / IRC: #ntfs on irc.openprojects.net
WWW: http://linux-ntfs.sf.net/ & http://www-stu.christs.cam.ac.uk/~aia21/
^ permalink raw reply [flat|nested] 28+ messages in thread* Re: [RFC] mount flag "direct" (fwd)
2002-09-03 23:19 ` Daniel Phillips
2002-09-04 0:18 ` Anton Altaparmakov
@ 2002-09-04 5:23 ` David Lang
1 sibling, 0 replies; 28+ messages in thread
From: David Lang @ 2002-09-04 5:23 UTC (permalink / raw)
To: Daniel Phillips
Cc: Anton Altaparmakov, Peter T. Breuer, Lars Marowsky-Bree, root,
Rik van Riel, linux kernel
On Wed, 4 Sep 2002, Daniel Phillips wrote:
>
> You're well wide of the mark here, in that you're relying on the assumption
> that caching is important to the application he has in mind. The raw transfer
> bandwidth may well be sufficient, especially if it is unimpeded by being
> funneled through a bottleneck like our vfs cache.
>
the fact that he is saying that this needs to run normal filesystems tells
us that.
if you need a filesystem to max out transfer rate and don't want to have
it cache things that is a VERY specialized thing and not something that
will match what NTFS/XFS/JFS/ReiserFS/ext2 etc are going to be used for.
either he has a very specialized need (in which case a specialized
filesystem is probably the best bet anyway) or he is trying to support
normal uses (in which case caching is important)
however the point is that the read-modify-write cycle is a form of cache,
it is only safe if you aquire a lock at the beginning of it and release it
at the end. A standard filesystem won't do this, this is what makes a DFS.
David Lang
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [RFC] mount flag "direct" (fwd)
2002-09-03 21:07 ` Peter T. Breuer
` (2 preceding siblings ...)
2002-09-03 21:54 ` Anton Altaparmakov
@ 2002-09-04 7:16 ` Helge Hafting
2002-09-04 8:39 ` Andreas Dilger
2002-09-04 8:41 ` Peter T. Breuer
2002-09-04 7:50 ` Joachim Breuer
2002-09-04 9:26 ` Lars Marowsky-Bree
5 siblings, 2 replies; 28+ messages in thread
From: Helge Hafting @ 2002-09-04 7:16 UTC (permalink / raw)
To: ptb, linux-kernel
"Peter T. Breuer" wrote:
>
> "A month of sundays ago Lars Marowsky-Bree wrote:"
> > On 2002-09-03T18:29:02,
> > "Peter T. Breuer" <ptb@it.uc3m.es> said:
> >
> > > > Lets say you have a perfect locking mechanism, a fake SCSI layer
> > > OK.
> >
> > BTW, I would like to see your perfect distributed locking mechanism.
>
> That bit's easy and is done. The "trick" is NOT to distribute the lock,
> but to have it in one place - on the driver that guards the remote
> disk resource.
>
> > > The directory entry would certainly have to be reread after a write
> > > operation on disk that touched it - or more simply, the directory entry
> > > would have to be reread every time it were needed, i.e. be uncached.
> >
> > *ouch* Sure. Right. You just have to read it from scratch every time. How
> > would you make readdir work?
>
> Well, one has to read it from scratch. I'll set about seeing how to do.
> CLues welcome.
>
> > > If that presently is not possible, then I would like to think about
> > > making it possible.
> >
> > Just please, tell us why.
>
> You don't really want the whole rationale. It concerns certain
> european (nay, world ..) scientific projects and the calculations of the
> technologists about the progress in hardware over the next few years.
> We/they foresee that we will have to move to multiple relatively small
> distributed disks per node in order to keep the bandwidth per unit of
> storage at the levels that they will have to be at to keep the farms
> fed. We are talking petabytes of data storage in thousands of nodes
> moving over gigabit networks.
>
> The "big view" calculations indicate that we must have distributed
> shared writable data.
>
Increasing demands for performance may indeed force a need
for shared writeable data someday. Several solutions for that is
being developed.
Your idea about re-reading stuff over and over isn't going to help
because that sort of thing consumes much more bandwith. Caches help
because they _avoid_ data transfers. So shared writeable data
will happen, and it will use some sort of cache coherency,
for performance reasons.
> These calculations affect us all. They show us what way computing
> will evolve under the price and technology pressures. The calculations
> are only looking to 2006, but that's what they show. For example
> if we think about a 5PB system made of 5000 disks of 1TB each in a GE
> net, we calculate the aggregate bandwidth available in the topology as
> 50GB/s, which is less than we need in order to keep the nodes fed
> at the rates they could be fed at (yes, a few % loss translates into
> time and money). To increase available bandwidth we must have more
> channels to the disks, and more disks, ... well, you catch my drift.
>
> So, start thinking about general mechanisms to do distributed storage.
> Not particular FS solutions.
Distributed systems will need somewhat different solutions, because
they are fundamentally different. Existing fs'es like ext2 is built
around a single-node assumption. I claim that making a new fs from
scratch for the distributed case is easier than tweaking ext2
and 10-20 other existing fs'es to work in such an environment.
Making a new fs from scratch isn't such a big deal after all.
To make a historical parallel:
Data used to be stored on sequential media like tapes (or
even stacks of punched cards) filesystems were developed
for tapes. Then they made disks.
Using a disk as a tape with the existing tape-fs'es
worked, but didn't give much benefit. So we got something
new - block-based filesystems designed to take advantage
of the new random-access media.
The case of distributed storage is similiar, it is fundamentally
different from the one-node case just as random-access media
were different from sequential.
I think a new design that considers both the benefits and
problems of many nodes will be much better than trying to
patch the existing fs'es. An approach that starts with
throwing away the thousand-fold speedup provided by caching
isn't very convincing.
If you merely proposed making the VFS and existing fs'es
cache-coherent,then I'd agree it might work well, but
it'd be a _lot_ of work. Which is no problem
if you volunteer to do the work. But simplification
by throwing away caching _will_ be too slow, it certainly
don't fit the idea of getting more bandwith.
More bandwith won't help if you throw all of it and then some
away on massive re-reading of data.
Wanting a generic mechanism instead of a special fs
might be the way to go, but it'd be a generic mechanism
used by a bunch of new fs'es designed to work distributed.
There will probably be different needs for which people
will build different distributed fs'es. So a
"VDFS" makes sense for those fs'es, putting the common stuff
in one place. But I am sure the VDFS will contain cache
coherency calls for dropping pages from cache when
necessary, instead of dropping the cache unconditionally
in every case.
Helge Hafting
^ permalink raw reply [flat|nested] 28+ messages in thread* Re: [RFC] mount flag "direct" (fwd)
2002-09-04 7:16 ` Helge Hafting
@ 2002-09-04 8:39 ` Andreas Dilger
2002-09-04 12:07 ` Helge Hafting
2002-09-04 8:41 ` Peter T. Breuer
1 sibling, 1 reply; 28+ messages in thread
From: Andreas Dilger @ 2002-09-04 8:39 UTC (permalink / raw)
To: Helge Hafting; +Cc: ptb, linux-kernel
On Sep 04, 2002 09:16 +0200, Helge Hafting wrote:
> Your idea about re-reading stuff over and over isn't going to help
> because that sort of thing consumes much more bandwith. Caches help
> because they _avoid_ data transfers. So shared writeable data
> will happen, and it will use some sort of cache coherency,
> for performance reasons.
You assume too much about the applications. For example, Oracle
does not want _any_ cacheing to be done by the OS, because it
manages the cache itself, and would rather allocate the full amount
of RAM itself instead of the OS duplicating data it is cacheing
internally.
Similarly, there are many "write only" applications that are only
hindered by OS cache, such as any kind of high-speed data recording
(video, particle accelerators, scientific computing, etc) which is
using most of the RAM for internal structures and wants the data it
writes to go directly to disk at the highest possible speed.
> I claim that making a new fs from scratch for the distributed
> case is easier than tweaking ext2 and 10-20 other existing fs'es
> to work in such an environment. Making a new fs from scratch
> isn't such a big deal after all.
The problem isn't making a new fs, the problem is making a _good_
new fs. It takes at least several years of development, testing,
tuning, etc to get just a local fs right, if not longer (i.e.
reiserfs, JFS, XFS, ext3, etc). Add in the complexity of the
network side of things and it just gets that much harder to do
it all well.
We have taken the approach that local filesystems do a good job
with the "one node" assumption, so just use them as-is to
do a job they are good at. All of the network and locking code
for Lustre is outside of the filesystem, and the "local" filesystems
are used for storing either the directory structure + attributes
(for the metadata server), or file data (for the storage targets).
Local filesystems can do both of those jobs very well already, so
no need to re-invent the wheel.
See http://www.lustre.org/docs.html for lots of papers and
documentation on the design of Lustre.
Cheers, Andreas
--
Andreas Dilger
http://www-mddsp.enel.ucalgary.ca/People/adilger/
http://sourceforge.net/projects/ext2resize/
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [RFC] mount flag "direct" (fwd)
2002-09-04 8:39 ` Andreas Dilger
@ 2002-09-04 12:07 ` Helge Hafting
2002-09-04 13:03 ` Hans Reiser
0 siblings, 1 reply; 28+ messages in thread
From: Helge Hafting @ 2002-09-04 12:07 UTC (permalink / raw)
To: Andreas Dilger; +Cc: linux-kernel
Andreas Dilger wrote:
>
> On Sep 04, 2002 09:16 +0200, Helge Hafting wrote:
> > Your idea about re-reading stuff over and over isn't going to help
> > because that sort of thing consumes much more bandwith. Caches help
> > because they _avoid_ data transfers. So shared writeable data
> > will happen, and it will use some sort of cache coherency,
> > for performance reasons.
>
> You assume too much about the applications. For example, Oracle
> does not want _any_ cacheing to be done by the OS, because it
> manages the cache itself, and would rather allocate the full amount
> of RAM itself instead of the OS duplicating data it is cacheing
> internally.
>
There are things like O_DIRECT for this. A fine add-on for
some apps, and it don't break the fs for all those apps that
like caching.
A uncached distributed fs is another story. Having to void
all cache (or no cache at all) whenever some other machine
locks the fs might be just the ticket for some applications,
but I can't see that working for the generic case.
Which is why
I think a special fs is in place here. It could possibly start
off as a fork from ext2 (or ntfs or vfat or whatever seems
appropriate) but I cannot see how this sort of thing could be merged.
And why force it into _every_ existing fs? This distributed
scheme really needs all of them?
> > I claim that making a new fs from scratch for the distributed
> > case is easier than tweaking ext2 and 10-20 other existing fs'es
> > to work in such an environment. Making a new fs from scratch
> > isn't such a big deal after all.
>
> The problem isn't making a new fs, the problem is making a _good_
> new fs. It takes at least several years of development, testing,
> tuning, etc to get just a local fs right, if not longer (i.e.
> reiserfs, JFS, XFS, ext3, etc). Add in the complexity of the
> network side of things and it just gets that much harder to do
> it all well.
Making a good new fs might take time, but changing all existing
fs'es to support "no caching when another guy has the lock"
is so invasive that I'd call it a set of new fs'es, and I think
he'll need some time to get that working _well_.
I believe a special purpose fs for special needs is easier
in this case.
>
> We have taken the approach that local filesystems do a good job
> with the "one node" assumption, so just use them as-is to
> do a job they are good at.
A completely different approach, avoiding the trouble of
drastically altering something that works.
Helge Hafting
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [RFC] mount flag "direct" (fwd)
2002-09-04 12:07 ` Helge Hafting
@ 2002-09-04 13:03 ` Hans Reiser
0 siblings, 0 replies; 28+ messages in thread
From: Hans Reiser @ 2002-09-04 13:03 UTC (permalink / raw)
To: linux-kernel
I think everyone agrees that you should start with doing it for a
particular FS, and then after you have done it for one, you will know
enough about what needs to be done that you can make your case that it
should be done in VFS. Frankly, I think that you should either share
caches between nodes (NUMA), or (somehow, and there are so many ways...)
divide the workload between the machines such that they don't access the
same data except in response to failure.
Hans
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [RFC] mount flag "direct" (fwd)
2002-09-04 7:16 ` Helge Hafting
2002-09-04 8:39 ` Andreas Dilger
@ 2002-09-04 8:41 ` Peter T. Breuer
1 sibling, 0 replies; 28+ messages in thread
From: Peter T. Breuer @ 2002-09-04 8:41 UTC (permalink / raw)
To: Helge Hafting; +Cc: ptb, linux-kernel
"A month of sundays ago Helge Hafting wrote:"
> > The "big view" calculations indicate that we must have distributed
> > shared writable data.
> >
> Increasing demands for performance may indeed force a need
> for shared writeable data someday. Several solutions for that is
> being developed.
> Your idea about re-reading stuff over and over isn't going to help
I really don't see why you people don't get it. Rereading is a RARE
operation. Normally we write once and read once. That's all. Once
the data's in memory we use it.
And if we ever have to reread something, it will very very rarely be
metadata.
> because that sort of thing consumes much more bandwith. Caches help
> because they _avoid_ data transfers. So shared writeable data
Tough. Data transfers are inevitable in this scenario. There's no
sense in trying to avoid them. Data comes in at A and goes out at B.
Ergo it's transfered.
> > So, start thinking about general mechanisms to do distributed storage.
> > Not particular FS solutions.
> Distributed systems will need somewhat different solutions, because
> they are fundamentally different. Existing fs'es like ext2 is built
> around a single-node assumption. I claim that making a new fs from
I am still getting afeel for the problem. Only avoiding directory
caching (and inode caching) has worried me. I looked at the name
lookup routines on the train and I don't see we onne can't force a
reread from root every time, or a reread every time there is a
"changed" bit set in the sb.
> scratch for the distributed case is easier than tweaking ext2
No tweak. But I'm looking.
> The case of distributed storage is similiar, it is fundamentally
> different from the one-node case just as random-access media
I agree. But the case of one FS accessed from different nodes is not
fundamentally different from the situation we have now. It requires
locking. It also requires either explicit sharing of cached
information, or no caching (which is the same thing :-). I merely
opine that the latter is easier to try first and may not be so bad.
> If you merely proposed making the VFS and existing fs'es
> cache-coherent,then I'd agree it might work well, but
I'm proposing making no caching _possible_. Not mandatory, but
_possible_. If you like, you can see it as a trivial case of cache
sharing.
> by throwing away caching _will_ be too slow, it certainly
Why? The only thing I've seen mentioned that might slow things down
is that at every open we have to trace the full path anew. So what?
OK, so there's also objections about what happens if one kernel frees
the data and anotehr adds to it. I'm thinking about what that implies.
> There will probably be different needs for which people
> will build different distributed fs'es. So a
> "VDFS" makes sense for those fs'es, putting the common stuff
> in one place. But I am sure the VDFS will contain cache
> coherency calls for dropping pages from cache when
> necessary, instead of dropping the cache unconditionally
> in every case.
That's possible, but right now I don't know any way of saying to the
kernel "I just stepped all over X on disk, please invalidate anything
you have cached that points to X". I'd like it very much in the
buffering layer too (i.e. vMs).
Peter
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [RFC] mount flag "direct" (fwd)
2002-09-03 21:07 ` Peter T. Breuer
` (3 preceding siblings ...)
2002-09-04 7:16 ` Helge Hafting
@ 2002-09-04 7:50 ` Joachim Breuer
[not found] ` <3D75F8B0.8C7E974E@aitel.hist.no>
2002-09-04 9:26 ` Lars Marowsky-Bree
5 siblings, 1 reply; 28+ messages in thread
From: Joachim Breuer @ 2002-09-04 7:50 UTC (permalink / raw)
To: ptb; +Cc: linux kernel
"Peter T. Breuer" <ptb@it.uc3m.es> writes:
> "A month of sundays ago Lars Marowsky-Bree wrote:"
>> On 2002-09-03T18:29:02,
>> "Peter T. Breuer" <ptb@it.uc3m.es> said:
>>
>> > The directory entry would certainly have to be reread after a write
>> > operation on disk that touched it - or more simply, the directory entry
>> > would have to be reread every time it were needed, i.e. be uncached.
>>
>> *ouch* Sure. Right. You just have to read it from scratch every time. How
>> would you make readdir work?
>
> Well, one has to read it from scratch. I'll set about seeing how to do.
> CLues welcome.
Just an idea, I don't know how well this works what with the 'IDE
can't do write barriers right' and related effects:
- Allow all nodes to cache as many blocks as they wish
- The atomic operation "update this block" includes "invalidate this
block, if cached" broadcast to all nodes
Performance would certainly become an issue; depending on the
architecture bus sniffing as in certain MP cache consistency protocols
might be feasible (I, node 3, see a transfer from node 1 going to
block #42, which is in my cache; so I update my cache using the data
part of the block transfer as it comes by on the bus).
So long,
Joe
--
"I use emacs, which might be thought of as a thermonuclear
word processor."
-- Neal Stephenson, "In the beginning... was the command line"
^ permalink raw reply [flat|nested] 28+ messages in thread* Re: [RFC] mount flag "direct" (fwd)
2002-09-03 21:07 ` Peter T. Breuer
` (4 preceding siblings ...)
2002-09-04 7:50 ` Joachim Breuer
@ 2002-09-04 9:26 ` Lars Marowsky-Bree
5 siblings, 0 replies; 28+ messages in thread
From: Lars Marowsky-Bree @ 2002-09-04 9:26 UTC (permalink / raw)
To: Peter T. Breuer; +Cc: root, Rik van Riel, linux kernel
On 2002-09-03T23:07:01,
"Peter T. Breuer" <ptb@it.uc3m.es> said:
> > *ouch* Sure. Right. You just have to read it from scratch every time. How
> > would you make readdir work?
> Well, one has to read it from scratch. I'll set about seeing how to do.
> CLues welcome.
Yes, use a distributed filesystem. There are _many_ out there; GFS, OCFS,
OpenGFS, Compaq has one as part of their SSI, Inter-Mezzo (sort of), Lustre,
PvFS etc.
Any of them will appreciate the good work of a bright fellow.
Noone appreciates reinventing the wheel another time, especially if - for
simplification - it starts out as a square.
> > Just please, tell us why.
> You don't really want the whole rationale.
Yes, I do.
You tell me why Distributed Filesystems are important. I fully agree.
You fail to give a convincing reason why that must be made to work with
"all" conventional filesystems, especially given the constraints this implies.
Conventional wisdom seems to be that this can much better be handled specially
by special filesystems, who can do finer grained locking etc because they
understand the on disk structures, can do distributed journal recovery etc.
What you are starting would need at least 3-5 years to catch up with what
people currently already can do, and they'll improve in this time too.
I've seen your academic track record and it is surely impressive. I am not
saying that your approach won't work within the constraints. Given enough
thrust, pigs fly. I'm just saying that it would be nice to learn what reasons
you have for this, because I believe that "within the constraints" makes your
proposal essentially useless (see the other mails).
In particular, they make them useless for the requirements you seem to have. A
petabyte filesystem without journaling? A petabyte filesystem with a single
write lock? Gimme a break.
Please, do the research and tell us what features you desire to have which are
currently missing, and why implementing them essentially from scratch is
preferrable to extending existing solutions.
You are dancing around all the hard parts. "Don't have a distributed lock
manager, have one central lock." Yeah, right, has scaled _really_ well in the
past. Then you figure this one out, and come up with a lock-bitmap on the
device itself for locking subtrees of the fs. Next you are going to realize
that a single block is not scalable either because one needs exclusive write
lock to it, 'cause you can't just rewrite a single bit. You might then begin
to explore that a single bit won't cut it, because for recovery you'll need to
be able to pinpoint all locks a node had and recover them. Then you might
begin to think about the difficulties in distributed lock management and
recovery. ("Transaction processing" is an exceptionally good book on that I
believe)
I bet you a dinner that what you are going to come up with will look
frighteningly like one of the solutions which already exist; so why not
research them first in depth and start working on the one you like most,
instead of wasting time on an academic exercise?
> So, start thinking about general mechanisms to do distributed storage.
> Not particular FS solutions.
Distributed storage needs a way to access it; in the Unix paradigm,
"everything is a file", that implies a distributed filesystem. Other
approaches would include accessing raw blocks and doing the locking in the
application / via a DLM (ie, what Oracle RAC does).
Sincerely,
Lars Marowsky-Brée <lmb@suse.de>
--
Immortality is an adequate definition of high availability for me.
--- Gregory F. Pfister
^ permalink raw reply [flat|nested] 28+ messages in thread