Description of the Journaling topology

Matthew Dillon 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
:mechanism?
:
:// George
:
:-- 
: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
    normally).

    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
    cluster.

					-Matt
					Matthew Dillon 
					<dillon at xxxxxxxxxxxxx>





More information about the Kernel mailing list