IT PAPER DEEP-READ · PAPER 17

The Google File System (GFS)

Ghemawat, Gobioff & Leung · Google · SOSP 2003

中文 →

What did this paper do?

In 2003, three Google engineers published the storage system they'd built for themselves — GFS. The problem was concrete: Google's search, its crawled copy of the entire web, its logs — all of it was absurdly large, too big for any single machine, so it had to be spread across thousands of cheap machines. GFS is the software layer that glues those thousands of machines into "one giant hard drive." It later became the foundation for MapReduce and Bigtable, and directly inspired the open-source Hadoop.

A blunt starting assumption

When they built it, they accepted one thing: machines breaking is normal, not exceptional. Park thousands of cheap machines together and every day disks die, power supplies fail, cables come loose — it's not "will something break" but "how many are broken right now." Traditional storage systems assume hardware is basically reliable; at this scale that assumption simply collapses. Every design choice in GFS is reverse-engineered from "something is always breaking."

A different arrangement

GFS's setup is strikingly simple — just two roles: one "manager" (the master) and a large crew of "warehouse workers" (chunkservers).

The clever part: the manager only keeps the ledger, never touches the goods. The actual file data is sliced into big blocks; each block is stored in three copies on three different machines. The manager holds just a "ledger" — which blocks make up which file, and where each of the three copies lives. To read a file, you first ask the manager "where is it," the manager hands back an address, and you go straight to that warehouse-worker machine to fetch the data — never routing through the manager.

Why does it hold up?

A few plain but effective decisions. One: slice into big blocks. Files are cut into 64 MB blocks (not tiny few-KB cells), so the ledger stays small — the manager can keep the whole system's ledger in the memory of a single machine. Two: three copies of every block. One machine dies, the other two survive; when the manager notices a block is down a copy, it quietly re-copies one to restore the count, and you barely notice. Three: the manager never touches data. Every fetch is a direct, point-to-point connection between client and chunkserver, so the manager never jams up as "the place all traffic flows through." Four: optimized for appending. Most of Google's work is "keep adding new data to the end of a file" (a stream of logs, say), so GFS makes "many writers appending to the same file at once" both fast and safe.

What it gave us

GFS was the first to make people believe: a pile of machines that break constantly really can be assembled into storage that's huge, tough, and usable — not by making each machine more reliable, but by making the whole system tolerate machines breaking. This recipe — cheap machines + many copies + software backstop — became the template for big-data infrastructure for the next decade-plus.

Remember it in one line

Glue thousands of failure-prone cheap machines into one giant hard drive: slice data into big blocks, keep three copies of each, auto-restore when a machine dies; one "manager" keeps the ledger but never touches goods, so reads and writes go straight between client and warehouse worker — making the system huge, failure-proof, and jam-free. It's the first foundation stone of the big-data era.

Want the architecture diagram, the lease and record-append mechanics, and real-cluster numbers? → Switch to the deep read