Andrew File System
| Company type | Software |
|---|---|
| Industry | Distributed computing / Network file system |
| Founder | Carnegie Mellon University |
| Headquarters | Pittsburgh , United States |
| Products | Distributed file system software |
The Andrew File System (AFS) is a distributed file system created by Carnegie Mellon University as a component of the Andrew Project. It utilizes trusted servers to deliver a unified and location-independent file namespace accessible from client machines. Initially called "Vice," the name "Andrew" pays tribute to Andrew Carnegie and Andrew W. Mellon. Its main usage lies within the realm of distributed computing.
Features
AFS provides significant improvements compared to conventional networked file systems, especially regarding scalability and security. For example, one corporate deployment at Morgan Stanley supports more than 25,000 users. Authentication is handled through Kerberos, while directory-level access control lists manage user and group permissions. To enhance performance and permit limited offline access during server or network interruptions, clients maintain local caches of files.
The system adopts a weak consistency approach, where read and write operations are performed on the local cache. Modifications are synchronized back to the server once files are closed. Cache coherence depends on a callback system, enabling servers to inform clients about updates. After failures, callbacks must be re-established, but this does not necessitate reloading the files.
Because of its file locking design, AFS is unsuitable for large shared databases or record-level updates within shared files—a limitation aligned with its initial academic use case. For instance, the Andrew Message System stores each email as an individual file rather than grouping messages within a mailbox file.
A notable aspect of AFS is the concept of the volume, which organizes files, subdirectories, and AFS mountpoints. System administrators create volumes that are attached at designated paths and assigned specific quotas. Volumes can be relocated between servers without affecting user access. Additionally, volumes support replication through read-only clones; clients seamlessly connect to any accessible copy, enhancing data reliability and administrative flexibility.
On Andrew workstations, the file namespace is divided into a shared area—typically mounted at /afs—which remains consistent across all systems, and a distinct local area reserved for temporary files and links to shared resources.
AFS has influenced Version 4 of Sun Microsystems' NFS, while its derivative, the DCE Distributed File System (DFS), was adopted by the Open Software Foundation in 1989 as part of their Distributed Computing Environment. The second release of AFS served as a foundation for developing the Coda file system.
Implementations
Multiple implementations of AFS exist aside from the original version. In 2000, source code released by Transarc (IBM) led to the creation of OpenAFS, although Transarc's software has since become obsolete and unsupported. The Arla project produced an independent AFS client developed at the Royal Institute of Technology in Stockholm during the late 1990s and early 2000s.
Since at least Linux kernel version 2.6.10, a fourth AFS client implementation has been included in the kernel source. This client, contributed by Red Hat, remains relatively basic and lacks full functionality.
Available permissions
AFS Access Control Lists (ACLs) specify the following permissions for directories:
- Lookup (l)
- Grants the capability to enumerate directory contents, examine its ACL, and navigate into subdirectories.
- Insert (i)
- Allows the creation of new files or subdirectories within the directory.
- Delete (d)
- Authorizes the removal of files and subdirectories.
- Administer (a)
- Provides the privilege to alter the directory’s ACL. Users maintain this permission inherently on their personal home directories.
Permissions applicable to files and subdirectories consist of:
- Read (r)
- Enables reading file data and listing files inside subdirectories. To permit read access, files must possess the standard UNIX "owner read" permission.
- Write (w)
- Allows modification of file contents, contingent upon standard UNIX "owner write" permission.
- Lock (k)
- Permits locking files, which is necessary for applications that require file locking mechanisms.
Moreover, AFS includes Application ACLs (A–H), which have no impact on file access rights.
See also
References