The Ubiquitous File Server in Plan 9 by C H Forsyth

Vita Nuova Limited
3 Innovation Close
York Science Park
York England YO10 5ZF
20 June 2005

1. Introduction

Plan 9 is a distributed system begun in the late 1980s by the Bell Labs research centre where Unix was born. Rather than having each computer in a network act as if it still controlled everything, Plan 9 is designed to allow a single large system to be built from smaller cooperating systems performing specific tasks, notably file service, authentication, cpu service and interactive graphics. Although all system components can indeed run on a single machine, a typical development environment has a network of cheap single-user diskless terminals (usually PCs without disks these days) sharing permanent file storage and multi-processor cpu servers (often also diskless). Even the file storage implementation has two parts: a fairly conventional hierarchical file system stores data in a separate write-once block archiving service, and they can usefully run on separate machines. An authentication server runs only a special set of trusted processes to do authentication for the network, and implements only the few relevant protocols. Other cpu servers might provide resources for big computations or compilations, or provide SMTP, FTP and HTTP services to internal and external networks. A Plan 9 terminal runs programs that implement the interactive interface; it is not just a remote display as in some ‘thin client’ schemes.

Plan 9 supports a range of processor types, and it is possible to mix and match within a network: Sparc, MIPS, Alpha, PowerPC and Intel. In the past it was common to use big multi-processor MIPS machines as cpu servers with various other architectures as terminals. Currently of course most implementations use computers based on Intel or AMD processors because they are cheap and available, but ARM and PowerPC still have a place, not least in the embedded realm, and the system source is kept portable.

The system has some unusual elements, described in previous papers: its networking subsystem, its window system, the Acme programming environment, the archival storage subsystem (Venti), the archival file store above that (Fossil), the earlier WORM-based file server, the language-driven message exchange (plumber), its C compiler suite, its language-based debugger (Acid), details of its kernel implementation, its real-time support, and its authentication subsystem. 16 Some aspects have been adopted by other systems: the Unicode representation UTF-8, now in common use, was originally developed for Plan 9. Plan 9’s defining novelty, however, remains its representation of resources in a distributed system.

Copyright © 2005 C H Forsyth Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medi- um, provided this notice, and the copyright notice, are preserved. Libre Software Meeting, July 5-9, 2005, Dijon, France.- 2 -