Frangipani: A Scalable Distributed File System Thekkath, Mann, Lee SOSP 1997 Why not primary copy, as in Harp? Work out our own design... How to divide data among the network disks. Why does the Frangipani / Petal split make sense? Performance vs Harp? Reliability vs Harp? What exactly happens if a client e.g. creates a file? What steps does the server go through? Order of: log write, meta-data write, lock release, reply to client. What if a client on a different server reads that file? What if two clients try to create the same file at the same time? The locks are doing two things: Serializing updates to meta-data. Recording the owner and copy-set for cache consistency. What if a server dies and it is not holding any locks? Can the other servers totally ignore this? What if a server dies just after completing an operation? I.e. just after sending "OK" response to the client. What if a server dies while holding locks? Can we just ignore it until it comes back up and recovers itself? What's the potential problem? What does Frangipani do to recover? How do they know where to start re-playing the log? What part of the log *must* be examined? What part of the log can be ignored? How does recovery process know? What if you need to replay a log record affecting an i-node that another server *subsequently* modified? Could this happen? What if a server writes a log entry to Petal, writes the block to Petal, then crashes before writing commit record? What if a server runs out of log space? What if it hasn't yet flushed corresponding blocks to Petal? What if two servers crash at about the same time? And they both modified the same file, then released lock. How do we know what order to replay their logs in? I.e. can we replay one, then the other? Or must we interleave? What happens if the network partitions? Why isn't the lock service a performance bottleneck? What if a lock server crashes? What is the point of the NVRAM in the benchmarks (Table 1)? Why would NVRAM help, in general? With FFS? Doesn't help when creating directories. Does help when copying files. What's the relationship with Harp? They solve similar problems. You might expect them to have analogous structure. What's the analogy?