Fault tolerance

On this page 7

Fault tolerance is the ability of a system to continue operating correctly when one or more of its components fail, without interruption of service and ideally without any loss of data or in-flight work. In server reliability, it is the strictest form of resilience: where high availability accepts a short recovery after a failure, a fault-tolerant design aims for zero perceptible downtime because the failed component is masked rather than recovered from.

Fault tolerance is achieved through redundancy combined with detection and masking. Duplicate power supplies, mirrored disks, lockstep processors, replicated services and consensus-based clusters all follow the same principle: the system holds enough spare capacity, already active or instantly available, that a single fault does not reach the user.

How fault tolerance works

A fault-tolerant system performs three tasks continuously. It must detect a fault, isolate the faulty component so it cannot corrupt the rest of the system, and mask the fault by continuing with redundant components. Some designs then repair or replace the failed part while the system keeps running, which is known as hot swapping.

Engineers distinguish between a fault, the underlying defect such as a failed capacitor or a software bug, an error, the incorrect internal state it causes, and a failure, the point at which the service visibly deviates from its specification. Fault tolerance works by stopping the chain before an error becomes a failure.

TechniqueHow it masks a faultTypical example
Hardware redundancyDuplicate parts share or take over the loadDual power supplies, RAID 1 or RAID 10
Lockstep executionTwo processors run identical instructions and compareFault-tolerant servers and VMs
Triple modular redundancyThree units vote and the majority winsAvionics and safety systems
ReplicationData or state is copied to several nodesDatabase replicas, distributed storage
Consensus protocolsA quorum agrees on every state changeRaft or Paxos-based clusters
Error-correcting codesExtra bits detect and correct corruptionECC memory, erasure coding
Main redundancy techniques

Fault tolerance compared with high availability and redundancy

Fault tolerance, high availability and redundancy are related but not interchangeable. Redundancy is a means, while fault tolerance and high availability are outcomes that differ mainly in how much interruption they accept.

ConceptGoalInterruption on failureTypical cost
Fault toleranceNo visible effect of a faultNoneHighest
High availabilityMinimize downtimeSeconds to minutesModerate to high
RedundancyProvide spare componentsDepends on designVaries
Disaster recoveryRestore after major lossMinutes to daysVaries with RTO and RPO
Related reliability concepts

An active-passive cluster with failover is a typical high-availability design: the standby node takes over after a timeout, and open sessions may be lost. A fault-tolerant equivalent keeps a hot standby in lockstep or runs active-active, so the surviving component continues the exact same work without a restart.

Levels of fault tolerance in server infrastructure

Fault tolerance is built in layers, and each layer protects against a different class of fault. A system is only as tolerant as its weakest layer, so designers look for any remaining single point of failure across the whole path.

LayerTypical faultCommon protection
ComponentDisk, fan or power supply failureRAID, redundant fans and supplies
ServerMotherboard or CPU failureLockstep VMs, clustered nodes
NetworkSwitch, link or NIC failureBonded NICs, dual switches, multiple paths
ApplicationProcess crash or bad nodeStateless replicas behind a load balancer
DataCorruption or lost writesSynchronous replication, checksums
SitePower or facility outageMultiple availability zones or data centers
Fault tolerance by infrastructure layer

The usual design rule is N+1 for components, meaning one spare beyond what the load requires, and 2N for the most critical paths, meaning a complete duplicate. Distributed systems often require at least three nodes so that a majority quorum survives the loss of one.

Designing and testing a fault-tolerant system

Design starts with a failure mode analysis: listing what can fail, how likely it is, measured with figures such as MTBF, and what the impact would be. The level of tolerance should match the business requirement, because each extra layer adds cost and complexity.

  • Define the fault model: which faults must be tolerated, for example one node, one zone or one region.
  • Remove shared dependencies: redundant servers on one power feed or one switch are not independent.
  • Keep replicas consistent: synchronous replication protects data but adds write latency.
  • Monitor redundancy: a failed spare that nobody notices leaves the system silently unprotected.
  • Test regularly: pull cables, stop nodes and use chaos engineering to confirm masking works.

Testing is essential because redundancy that has never been exercised often fails when needed. Common discoveries include misconfigured failover paths, expired certificates on standby nodes and capacity that cannot carry the full load once a component is gone.

Limits and trade-offs of fault tolerance

No system tolerates every fault. Redundancy protects against independent random failures, but it does little against common-mode failures that hit all copies at once, such as a software bug, a bad configuration push or an operator error replicated to every node.

Trade-offEffectMitigation
CostDuplicate hardware and licensesApply full tolerance only to critical paths
PerformanceSynchronous replication adds latencyPlace replicas close together
ComplexityMore components and failure modesAutomate configuration and testing
Common-mode faultsAll replicas fail togetherStaged rollouts and design diversity
Trade-offs of fault-tolerant design

Fault tolerance also does not replace backups. A replicated deletion or corruption is copied faithfully to every replica, so point-in-time backups and a disaster recovery plan remain necessary.

A plain-language summary

Think of an airplane with two engines. If one engine stops, the plane keeps flying and the passengers may never notice. That is fault tolerance: the system is built so that a broken part does not stop the journey.

In computing, the same idea means two power supplies, mirrored disks or several servers doing the same job. When one part fails, another one is already carrying the work. It costs more to build, but for services that must never stop, such as payments or hospital systems, it is worth it.

An example from practice

A payment processor runs its transaction database on a three-node cluster spread across three availability zones, using a consensus protocol that requires two of three nodes to confirm every write. Each node has redundant power supplies, mirrored NVMe drives and two network links to separate switches.

During a routine day, a power distribution fault takes one availability zone offline. The two remaining nodes still form a majority, so transactions continue without interruption and no committed payment is lost. Monitoring alerts the operations team, which restores the third node after the zone recovers. The team then adds a quarterly exercise in which one zone is deliberately isolated to confirm that the cluster keeps working.