How

Read

What are the steps when client C wants to read a file?

  1. C sends filename and offset to coordinator (CO) (if not cached) CO has a filename array-of-chunkhandle table and a chunkhandle list-of-chunkservers table
  2. CO finds chunk handle for that offset
  3. CO replies with chunkhandle + list of chunkservers
  4. C caches handle + chunkserver list
  5. C sends request to nearest chunkserver chunk handle, offset
  6. chunk server reads from chunk file on disk, returns to client

Write

What are the steps when C wants to write a file at some offset? paper’s Figure 2

  1. C asks CO about file’s chunk @ offset
  2. CO tells C the primary and secondaries
  3. C sends data to all (just temporary…), waits for all replies (?)
  4. C asks P to write
  5. P checks that lease hasn’t expired
  6. P writes its own chunk file (a Linux file)
  7. P tells each secondary to write (copy temporary into chunk file)
  8. P waits for all secondaries to reply, or timeout secondary can reply “error” e.g. out of disk space
  9. P tells C “ok” or “error”
  10. C retries from start if error

Why