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).