Fehlertoleranz bezieht sich auf die Fähigkeit eines Systems, den normalen Betrieb auch dann aufrechtzuerhalten, wenn bestimmte Komponenten ausfallen oder eine Fehlfunktion aufweisen. Diese Fähigkeit ist für hochverfügbare, geschäftskritische und sogar lebenswichtige Systeme unerlässlich. Unter Fehlertoleranz versteht man insbesondere, dass das System beim Auftreten eines Fehlers keine Leistungseinbußen oder Ausfallzeiten erfährt. Wenn ein Fehler auftritt, ist sich der Endbenutzer des Problems nicht bewusst. Im Gegensatz dazu wird ein System, bei dem Fehler auftreten, aber weiterhin Dienste ausgeführt werden, als „resilientes System“ bezeichnet. Ein solches System kann sich an das Auftreten von Fehlern anpassen und Dienste aufrechterhalten, weist jedoch bestimmte Auswirkungen auf die Leistung auf.
Unter Fehlertoleranz versteht man konkret Computersysteme, die sicherstellen, dass das Gesamtsystem auch dann weiter funktioniert, wenn Hardware- oder Softwareprobleme auftreten.
Der früheste fehlertolerante Computer in der Geschichte der Computerentwicklung war der SAPO, der 1951 von Antonín Svoboda in der Tschechoslowakei gebaut wurde. Das grundlegende Design des Computers wurde als drahtgewickelte Magnettrommel implementiert und nutzte eine Abstimmungsmethode zur Speicherfehlererkennung, eine Technik, die als dreifache modulare Redundanz bekannt ist. Im Laufe der Zeit wurden viele andere ähnliche Geräte entwickelt, hauptsächlich für militärische Zwecke. Später entstanden nach und nach drei Arten von Optionen: Computer, die lange Zeit ohne Wartung betrieben werden können, wie beispielsweise die Computer und Satelliten der NAASA die sehr zuverlässig sind, aber einer ständigen Überwachung bedürfen, wie zum Beispiel solche, die zur Überwachung und Steuerung von Kernkraftwerken oder Supraleiterexperimenten verwendet werden, und Computer, die unter hoher Belastung arbeiten, wie zum Beispiel die vielen Supercomputer, die von Versicherungsunternehmen zur probabilistischen Überwachung eingesetzt werden;
Viele in den 1960er Jahren von der NASA durchgeführte Forschungen zu sogenannten LLNM-Computern (Long Life, No Maintenance) ebneten den Weg für zukünftige Weltraummissionen. Diese Computer unterstützen Speicherwiederherstellungsmethoden durch die Verwendung von Backup-Speicher-Arrays, wie z. B. dem JSTAR-Computer, der Fehler selbst erkennen und reparieren oder redundante Module aktivieren kann. Diese Computer funktionieren auch heute noch.
Frühere Designs konzentrierten sich in der Regel auf interne Diagnosen, bei denen Fehler von Fachleuten entdeckt und behoben werden konnten.
Spätere Entwürfe zeigten jedoch, dass Systeme selbstheilend und diagnostisch sein, Fehler isolieren und bei Auftreten von Fehlern redundante Backups durchführen müssen. Dies ist entscheidend für die Implementierung hochverfügbarer Computersysteme.
Zum Beispiel erfordern einige fehlertolerante Hardwaresysteme, dass beschädigte Komponenten entfernt und ersetzt werden, während das System läuft, was als „Hot Swapping“ bezeichnet wird. Solche Systeme verfügen normalerweise über ein einziges Backup, das als Single Point of Tolerance bezeichnet wird, und die meisten ausfalltoleranten Systeme fallen in diese Kategorie. Fehlertolerante Techniken haben in Computeranwendungen bemerkenswerte Erfolge erzielt.
Tandem Computer baut darauf auf und etabliert das NonStop-System zur jährlichen Laufzeitberechnung.
Neben der Hardware kann sich Fehlertoleranz auch in der Computersoftware widerspiegeln, beispielsweise in der perfekten Gestaltung der Prozessreplikation und der Datenformate, damit diese ordnungsgemäß abgebaut werden können. HTML ist ein typisches Beispiel dafür, dass Webbrowser neue und nicht unterstützte HTML-Entitäten ignorieren können, ohne die Benutzerfreundlichkeit des gesamten Dokuments zu beeinträchtigen. Ähnliche Designs tauchen auch auf vielen beliebten Websites auf, die in Deepin schlanke Schnittstellen bereitstellen, um eine breite Zugänglichkeit zu gewährleisten.
Die Implementierung eines fehlertoleranten Designs ist nicht immer eine praktische Option, da die damit verbundene Redundanz Probleme wie erhöhtes Gewicht, Kosten und Designzeit mit sich bringt. Daher müssen Designer sorgfältig abwägen, welche Komponenten Fehlertoleranzfähigkeiten erfordern.
Jede Komponente muss sorgfältig hinsichtlich ihrer Ausfallwahrscheinlichkeit, Kritikalität und Kosten bewertet werden.
Zum Beispiel ist das Radio eines Autos zwar kein kritisches Bauteil, aber von relativ geringer Bedeutung, wohingegen ein Insassenrückhaltesystem (z. B. ein Sicherheitsgurt) aufgrund seiner kritischen Funktion zur Gewährleistung der Sicherheit bei einem Unfall als überflüssig angesehen wird Design.
Zu den grundlegenden Merkmalen eines fehlertoleranten Systems gehören: kein Single Point of Failure; die Fähigkeit, fehlerhafte Komponenten zu isolieren und die Notwendigkeit einer Fehlerbehebung, die normalerweise die Klassifizierung und Definition von Systemfehlern erfordert;
Kann fehlertolerantes Design angesichts einer immer komplexer werdenden Technologiewelt die verschiedenen Systeme in unserem täglichen Leben wirklich schützen und es uns ermöglichen, unnötige Gefahren in unserem zukünftigen High-Tech-Leben zu vermeiden?