Imagine having a lot of individually installed computers that you want to upgrade and keep consistent in terms of installed software and configuration. This is normally not an easy task and requires really good planning.
A central installation solve a lot of these problems, but that still requires some mechanism to push out the installation. An alternative is to let the clients to use the installation directly using network boot and a network file system (NFS). Thin clients often use a fat server, but that is not always true.
This article describes how network booting works in general and how to balance the workload between the server and the clients.
The only special hardware that you need is a Network Card with network boot support on each client that will be booted over the network. A Network Card with PXE support is preferred as that require less work, but a Network Card with an EEPROM can be good enough. If you do not have a Network Card with boot support you can use a boot floppy or hard disk for testing purposes.
In general it will help to have a unified hardware configuration on the clients, for everything that is not automatically handled when the computer starts. Sound card, network card and graphics card and external equippment are examples of such hardware that should be the same on all clients. If they are not some kind of mechanism is needed to handle that.
The amount of RAM memory and CPU power on each client is determined by what kind of work each client need to perform. For Thin Client solutions where most computing is done on the server side the amount of RAM and CPU can be reduced to the amount needed to display a screen and handle pheriphials like mouse and keyboard.
A Thin Client is a modern variant of the terminals used to acces Mainframe Computers. It has a screen, mouse, keyboard and some kind of computing device to control them. The difference between the old terminals and the modern variants is that the CPU power has increased which means that you can have graphics and do some processing on the client side. In a Thin Client concept all computing is done on the server side, except for computing needed to display the output and control the input devices.
The definition of a Fat Client is that it do not conform to the definition of a Thin Client. This means that it has an Hard Disk, more CPU power, CD/DVD, floppy and more. A normal Fat Client is a normal PC with all the pherephials needed for its full functionality.
It is possible to combine the Thin Client and Fat Client concepts to a Half Fat Client. This means that something more is added to the Thin Client while still keeping most of the simplicity of the Thin Client. It can be the addition of a Hard Disk for swapping (only), or a CD/DVD to allow users to input their personal music or movies. It adds some complexity to the setup but a few additions can normally be handled without too much work.
An other alternative that the Half Fat Client gives is to add more CPU and memory on the Client Side to do more processing there. It is actually possible to let the client do all processing and only use the server side provide the file system.
If you want to do more fine grained control of the CPU usage it is possible to let some applications run on the client side and some on the server side. A good example is that the normal desktop and some applications are run on the client, but a few applications that require special licensing or special pherephials is run on the server side. There are many technical solutions to this.
The dimensioning of the Server side relies heavily on the type of client used, the number of clients and the expected usage of each client. If the total workload is hard to estimate in the beginning or if the workload may increase in the future, the Server Side need to be able to scale when the demand increases.
The processing power depends on the applications run on the server and how many users that execute them.
For a Half Fat Client of Fat Client solution where all applications are run on the client side the amount of CPU power need only be enough to handle the file transfers over the Network File System.
The size of the RAM Memory installed on the server side needs to be dimensioned depending on the applications run, and the number of users/clients on the system. A good way to calculate is to determine how much memory a user uses on a normal PC and multiply that with the number of concurrent users.
Memory Needed := Server OS usage + (Usage on normal client - Client OS usage) * number of concurrent users
For a Half Fat Client of Fat Client solution where all applications are run on the client side the amount of CPU power need only to be dimensioned for caching of data transfers over the Network File System. Higher amount of cache give less usage of the slow the Hard Disks.
The Disk Usage of a Thin Client, Fat Client or Half Fat Client solution do not vary that much. It probably depend more on the amount of data the users will need. However you need to consider that an image of the client side installation needs to be installed on the server. This is normally not a big problem.
The bandwidth usage generally depends on the Network Protocols used. The network protocols used in turn depends on the type of clients used.
For a Thin Client solution or in any other case when the appliction is run on the server, the bandwith needs to be enough to transfer the graphical display information to the client and the input data to the server. It is important for the user experience that the round trip time is low. If the round trip time is high the user will be frustrated because the interface do not respond, or do not respond quickly enough. If the RDP protocol is used 10 Mbit is probably enough, but if VNC or X11 is used then 100 Mbit is probably needed.
For a Half Fat Client solution where applications are run on the client the bandwidth needs to be enough for the filesystem operations. In general 100 Mbit will work well unless the number of clients are too many. 10Mbit is enough, but will probably be considered a bit slow, especially if the number of clients are more than a few.
In order to scale up the system when one server is no longer enough, some kind of load-sharing system is needed. A simple approach is to let some applications run on some servers and some other run on an other server. An other alternative is to have a farm of servers and when an application is started it startes on a server determined by some load sharing algorithm, such as: round robin, weighted round robin or least used first.
A more advanced approach is to allow the applications to migrate from one server to an other.
The conclusion of this descripion is that there are many alternatives on how to set up a network booted system.