Chapter 1. Understanding Diskless Operation

This chapter explains the fundamentals of diskless operation. It contains the following sections:

Setting Up User Accounts

The general procedure for setting up user accounts is provided in IRIX Admin: System Configuration and Operation, in the section titled, “Setting Up a Home Directory for a New User.” Because the /usr directory is readonly mode on diskless systems, you should either place home directories in an alternate location or make the /usr/people directory in the share tree a symlink to another directory (/home is a conventional location).

Diskless Client-Server Model

Diskless software enables computers on a local area network (LAN) to operate using the disk space, operating system, and support software supplied by a remote host. The relationship between the server (the computer supplying the resources) and the client (the computer using the resources) is dependent upon network protocols to boot the client over the network link, and upon IRIX, IRIX utilities, and NFS services to sustain the client after it is booted.

Figure 1-1 illustrates a diskless configuration and the process by which clients obtain boot files from a server.

Figure 1-1. Elements of Diskless Service

Figure 1-1 Elements of Diskless Service

PROM Resources

The PROM on a diskless client must include the Internet Bootstrap Protocol, bootp, the network protocol that initiates remote booting. During the client's power-up sequence, bootp sends a request for a boot file (the unix image) to the diskless server. The server downloads the client's boot file using the Trivial File Transfer Protocol, tftp. (The details of this process are explained in “Debugging the Boot Process” in Chapter 7.)

IRIX and IRIX Utilities

Client installations of IRIX and its utilities are maintained in dedicated directories on the server. With the exception of the kernel, which resides in client memory after it is downloaded, the client retrieves and executes operating system programs and utilities from the server on an as-needed basis. The swap space that is needed for program execution is also furnished by the server (see “Local Disk Resources” for exceptions).

NFS Resources

With the exception of the unix boot file, all files needed by a diskless client, including the IRIX operating system and IRIX utilities, are provided by the NFS export and mount facilities. For this reason, a diskless server must be running NFS to export the necessary directories, and the NFS application must be available to each diskless client so that it can mount the exported directories. In addition to the required filesystems that it mounts from the server, a diskless client can also mount NFS filesystems and directories from other remote hosts.

Local Disk Resources

A diskless client can be equipped with a local disk of its own. The local disk on such a client does not supply the minimal operating system, and the disk is not used for booting, as it is on conventional standalone systems. Rather, the client obtains booting and operating system resources from the server, and the local disk is reserved for specialized uses. Commonly, the disk is configured to provide local swap space or the /tmp directory for the client.

Diskless Tree

The software on a server that is dedicated to supporting its diskless clients is referred to as the diskless tree. Ordinarily, the diskless tree occupies an entire filesystem, but a diskless tree can also be configured as a portion of an existing filesystem.

All diskless trees are composed of three basic elements: share trees, client trees, and swap trees. The overall size and configuration of a diskless tree depends on the number of clients that it supports and the number of IRIX versions it offers.

Figure 1-2 illustrates the diskless tree for a server supporting three diskless clients on a single version of IRIX.

Figure 1-2. Simple Diskless Tree

Figure 1-2 Simple Diskless Tree

Share Tree

The share tree contains the portion of the IRIX operating system that can be shared by a group of diskless clients. This includes IRIX kernel modules, hardware-specific files for each workstation model that the client supports, IRIX commands, and IRIX files that cannot be modified. The purpose of the share tree is to minimize the amount of disk space that the diskless implementation requires when it includes more than one client.

A diskless tree contains one share tree for each release of IRIX that it supports. Two share trees are required to run a 32-bit and a 64-bit version of the same operating system (an IRIX 6.5 share tree for 32-bit clients and a separate IRIX 6.5 for 64-bit clients, for example). The number of share trees that a server can support depends on the amount of disk space it contains and the usage patterns of its clients.

Figure 1-3 illustrates what happens to the diskless tree shown in Figure 1-2 when an additional IRIX release is added.

Figure 1-3. Diskless Tree with Multiple Share Trees

Figure 1-3 Diskless Tree with Multiple Share Trees

Client Tree

A client tree contains the IRIX kernel for an individual client, the specific hardware files that the client requires, and private files such as /etc/hosts, /etc/fstab, and /etc/sys_id. All other operating system files reside on the share tree. The diskless tree contains a client tree for each client that it supports.

Swap Tree

The swap tree provides the disk space that an individual client needs for virtual memory operations. It contains a single file whose contents support the virtual memory function of that client. The diskless tree typically contains a swap tree for every client that it supports; however, if a client contains a disk, the local disk may supply its swap space (details are explained in “Adding a Local Swap Partition”).

Influence of Client Classes

A class is a group of workstations that contain identical CPU and graphics hardware. A class is generally (but not always) designated by a model name, such as O2 or Octane.

A client class requires its own hardware-specific software modules. For this reason, a share tree must contain all the hardware-specific modules needed to support every class in its client base. By contrast, a client tree contains only those hardware-specific modules needed to support the individual client that is using it (details are explained in “Client Hardware Variables in the Share Tree Configuration File”).