a toy implementation of the Google File System(GFS) in golang.
greybox_test.go: 1 master 5 chunkservers
$ cd ./src/gfs
$ go test -v
$ go test -run="TESTCASENAE1|TESTCASE2|..."
Read, Create, Delete, Write, Atomic Record Append, Garbage Collect (Stale Chunk Detection), Snapshot, Fault Tolerance (Chunk Re-replication)
Detailed Explanation: see here
View the raw code to see an organized layout (
layout
. ├── README.md ├── docs │ ├── GFS.pdf │ ├── config.md │ ├── notes.md │ └── static │ ├── consist.png │ ├── icon.png │ ├── layout.png │ └── pipeline.png ├── servers.txt └── src ├── gfs │ ├── chunkserver │ │ ├── chunkserver.go │ │ └── download_buffer.go │ ├── client │ │ └── client.go │ ├── cmd │ │ └── main.go │ ├── common.go │ ├── go.mod │ ├── go.sum │ ├── graybox_test.go │ ├── master │ │ ├── chunk_manager.go │ │ ├── chunkserver_manager.go │ │ ├── master.go │ │ └── namesapce_manager.go │ ├── rpc_structs.go │ └── util │ ├── array_set.go │ └── util.go └── gfs_stress ├── atomic_append_success.go ├── cmd │ ├── center │ │ └── stress_center.go │ └── node │ └── stress_node.go ├── consistency_write_success.go ├── fault_tolerance.go ├── go.mod └── stress.go
- Effective Go
- paper of GFS
- MIT6.824 by Robert Morris