From: Mohit A. <ext...@gm...> - 2008-07-11 10:39:59
|
> > You should rather make the filesystem fault tolerant by not crashing ;) > > Seriously, what you require is impossible: one mount cannot magically > replace another with all open files, etc migrated to the new one. > Well, no matter how well one writes code, crashes do happen sometimes - and I'd like the application to be shielded from it. With rapid development of a complex filesystem, it becomes even harder. I could definitely get the desired effect with say an NFS server which runs on the same machine - if the server crashes, the mount point is hung, and the NFS server can be restarted safely. In fact, I was wondering about the advantages/disadvantages of using fuse vs a loopback NFS server. Any thoughts on that ? The one disadvantage that's keeping me from going that route is that the freely available sunrpc library is not multi-threaded and it takes some work to make it so. Without that, essentially the NFS server can only have one request outstanding at any time. One of the past companies I worked for built a user-level distributed NFS server and it had to solve that issue. > > If such high level of fault tolerance is really an issue (I suspect > not, it's much easier to just fix the bugs), then you can write a > simple persistent layer that forwards requests to another, restartable > layer which has all the complexity. > That would involve yet another context switch and more data copying - in the short term, I'll just work with making both the application as well as the fuse process crash together and restart both of them if necessary. - Mohit |