Distributed Storage / Google Drive

Data can be stored on multiple nodes:
1. Large file is broken into chunks/blocks and those chunks are stored across multiple nodes.
2. Number of files exceed to be stored on 1 system, those are stored on different nodes 3. Replication: Each chunk/file may also be replicated on multiple nodes (e.g., 3 replicas) for fault tolerances

Requirements

Functional
1. When a file/chunk reaches a configured size threshold, the system should place subsequent chunks on another node; the user should not need to know the physical location
2. The system should support read/write/delete operations
3. Concurrent Writes: to the same file/chunk shouldd nnot be allowed, only 1 write to succeed
Non Func
1. Highly Available: The system should remain available even if a storage node fails, via replication.
2. Eventual consistency