Skip to main content

DFS requirements and file service architecture

Short answer

DFS requirements include transparency, concurrent updates, replication, heterogeneity, fault tolerance, consistency, security, and efficiency. Its architecture comprises a flat file service (UFID-based, stateless), a directory service (name-to-UFID mapping), and a client module providing a unified API and caching.

What are the requirements of Distributed File System? Describe the file service architecture for Distributed File System.

Requirements of a distributed file system

  1. Transparency: access, location, mobility, performance and scaling transparency, so users see one file tree.
  2. Concurrent file updates: changes by one client must not disturb others; locking or optimistic control is needed.
  3. File replication: copies of a file at several servers share the load and improve fault tolerance.
  4. Hardware and operating system heterogeneity: interfaces must be defined so that clients and servers can run on any OS or hardware.
  5. Fault tolerance: service continues after client or server crashes (idempotent, stateless operations, retransmission).
  6. Consistency: the one-copy update semantics of a local file system should be approximated.
  7. Security: authentication and access control lists on requests, with encryption when needed.
  8. Efficiency: performance comparable to a local file system, using caching, read-ahead and delayed write.

File service architecture

The model of Coulouris divides the service into three modules.

 Client computer          |   Server computer
 +-------------------+    |  +----------------------+
 | Application       |    |  | Directory service    |
 | programs          |    |  |  (name -> UFID)      |
 +---------+---------+    |  +----------+-----------+
           |              |             |
 +---------v---------+  RPC/messages +---v-----------+
 | Client module     |<------------->| Flat file     |
 | (API, cache)      |    |          | service       |
 +-------------------+    |          +---------------+
  • Flat file service: works on file contents. Files are identified by a unique file identifier (UFID). Operations: Read, Write, Create, Delete, GetAttributes, SetAttributes. All operations except Create are repeatable (idempotent), and the server keeps no client state (stateless).
  • Directory service: maps text names to UFIDs. Operations: Lookup, AddName, UnName, GetNames. Directories are themselves files stored by the flat file service.
  • Client module: runs in each client computer, gives applications one API, hides the location of servers, and holds the cache and the addresses of the servers.

✓ Answer checked by Claude Opus 5.5 (high effort)

All Distributed System chapter 2 questions →