Skip to content
/ GFS Public

a toy implementation of the Google File System (GFS) in golang

Notifications You must be signed in to change notification settings

Bariona/GFS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

the Google File System

a toy implementation of the Google File System(GFS) in golang.

Test

greybox_test.go: 1 master 5 chunkservers

$ cd ./src/gfs
$ go test -v 
$ go test -run="TESTCASENAE1|TESTCASE2|..."

Support Features

Read, Create, Delete, Write, Atomic Record Append, Garbage Collect (Stale Chunk Detection), Snapshot, Fault Tolerance (Chunk Re-replication)

Detailed Explanation: see here

Project Layout

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

Reference

  1. Effective Go
  2. paper of GFS
  3. MIT6.824 by Robert Morris

About

a toy implementation of the Google File System (GFS) in golang

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages