On Mon, 2 Feb 2009 22:04:15 +0800, Kirby Zhou <kirbyzhou@xxxxxxxxxxx> wrote: > Why integrate both client and server into a single executable? Presumably because most of the code is shared between the two? (e.g. socket code, config parsing code, logging, etc.) > I think it brings a lot of trouble to server operators. > > For example: > > 1. If client and server runs together on the same node, I don't know > which process should be kill if some bug occurs. Since there is only one process, there is only one process to kill/restart. I'm not sure what you mean by "I don't know which process". Note that you can still run it as a 2-process sytem, if you really want to. # killall glusterfs will kill the client. # killall glusterfsd will kill the server. You could bolt this down more tightly by wrapping them and saving the PID of the process into a file, traditionally in /var/run/. > 2. FUSE is not necessary in the server side, but I can not avoid > install FUSE on the server side. It increases the security venture of the > server side. Hmm, you may have a point there, but you only need the fuse-libs, not the fuse kernel module. I'm not convinced that the fuse libraries are a significant security risk. > 3. It increase the file size of the final binary. I want to boot up > the gluster server node from a small USB finger, the size of binary is > important. I'm not sure the size of the binary is all that significant when you factor in the size of the kernel, initrd and a minimal root. Can you provide some actual sizing figures on this? The smallest/cheapest USB memory stick I can find right now is 1GB and they sell for about $5 / £3.5. Is an extra few KB of a binary disk footprint really going to make that much difference? Or are you thinking about putting this into something _really_ small like an ARM based appliance? Gordan