HAMMER update 19-June-2008 (56C) (HEADS UP - MEDIA CHANGED)
Johannes Hofmann
hofmann at blob.baaderstrasse.com
Sat Jun 21 07:41:01 PDT 2008
Matthew Dillon <dillon at apollo.backplane.com> wrote:
>
> :Pardon my ignorance if I am missing something, I haven't looked much
> :into HAMMER yet.
> :
> :Will the FS have the same atomic update features that UFS has? Meaning
> :fsync(2) returns only when all directory entries are safely on the
> :disk (whether it's with softupdate-type ordering or journaling). It's
> :important for mail servers and such so they don't lose messages at the
> :time of powerfail/crash. If you dig around mailing lists, you'll find
> :interesting stories how people who ran their FS mounted async (the
> :default Linux EXT2/3 mount) for mail servers (and AFAIK at least on
> :Linux in that case fsync returns early - not atomic, so software
> :written with BSD behavior in mind wasn't safe to run without patching)
> :found some of the messages in lost+found.
>
> Basically yes. HAMMER maintains a dependancy hierarchy for directory
> entries and the related inodes, so if you create a directory structure
> and then fsync some file deep down in it it should fsync the directory
> entries as well.
>
> HAMMER does not have an async mount mode :-). It will never have an
> async mount mode, in fact, but it doesn't need one. Writing is so-well
> decoupled from the media that an async mode would not actually make
> things any faster.
>
> HAMMER's fsync might return early too, BTW... not intentionally, it's
> still an all-or-nothing deal from the point of view of crash recovery,
> but if the inode is already queued to the flusher it would have to be
> re-queued to get the rest of the modifications and that might cause
> fsync() to return early. Doing it properly shouldn't be too difficult
> but it isn't at the top of my priority list.
>
> :Also will there be a feature to grow/and or shrink the FS live without
> :having to unmount? I can do this right now with XFS and LVM on Linux
> :(grow, but not shrink), and its working amazingly well and very
> :quickly to boot.
> :
> :Thanks.
> :
> :--
> :Dan
>
> I haven't written the utility support but growing a HAMMER filesystem
> is fairly trivial. All one needs to do is add the appropriate entries
> to the freemap. Not only that, but also adding volumes to a HAMMER
> filesystem.
>
> HAMMER's freemap is a two-layer blockmap. It is NOT pre-sized, and
> there is no block translation. it works more like a sparse file whos
> size is the maximum possible size of a HAMMER filesystem (uh, that
> would be, uh, 1 Exabyte I think with the work done last week).
>
> Shrinking is also possible. Not only shrinking, but also removing whole
> volumes. Again, the feature hasn't been written yet and it would be a
> bit more time consuming because the reblocker would have to be run to
> clean out (aka copy out) the areas being removed, but there would be
> nothing inherently difficult about it and it certainly could be done
> live.
Would it be possible to do that by allowing read-only volumes? So that
hammer_blockmap_alloc() would not return space from these read-only
volumes. Reblocking could then move the data off these volumes.
Read-only volumes could perhaps also be used for copy-on-write
functionality, or am I missing something?
Johannes
> p.s. if someone wants to make a side-project of it, go for it!
>
> Mirroring is at the top of my list for the release. Frankly, the
> best way to resize a filesystem is to mirror and cluster, and then
> simply take the 'old' filesystem offline and completely redo it.
> Clustering is kinda the holy grail for the project and clearly won't
> be ready for this release, but it is something to think about.
>
> -Matt
> Matthew Dillon
> <dillon at backplane.com>
More information about the Kernel
mailing list