How to build a massively parallel cluster

We considered the nodes as diskless and we used etherboot to boot them.
Once we have built the server for any number of diskless nodes only the server
needs to be maintained and upgraded when new releases of the operating
system and new applications are available. In addition, the administration of users,
system backup etc.  become easier. Finally, adding a new diskless node to the
cluster is a matter  of a few minutes.

First we installed RedHat Linux on our server.

The following steps are necessary in order to add one diskless node to the
cluster.

1. First we write on a floppy a small bootstrap code The same floppy can
be used for all the nodes on the cluster. This code boots a very basic
kernel which will be executed at start when the node accesses its floppy.
When exececuted by the CPU of a node, it locates  the ethernet card
and uses it to send messages  which intend  to reach a BOOTP server in the
immediate network neighborhood. If there is a BOOTP server  and in the
server's /etc/bootptab file there is an entry for the specific MAC address
of the client's ethernet card with a corresponding approved IP address,
the BOOTP server  will communicate to the client  node  this IP address
and will become this server's client. This means that the client node can
perform tftp (trivial file transfer protocol) functions on the server.

2. The same code on the floppy will allow the diskless node to
use tftp to get a  file with a linux precomplied kernel from the
/tftpboot/ directory. This file's name is given to the client
by the BOOTP daemon  which finds it in the /etc/bootptab file.
It then loads this kernel on the node.

3. We created directories for each node under the /tftpboot main directory
these directories have the same structure as the server's namely

/tftpboot/nodename/bin
/tftpboot/nodename/etc
/tftpboot/nodename/lib
/tftpboot/nodename/dev
/tftpboot/nodename/home
/tftpboot/nodename/proc
/tftpboot/nodename/var
/tftpboot/nodename/sbin
/tftpboot/nodename/root

we also create a directory /usr but it is a link to another directory which we create
/tftpboot/usr

The reason for separating the /usr directory is that it is very large
and it contain write-only files. The directory /tftpboot/nodename/proc is empty.

4. We then copy all the servers files from the corresponding directories to the
above directories. We then modify the files in the /tftpboot/nodename/etc
directory. We adit the fstab file to nfs-mount the /tftpboot/nodename as /.
in addition we need to nfs-mount the /tftpboot/usr directory as /usr
and the /home server's directory as the /home client's directory.
We then need to edit the files /tftpboot/nodename/etc/sysconfig/network
and /tftpboot/nodename/etc/sysconfig/network-scripts/ifcfg-eth0
and to give the write networking information for the client.

5. Next we need to edit in the server's /etc directory the file exports
and hosts and to give permission to the client to nsf-mount the
directories mentioned.

For the client to be able to nfs-mount these directories
the kernel which was put in the /tftpboot directory for the
client to get and run should be compliled with the nfs option.

6. We  partition  the local disk of each node and we mount it as /local.
On the /local we create directories for each user. This disk can be
used for fast storage instead of using nfs to write on the /home
directory which is slower.

7. We install the PBS (portable batch system) .

8. We installed the MPI (message passing interface).