Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

See the 'tux3' linux "phased tree" filesystem which was implemented (and then quashed by NetApp) some time ago (2001):

http://www.mail-archive.com/tux3@tux3.org/msg00035.html

I assume that all "snapshotting" filesystems (NetApp, ZFS) have a similar structure?

Edit: ah, tux3 is alive: http://tux3.org/, it was tux2 which was quashed. Cool.



They're all generally similar yes. They're also similar to the naive approaches for tree like persistent data structures.

Generally these fall into two approaches: fat nodes and path copying. With fat nodes, each node maintains it's own independent history of update operations. With path copying instead we create a new modified node, and then walk the path from it back up to the parent creating new modified nodes as we go, finally resulting in a new root (uber/super block in a file system).

Traversing a particular snapshot in fat nodes is complicated, but is simple with path copying. With path copying however updates are more expensive and we tend to have more duplicate data (depending on the fan out of nodes).

Interestingly, we can do better than both of these approaches. I'm not aware of any filesystems that use this schemes, but you may find this paper interesting:

http://ocw.mit.edu/NR/rdonlyres/Electrical-Engineering-and-C...


I'm currently looking at something which falls under the 'fat node' category (with a few wrinkles/complications) at the moment, so this is of great interest, thanks.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: