8 At scale, hardware failure is not an event, it is a constant. Drives die, nodes reboot, and sites go dark, and a storage system has to keep your data intact through all of it. There are two dominant ways to make that happen: keep extra copies of the data (replication) or split the data into fragments with added parity (erasure coding). The choice between them shapes how much you spend on raw capacity, how durable your data is, and how the system performs. This guide explains both approaches in plain terms, lays out the tradeoffs side by side, and gives a clear answer to the real question: which one should you use, and when. There is no universal winner. There is a right fit for a given data profile and scale. What is replication? Replication is the simple idea: keep more than one identical copy of the data on separate hardware. If one copy is lost, the system serves from another and rebuilds the missing one. The most common setup keeps three copies, often written as 3x replication. The appeal is simplicity. Writes and reads are straightforward, latency is low because any full copy can answer a request, and recovery is easy since rebuilding a lost copy is just copying an existing one. For small files, hot data, and latency-sensitive workloads, replication is hard to beat. The catch is cost. Keeping three copies means you store three times the raw capacity of the actual data, which is 200 percent overhead on top of the data itself. Store one usable petabyte at 3x and you are buying three petabytes of raw disk. At small scale that is fine. At petabyte scale and beyond, it becomes the single largest line item in the storage budget. What is erasure coding? Erasure coding protects data with math instead of whole copies. The system splits an object into k data fragments, computes m additional parity fragments from them, and spreads all k+m fragments across separate failure domains such as different disks, nodes, or sites. The key property: the original object can be rebuilt from any k of the fragments, which means the system can lose up to m fragments at once and still return the data. An example makes the efficiency clear. An 8+4 scheme splits each object into 8 data fragments and 4 parity fragments, 12 in total. You can lose any 4 of the 12 and still reconstruct the object. The storage overhead is the total divided by the data, so 12/8, or 1.5 times the data, which is 50 percent overhead. Compare that to 3x replication at 200 percent overhead, often with comparable or better fault tolerance. That gap is why erasure coding dominates large-scale storage economics. How it works, briefly Most systems use Reed-Solomon coding. You do not need the algebra to make good decisions. The mental model is enough: the data is chunked, parity is calculated so that any k fragments carry enough information to reconstruct the whole, and the fragments are distributed so that no single failure, and often no site failure, takes out more than the scheme can tolerate. The tradeoffs, head to head Neither approach is simply better. They trade different things. Storage efficiency and cost This is erasure coding’s decisive advantage. A typical erasure-coded scheme stores data at roughly 1.2x to 1.5x, where 3x replication stores at 3x. On large footprints that difference can cut raw capacity, and the power, cooling, and rack space that come with it, by half or more. The larger the environment, the larger the savings. Durability Both can reach very high durability, commonly expressed as many nines. Replication durability depends on the number of copies and how independently they can fail. Erasure coding lets you tune durability directly through your choice of k and m: widening m increases how many simultaneous failures you can survive, usually at a much lower capacity cost than adding another full replica. For a target level of protection, erasure coding generally gets there with less overhead. Performance This is where replication earns its place. Because any full copy can serve a read, replication delivers low latency and handles small-object and random-access workloads well, with no parity math on the write path. Erasure coding adds computation to encode parity, and reconstructing an object can require reading several fragments from different devices, which introduces read amplification and network traffic. As a general tendency, replication favors small and hot data, while erasure coding favors large-object throughput. Modern implementations have narrowed the gap, so treat these as tendencies to validate for your workload, not iron laws. Rebuild and recovery When a device fails, replication rebuilds by copying an intact replica, which is fast and simple but concentrates load on the source of the copy. Erasure coding rebuilds by reading k fragments and recomputing the missing one, which uses more CPU and network but spreads the work across many devices. At very large scale, how a system handles rebuild, and whether a rebuild storm degrades production, matters as much as steady-state performance. Failure domains and geography Erasure coding has a practical floor: you need at least k+m independent failure domains to place the fragments, which is one reason small clusters lean on replication. Placement can be local (fragments across disks and nodes in one site) or geo-distributed (fragments across multiple sites). Geo-distributed erasure coding can protect against a full site loss with far less overhead than replicating everything to every site, at the cost of added latency and cross-site bandwidth. Replication across sites is simpler but multiplies capacity by the number of sites. Scale Scale is the tiebreaker. At small footprints, replication’s overhead is affordable and its simplicity is worth a lot. As you approach and pass petabyte scale, the 3x tax becomes hard to justify, and erasure coding becomes the default for bulk capacity. When to use which Reach for replication when data is small, hot, or latency-sensitive, when the cluster is small, or when operational simplicity is the priority. Metadata, active working sets, and small-object workloads are natural fits. Reach for erasure coding when objects are large, when data is warm or cold and capacity-heavy, when you are at petabyte scale, when cost pressure is real, or when you need high durability without tripling capacity. Backups, archives, media, and large unstructured datasets are natural fits. In practice, the best systems do not choose once. They mix. A common pattern replicates small and hot data for speed while erasure-coding large and cold data for efficiency. Some systems replicate on ingest for fast acknowledgment, then convert to erasure coding in the background. Layer tiering and multi-site placement on top, and you get protection matched to each slice of the data rather than a single blunt policy. Common misconceptions A few myths cause bad decisions. “Erasure coding is always slower.” Not really. For large objects and throughput-oriented workloads it can be excellent. The performance cost shows up most with small objects and latency-sensitive access, which is exactly where a replicated tier belongs. “Erasure coding is only for cold archives.” Increasingly untrue. Faster media and better implementations have made erasure coding viable for active data in many systems. “More parity is free.” It is not. Widening m improves fault tolerance and costs relatively little capacity, but it adds encoding and rebuild work and requires enough failure domains to place the fragments. Design k and m for your real failure model, not the theoretical maximum. Quick reference DimensionReplication (for example 3x)Erasure coding (for example 8+4)Storage overheadHigh (200% at 3x)Low (about 50% at 8+4)Fault toleranceSurvive N-1 copy lossesSurvive up to m fragment lossesBest workloadsSmall, hot, latency-sensitiveLarge objects, capacity-heavy, warm/coldRebuildFast copy, concentrated loadRecompute from k fragments, spread loadMinimum footprintFew nodesAt least k+m failure domainsTypical useMetadata, hot tier, small clustersPetabyte-scale bulk capacity, backups, archives Putting it together Erasure coding versus replication is not a battle with a single victor. It is a design choice you make per data profile and per scale. Replication buys you simplicity and low latency at a high capacity cost. Erasure coding buys you dramatic capacity efficiency and tunable, high durability at the cost of more compute and more careful failure-domain design. For most large-scale and object-storage environments, the sensible default is erasure coding for bulk capacity, with a replicated tier reserved for small, hot, and latency-sensitive data. Whatever you choose, design your failure domains on purpose, size k and m to your real risk, and test how the system behaves during a rebuild, not just when everything is healthy. That is where scale either holds up or falls over. Frequently asked questions Is erasure coding better than replication? Not universally. Erasure coding is far more storage-efficient and reaches high durability at lower overhead, which makes it the usual choice at scale. Replication is simpler and faster for small, hot, latency-sensitive data. Most large systems use both. How much storage does erasure coding save versus replication? A lot at scale. Where 3x replication stores data at 3 times raw capacity (200 percent overhead), a scheme like 8+4 stores it at about 1.5 times (50 percent overhead), often with comparable or better fault tolerance. Is erasure coding slower than replication? It can be for small objects and latency-sensitive access, because of parity computation and reading multiple fragments. For large-object throughput it performs well. The right pattern is often a replicated hot tier plus an erasure-coded capacity tier. What do k and m mean in erasure coding? k is the number of data fragments an object is split into, and m is the number of parity fragments added. You store k+m fragments and can lose up to m of them. An 8+4 scheme has k=8, m=4. Can you use erasure coding and replication together? Yes, and many systems do. A common approach replicates small and hot data for speed and erasure-codes large and cold data for efficiency, sometimes replicating on ingest and converting to erasure coding later. Further reading: object vs block storage, durability in high-density systems, and distributed object storage.