practice
DoI: 10.1145/1666420.1666439
Article development led by
queue.acm.org
Kirk McKusick and Sean Quinlan discuss the
origin and evolution of the Google File System.
GfS:
evolution on
fast-forward
dUrinG thE EarLy stages of development at Google, the
initial thinking did not include plans for building a new
file system. While work was under way on one of the
earliest versions of the company’s crawl and indexing
system, however, it became quite clear to the core
engineers that they really had no other choice—thus,
the Google File System (GFS) was born.
Given that Google’s goal was to build a vast storage
network out of inexpensive commodity hardware, it
had to be assumed that component failures would
be the norm—meaning that constant monitoring,
error detection, fault tolerance, and automatic
recovery must be an integral part of the file system.
Also, even by Google’s earliest estimates, the system’s
throughput requirements were going to be daunting
by anybody’s standards—featuring multi-gigabyte
files and data sets containing terabytes of information
and millions of objects. Clearly, this meant traditional
assumptions about I/o operations and block sizes
would have to be revisited. There was
also the matter of scalability. This was
a file system that would surely need to
scale like no other. Of course, back in
those earliest days, no one could have
possibly imagined just how much scalability would be required. They would
learn about that soon enough.
Still, nearly a decade later, most of
Google’s mind-boggling store of data
and its ever-growing array of applications continue to rely upon GFS. Many
adjustments have been made to the file
system along the way, and—together
with a fair number of accommodations
implemented within the applications
that use GFS—they have made the journey possible.
To explore the reasoning behind a
few of the more crucial initial design
decisions as well as some of the incremental adaptations that have been
made since then, Sean Quinlan was
asked to pull back the covers on the
changing file-system requirements and
the evolving thinking at Google. Since
Quinlan served as the GFS tech leader
for a couple of years and continues now
as a principal engineer at Google, he’s
in a good position to offer that perspective. As a grounding point beyond the
Googleplex, Kirk McKusick was asked
to lead the discussion. He is best known
for his work on BSD (Berkeley Software
Distribution) Unix, including the original design of the Berkeley FFS (Fast File
System).
The discussion starts at the beginning—with the unorthodox decision to
base the initial GFS implementation on
a single-master design. At first blush,
the risk of a single centralized master
becoming a bandwidth bottleneck—or
worse, a single point of failure—seems
fairly obvious, but it turns out Google’s
engineers had their reasons for making
this choice.
mCKuSICK: One of the more interesting—
and significant—aspects of the original
GFS architecture was the decision to
base it on a single master. Can you walk
us through what led to that decision?
QuInLAn: The decision to go with a