I am trying to find a Linux FS that will allow me to replicate all writes synchronously to n nodes in a web server cluster, while keeping all reads local. It should not require specialized hardware.
What I did as a "quick solution" is a little python script that using "inotify" intercepts every file modified/created/deleted on a few selected paths. Those files are inserted in a queue, that's "rsynced" by another process to the rest of servers :D
Not the best solution, but it works :)
Right now I'm testing ChironFS, but sync write can be a prob :D
I was not facing problems, just that sync writes can be a problem :)
If a host has a very high load, or the link is slow, it can take ages to finish this sync, and I'm not sure how ChironFS works arround these problems.
Right now I'm using a combination of ChironFS + GlusterFS, to get part of the data always as local, and part as remote, but always replicated across all the servers.
The current version of ChironFS (1.0RC9) waits until all the writes are done to return to the caller. So it is a problem if you have a slow link. I am currently working on version 1.1 to implement asynchronous I/O (and, in the near future, Hot Resync). This way ChironFS will return just after the first successful write. The others writes will be handled by callbacks and the control of what replica is working or not will still work as it does now. So, write operations are expected to have a very high speed increment.
Also, I would be very grateful if you could provide some feedback about the usage and stability of ChironFS. As long as I have tested it is working without any bug. But it would be good if I have other people's report. The lack of feedback is the main reason I didn't change the status of beta-RC to stable.
Reader Comments (7)
chiron fs perhaps.
http://furquim.org/chironfs/
If you dont have large amount of data, you can perhaps use Linux dnotify to roll your own write-spread system.
Shameless plug: I wrote a proof-of-concept script and an article a few years back about it.
http://www.linuxfocus.org/English/March2001/article199.shtml
The general rules still apply but the tools to do this today are much better.
What I did as a "quick solution" is a little python script that using "inotify" intercepts every file modified/created/deleted on a few selected paths. Those files are inserted in a queue, that's "rsynced" by another process to the rest of servers :D
Not the best solution, but it works :)
Right now I'm testing ChironFS, but sync write can be a prob :D
Hello
I am the author of ChironFS. Could you describe what prob are you facing with sync write?
Thank you and Best Regards
I was not facing problems, just that sync writes can be a problem :)
If a host has a very high load, or the link is slow, it can take ages to finish this sync, and I'm not sure how ChironFS works arround these problems.
Right now I'm using a combination of ChironFS + GlusterFS, to get part of the data always as local, and part as remote, but always replicated across all the servers.
BTW, thnx for ChironFS!!!! :D
The current version of ChironFS (1.0RC9) waits until all the
writes are done to return to the caller. So it is a problem
if you have a slow link. I am currently working on version
1.1 to implement asynchronous I/O (and, in the near future,
Hot Resync). This way ChironFS will return just after the
first successful write. The others writes will be handled by
callbacks and the control of what replica is working or not
will still work as it does now. So, write operations are
expected to have a very high speed increment.
Also, I would be very grateful if you could provide some
feedback about the usage and stability of ChironFS. As
long as I have tested it is working without any bug. But
it would be good if I have other people's report. The lack
of feedback is the main reason I didn't change the status
of beta-RC to stable.
BTW, Thanks a lot for using ChironFS!
Luis Otavio de Colla Furquim
Don't feed the tribbles
http://www.furquim.org/chironfs/
does anyone have any inotify/dnotify code samples? i tried googling and could not find anything relevant/useful, just a couple "i've done this" ...