Description of the Journaling topology
dillon at apollo.backplane.com
Thu Dec 30 19:04:17 PST 2004
:> So the basic property of being able to restore within N seconds is
:> still guarenteeable even without a journal-aware filesystem.
:Yes, this is what I am talking about. So that you can forget about fast
:recovery of filesystem into a consistend state after a crash - one of
:the selling points of today's journaled fs.
As I said it would require that the filesystem be aware of the
journal's existance, plus to do 'fast' recovery you would have to record
changes at the block level rather then at the operations level.
With a block level implementation the filesystem would either
have to provide 'known stable' synchronization points every so often
(which is actually pretty easy to add to a journal-unaware filesystem),
or you would have to go full-throttle and have the filesystem record
block level changes transactionally. But a block level implementation
is really only good for one thing: fast recovery. It doesn't solve any
of the problems that a high level journal solves. It doesn't help with
the cache coherency protocol, it doesn't solve any of the clustering
issues, it doesn't prevent software-caused filesystem corruption (it just
duplicates it), it doesn't provide any of the functional separation that
makes a high level journal so robust, it can't be used for backups
anywhere near as well (since you would only be able to restore to a
block device of exactly the same size as the original filesystem), the
granularity of your ability to restore to a point of time would be
fairly restricted (where as with a high level journal the granularity
is on an operation-by-operation basis), it isn't possible to filter a
block level implementation (e.g. 'I only want changes made within this
subdirectory'), because any given filesystem block change might cover
more then one opration and unrelated changes to one block will effect
others (like bitmap blocks), it isn't useful for security auditing,
and so on and so forth.
Simply put, a block level journal has a very narrow scope of usefullness.
Pretty much fast-recovery is all you get out of it. Not to say that
fast recovery isn't useful, but I am not going to focus on it first.
<dillon at xxxxxxxxxxxxx>
More information about the Kernel