Description of the Journaling topology
dillon at apollo.backplane.com
Wed Dec 29 20:50:59 PST 2004
:On Wed, Dec 29, 2004 at 04:19:44PM -0800, Matthew Dillon wrote:
:> The journaling will eventually be used as part of the cache
:> coherency mechanism but that isn't how it is being used initially.
:> The shortest description of what our journaling will do is simply
:> that it will record every filesystem operation performed to a
:> decriptor which might just happen to be a socket.
:Are you talking cluster fs here? Or would (will) that be by a separate
:George Georgalis, systems architect, administrator Linux BSD IXOYE
A cache-coherent clustered filesystem is really several things integrated
together. The journaling will be used as the data transport mechanism
to keep caches on multiple machines synchronized. There will have to be
a cache coherency mechanism/protocol in addition to that, of course,
since journaling alone is not cache-coherent. You can also look at the
problem from the point of view of the cache-coherency protocol. A
cache-coherency protocol just wants to deal with meta-information, it
doesn't want to deal with the actual data transfer mechanism. So the
journal is a good fit.
In fact, you don't have to have a cluster-aware filesystem to have a
cluster-coherent filesystem. The key to the whole mess is to
build the cache coherency protocols properly. That really is the key.
It's the same for databases. If you do the cache coherency protocol
correctly it almost doesn't matter what you use for the actual storage
(Almost because it becomes important when dealing with edge conditions
in crash cases. But it doesn't matter at all when things are running
For example, lets say you have a cluster of 30 machines and for
robustness you want to 100% replicate your main filesystems on 3 of
those machines. So now you have a situation where 3 of the machines
needs to stay completely up-to-date with each other, and 27 of the
machines need to be able to cache data on a more temporary basis.
Both situations can be made nothing more then aspects of the *SAME*
cache-coherency and journaling protocols. The only difference is
that some of the machines require a large journaling and cache
coherency data volume (the ones doing the mirroring), while other
machines require far smaller volumes of data to be transfered. It
sounds like a complex problem but it is actually no more complex then
what the cache coherency protocol must already accomplish within the
<dillon at xxxxxxxxxxxxx>
More information about the Kernel