Zbr's days.
November
Sun Mon Tue Wed Thu Fri Sat
       
24
 
2007
Months
Nov

About :: TODO :: Blog :: RSS :: Old blog :: Projects :: GIT :: Gallery :: Notes

Sat, 24 Nov 2007

Coherent Remote File System.

Zach Brown has an extremely interesting idea of network filesystem implementation.
One can thing about it like NFS client or more proceise as a client-server protocol, which allows clients to have a cache of data instaed of relying on server. This of course requires a cache coherency protocol to be involved in client-server communications, which makes things more complex.
Simply this works as a trivial filesystem, mounted on clients, where each read/write/meta operation is perfomed on top of locally cached data, if data is not preset in the local cache, it is fetched from the server. Client flushes its updated cache to the server in number of various conditions either because of usual writeback process or because of cache coherency process (i.e. when another node reads from the file, updated by given client).

Zach will present it at LCA this February.
So far it is closed Oracle's project (as far as I know open sourcing process in on the way, just like it was with Chris Mason's btrfs), and I strongly want to implement exactly the same idea myself :)
This process will have number of benefits:

  • simple open source filesystem, which can be used as a base for real filesystem development (do not confuse it with virtual filesystems like sysfs or debugfs)
  • ability to extend it for own protocols
  • cache coherency mechanism will be used in distributed filesystem
  • possibility to test byte range locking in a real life
  • implement filesystem bits first in userspace (I do not want to introduce additional mispredicted behavuiour because of FUSE)
Zach, what about small competition? :)
Frankly saying I'm not an expert in cache coherency protocols and filesystem development either (you will not believe me, but last several days I'm trying to implement inteteresting B-tree, but with each day spent on that problem I comment more and more bits in the code and it still does not work the way I want :). With recent trends I believe I will have pretty high-end hardware soon to perform various tests and find common and tricky bottlenecks.

This implementation can be used by various users aimed for distributed systems, but which do not want to have (or bother with) real filesystem developemnt and which are ready to have a server in userspace on top of existing filesystems (in receiving zero-copy project I showed huge problem with in-kernel usage of some of Linux filesystems, especially those which use in-kernel JBD journaling, when it is impossible to preallocate (->prepare_write()) number of pages for given file and then write into them and commit (->commit_write()) at once for maximum performance).

/devel/fs :: Link / Comments (2)


Meanwhile at appartment development side.

I've completed big arc in the room and finished most of the smaller arc for the checkroom (rough strong emery paper rocks), it requires some polishing and eventual wallpaper glueing and painting. I think I will finish this part (as long as painting of all room's walls) next weekend. I want to complete room, checkroom and (hopefully) hall. The latter requires a bit more work - if I will have enough time and glue for ceramics, I will setup ceramic granit floor. I hope to get a ceiling and a water system hatch for the bathroom next weekend too, so that it would be completed too.
When it is ready, I think I will have some rest, or maybe will go a usual way - proceed with development of the kitchen. It is not that complex and will not require a lot of time actually, even if I will (and I want to) install hinged ceiling there too.

/devel/flat :: Link / Comments (0)