Plan 9 Networks

Plan 9 machines

A Plan 9 network has three types of specialised machines:
In some cases, the cpu servers might use higher bandwidth connections to the file server than the terminals. There's a mixture of AMD64 and ARM processors. All the machines take file service over the network from the file server venti; most machines either haven't got discs or don't need them. There is a mixture of terminal types, fixed and portable.

The file server

A Plan 9 file server provides the primary shared file storage over the 1g/bit network to both terminals and CPU servers.

Plan 9 provides an automated backup system known as the dump file system. The bulk storage (venti) is an archival, write-once store. Separately, a fossil server provides mutable storage on top of that. At 5am each morning the fossil server automatically saves the a pointer to the root of the existing hierarchy, and creates a new root pointer for further updates, which are made copy-on-write (including directory updates). It archives the changes to venti. All updates between snapshots are automatically made in a rewritable cache on disc. They are made permanent at the next dump. As well as the cache, the file server commits most of its memory to buffering data from its file systems. Thus, frequently accessed data is found in RAM, most active data is found in the magnetic disc cache, and finally the rest is fetched archival store.

As well as the main file system, the file server exports a dump directory, typically mounted on /n/dump, containing names of the form yyyy/mmdd, each providing a snapshot of the entire file store on the given date. Amongst other things, this allows running commands such as

diff -r /n/dump/1999/0101/sys/src /sys/src
to see what has changed in the sources since the start of the year, or yesterday(1):
yesterday -d .
to see whether a change I made in the current directory yesterday might explain a bug today. The history(1) command will display the history of the changes to a given file or directory across all dumps. Using Plan 9's bind primitive, parts of the dump can be bound over parts of the current hierarchy (eg, for regression testing).
charles.forsyth@gmail.com
6 May 2014