Questions on HAMMER2 current details and implementation

HolyTaint holytaint at
Mon Sep 19 17:00:00 PDT 2022

As far as I understood, HAMMER2 is a composite filesystem and files are organized in separated PFS filesystems which differ a bit from the original implementation described in
The only modification I grasped is the inode tree being modified for accomodating segments of the main radix tree, but I still miss some informations.
I tried to infer some theories on these questions:

* How are snapshots made? Is it safe to assume that snapshots are actually a collection of links to PFS filesystems and that's the reason why they are modifiable?
* How does HAMMER2 avoid the need of a journal and support an undo feature? Does it use CoW on EVERYTHING?

I totally have no clue on these questions instead:

* Do the individual PFS file systems have fixed spaces or do they increase according to the load? Does their fixed/maximum space occupied on the disk coincide with the original implementation referred in the wikipedia article?
* How does HAMMER2 achieve deduplication and compression across chunks on the multiple PFS volumes present while ALSO mantaining the premise of separating them and allowing async operations on them? How much are the PFS volumes isolated between themselves? Do they have an individual freemap or do they share a collective freemap for every storage device?

More information about the Hammer mailing list