沈允中 wrote:
And now I know that it's impossible for nfsd to re-export a FUSE mounted filesystem.
But the workflow of the gluster native nfsd is not smart just as the white paper mentioned.
Gluster will act stupid when not using glusterfs protocol.
1. A client asks server A for a file but server A doesn't have it.
2. Server A finds server B has the file.
3. Server B transfers the file to the server A.
4. Server A transfers the file to the client.
So step 3 is a stupid and time-wasting process.
How do you solve this problem when you have to use nfs protocol?
There is no way to solve this with NFS. The protocol doesn't understand
the concept of multiple servers.
Depending on how far you were prepared to go with cheating and forging
network packets, however, you might be able to do something like this:
1) Request comes in to server A. Server A doesn't have the file.
2) Server A notifies server B, which has the file, that client C wants
the file.
3) Server B hand-crafts network packets to make them look like they are
coming from server A, and server A continues getting responses, which it
continues passing to server B. Server B uses this information to
continue sending "forged" packets with the file data to client C.
If you are using UDP for NFS, you could plausibly do something like
this. You'd still need server A to pass ACKs to server B. Server B would
effectively be performing a man-in-the-middle sort of attack to
facilitate the bulk of the data going straight from A to C.
Of course, nothing like this is implemented, so I guess it depends on
how desperate you are for such a feature.
Gordan