Forum Moderators: Robert Charlton & goodroi
Much in the way that a RAID 5 storage array "stripes" data across multiple disks to gain protection from failures, GFS distributes files in fixed-size chunks which are replicated across a cluster of servers.... GFS is designed to be tolerant of that without losing (too much) data.
...it may not reiterate its calculations and therefore use older copies of data against newer algorithm changes (even if no changes have occurred during this period when the temp drive dies).
To ensure that the data firehose is highly available, GFS trades off some other things - like consistency across replicas. GFS does enforce data's atomicity - it will return an error if a write fails, then rolls the write back in metadata and promotes a replica of the old data, for example. But the master's lack of involvement in data writes means that as data gets written to the system, it doesn't immediately get replicated across the whole GFS cluster. The system follows what Google calls a "relaxed consistency model" out of the necessities of dealing with simultaneous access to data and the limits of the network.
This means that GFS is entirely okay with serving up stale data from an old replica if that's what's the most available at the moment - so long as the data eventually gets updated. The master tracks changes, or "mutations," of data within chunks using version numbers to indicate when the changes happened. As some of the replicas get left behind (or grow "stale"), the GFS master makes sure those chunks aren't served up to clients until they're first brought up - to-date...