/hosts

The /hosts directory is the root of the first of the three main branches of the objectroot filesystem hierarchy (the other two being the /org and the /users branches).

The /hosts directory is used for storing host objects. A host object is a directory tree that contains an operating system kernel and the variable data of any configured services.

User commands and implementations of services are generally not stored as part of the host object. The only exceptions to this are essential commands needed in single user mode and certain administration tools.

The pathname of a host object can take the following forms:

/hosts/self/

A special name designating the active host running on the local computer.  [ More ... ]

/hosts/hostname/

The host hostname.

/hosts/self_time/

A snapshot of /hosts/self taken at time, where time is of the format “YYYYMMDDhhmmss” (UTC) truncated to desired accuracy.

[ For a description of the contents of a host object, descend to /host/self. ]

Objectroot host vs. network host

An objectroot host usually also implements the functionality of a network host (Wikipedia), but the concepts are not interchangeable. An objectroot host is not necessarily set up to serve the network, and multiple objectroot hosts may take turns, or even act in concert, to implement a single network host.

The self host

Self is a special host name that designates the currently active most privileged host instance running on the local computer. A hard reboot always passes control to a kernel found in

/hosts/self/kern/...

Uses for host objects

A host object, apart from self, may represent any of the following:

  1. an alternative version of self reserved for testing, maintenance or reference purposes;
  2. a snapshot of self stored for backup, forensic or other purposes;
  3. another computer's /hosts/self network-mounted on the local machine (using the name of the remote computer as a mount point);
  4. a stub for a remote host to which the implementation is able to forward requests automatically;
  5. a guest system running locally under a virtualization facility;
  6. a passive host object waiting to be provisioned for any of the above uses, locally or remotely;
  7. a prototype host object used as a starting point when creating host instances; or
  8. any other creative use of the host concept.

Computer clusters

Nodes in a computer cluster typically feature the entire cluster as entries under /hosts.[1] The sole individuating datum is the self link, which for each of the cluster nodes corresponds to a different object. The symmetry and transparency of this arrangement brings considerable simplification to system management, load balancing, task migration and monitoring functions.

Naming hosts

Host directories can be named freely as long as the following naming conventions are taken into account (i.e. either respected or knowingly broken):

  • By convention, names are written in all lowercase.
  • Names containing a period (.) are assumed to be fully qualified Internet domain names. (If you need to compose a local host name from multiple words, use dash (-) as a separator instead.)
  • The names localhost and localhost.localhost are reserved for the network host with the address of the loopback network interface (127.0.0.1 in IPv4, or ::1 in IPv6).
  • The snapshot time format is standardized in an attempt to promote interoperability between system management tools.
  1. Either remote-mounted or automatically accessible using some other sharing/forwarding technique.