DragonFly users List (threaded) for 2008-01
Re: Futures - HAMMER comparison testing?
:Sorry to hijack this thread. Just wanna mention a little write down of
:mine about HammerFS features (and sometimes comparing it with ZFS):
:I can't await to try it out in real!
Nice. There are a few factual mistakes but nothing major. ZFS is
reliable on a 386 system, you just have to limit its memory consumption
with (I think) a sysctl. HAMMER's resource use is still far lower,
though. There are still reports of total corruption for ZFS on FreeBSD
but the issue doesn't sound insurmountable.
HAMMER doesn't journal. Theoretically by carefully ordering
certain I/O operations it will not have to journal. More importantly,
HAMMER can 'recover', as in regenerate, the contents of a cluster on
the fly by scanning the records in that cluster and then rebuilding
the B-Tree and allocation radix trees from scratch. As long as
recognizable records are present, it should be possible to recover a
considerable amount of information even after the disk gets scratched.
The historical nature and backup sections are correct, minus your
journaling comment. Basically you make backups by working from an
as-of access. You don't even have to make an as-of mount, there's
an @@timestamp extension that allows you to access the filesystem
as-of any time. So, e.g. you can do things like:
'diff /mnt /mnt/@@0x<timestamp>'.
I am down to three major items for the release: The Recovery, balancing,
and vacuuming subsystems. All are interrelated and I am making good
progress. Beyond that the spike code needs some major tweaking but
the only effect of that is poor write performance (probably through
the alpha release). Of course, there are many other little issues
that need to be dealt with before the release as well.
Post release I'll have a go at implementing backup/mirroring streaming.
I have a pretty good idea how to implement it -- basically by storing a
last-transaction-id in cluster headers, super-cluster headers, and
volume headers, in order to reduce the amount of initial scanning
required to resynchronize a stream.