A node fence (or I/O fence) is a virtual "fence" that separates nodes which must not have access to a shared resource from that resource. It may separate an active node from its backup. If the backup crosses the fence and, for example, tries to control the same disk array as the primary, a data hazard may occur. Mechanisms such as
STONITH are designed to prevent this condition. Isolating a node means ensuring that
I/O can no longer be done from it. Fencing is typically done automatically, by cluster infrastructure such as
shared disk file systems, in order to protect
processes from other active nodes modifying the resources during node failures. Mechanisms to support fencing, such as the reserve/release mechanism of SCSI, have existed since at least 1985. Fencing is required because it is impossible to distinguish between a real failure and a temporary
hang. If the malfunctioning node is really down, then it cannot do any damage, so theoretically no action would be required (it could simply be brought back into the cluster with the usual join process). However, because there is a possibility that a malfunctioning node could itself consider the rest of the cluster to be the one that is malfunctioning, a
split brain condition could ensue, and cause
data corruption. Instead, the system has to assume the worst scenario and always fence in case of problems. ==Approaches to fencing==