Bad Block (Fehlerhafter Block)
Ein Bad Block, oder auch fehlerhafter Block genannt, ist ein Bereich von Speichermedien, der für die Speicherung und den Abruf von Daten nicht mehr zuverlässig ist, weil er physisch beschädigt oder korrumpiert wurde. Fehlerhafte Blöcke werden auch als fehlerhafte Sektoren (Bad Sector) bezeichnet.
Es gibt zwei Arten von fehlerhaften Blöcken: Ein physischer oder harter, fehlerhafter Block entsteht durch eine Beschädigung des Speichermediums. Ein weicher, oder logischer, fehlerhafter Block tritt auf, wenn das Betriebssystem(OS) nicht in der Lage ist, Daten aus einem Sektor zu lesen. Beispiele für einen weichen fehlerhaften Block sind, wenn die zyklische Redundanzprüfung (Cyclic Redundancy Check) oder der Fehlerkorrekturcode (Error Correction Code) für einen bestimmten Speicherblock nicht mit den vom Datenträger gelesenen Daten übereinstimmt.
Bei magnetischen Festplattenlaufwerken (HDDs) kann es zu fehlerhaften Blöcken kommen, wenn eine Stelle auf der Aufzeichnungsoberfläche defekt oder beschädigt ist. Auf NAND-Flash-Laufwerken können Blöcke durch Gebrauch abgenutzt werden, wodurch sie nach einer bestimmten Anzahl von Schreib- und Löschzyklen unzuverlässig oder unbrauchbar werden.
Ursachen
Speicherlaufwerke können ab Werk mit defekten Blöcken ausgeliefert werden, die aus dem Herstellungsprozess stammen. Bevor das Gerät das Werk verlässt, werden diese fehlerhaften Blöcke als defekt markiert und auf die zusätzlichen Memory-Zellen des Laufwerks umgeleitet.
Ein fehlerhafter Block kann auch die Folge eines physischen Schadens an einem Gerät sein, der es dem Betriebssystem unmöglich macht, auf Daten zuzugreifen. Bei HDDs können Missgeschicke, wie zum Beispiel das Fallenlassen eines Laptops, dazu führen, dass der Laufwerkskopf den Plattenteller beschädigt. Auch Staub und natürliche Abnutzung können HDDs beschädigen.
Schäden an einem Solid-State-Laufwerk (SSD) können auftreten, wenn ein Memory-Transistor ausfällt. Speicherzellen können mit der Zeit auch unzuverlässig werden, da das NAND-Flash-Substrat in einer Zelle nach einer bestimmten Anzahl von Programm-Löschzyklen (P/E-Zyklen) unbrauchbar wird.
Der Löschvorgang auf einer SSD erfordert das Senden einer großen elektrischen Ladung durch die Flash-Zelle. Mit der Zeit verschlechtert sich dadurch die Oxidschicht, die die Floating-Gate-Transistoren vom Silizium-Substrat des Flash-Speichers trennt, und die Bitfehlerraten steigen an. Der Controller des Laufwerks kann Fehlererkennungs- und Korrekturmechanismen verwenden, um diese Fehler zu beheben. Irgendwann jedoch können die Fehler die Fähigkeit des Controllers, sie zu korrigieren, übersteigen und die Zelle kann unzuverlässig werden.
Weiche fehlerhafte Sektoren werden durch Softwareprobleme verursacht. Wenn zum Beispiel ein Computer unerwartet herunterfährt, könnte sich die Festplatte mitten beim Schreiben auf einen Block abschalten. In diesem Fall könnte der Block Daten enthalten, die nicht mit seinem CRC-Fehlerkorrekturcode übereinstimmen und würde als fehlerhafter Sektor identifiziert werden.
Was fehlerhafte Blöcke bewirken
Wenn ein Block beschädigt oder korrumpiert ist, kann er die dort gespeicherten Daten unzugänglich machen. Wenn Betriebssystem- oder Anwendungsdateien in einem beschädigten Block gespeichert sind, kann dies Probleme mit dem Betriebssystem verursachen oder dazu führen, dass eine Anwendung nicht ausgeführt werden kann. Wenn die Anzahl der fehlerhaften Blöcke auf einer Festplatte zunimmt, können sie die Kapazität und Leistung des Laufwerks verringern und schließlich zu einem Hardwareausfall führen.
Platten-Dienstprogramme, wie CHKDSK auf Microsoft Windows-Systemen oder badblocks auf Linux-Systemen, können Speichermedien scannen und die fehlerhaften Sektoren markieren, so dass das Betriebssystem sie nicht verwendet. Auch die Firmware auf einem Festplatten-Controller kann einen fehlerhaften Block identifizieren und als unbrauchbar markieren. Dies geschieht normalerweise, wenn ein Block mit neuen Daten überschrieben wird. Der Controller ordnet fehlerhafte Blöcke automatisch einem anderen Sektor neu zu. Sobald er als fehlerhaft identifiziert ist, wird dieser Sektor bei zukünftigen Operationen nicht mehr verwendet.
Fehlerhafte Blöcke, die bei der Prüfung eines Laufwerks nach der Herstellung identifiziert werden, werden auf der so genannten P-Liste, kurz für Permanente oder Primäre Fehlerliste, aufgeführt. Defekte Blöcke, die nach dem Einsatz des Laufwerks gefunden werden und durch physische Beschädigung oder Verschlechterung der Aufzeichnungsoberfläche verursacht wurden, werden auf der G-Liste, kurz für die „growing“ (wachsende) Liste, vermerkt.
Wenn ein NAND-Flash-Laufwerk einen fehlerhaften Block identifiziert, wird dieser in der Bad Block Table (BBT) des Geräts aufgezeichnet. Bevor von einem NAND-Gerät gelesen oder auf ein NAND-Gerät geschrieben wird, überprüft der Controller die BBT des Geräts, um fehlerhafte Blöcke zu vermeiden. Flash-Laufwerke verwenden zwei Arten von BBTs: NAND-residente BBTs werden beim Systemstart beibehalten, und RAM-residente BBTs werden bei jedem Systemstart neu erstellt.
Management
Der beste Weg, eine Festplattendatei zu reparieren, die von einem fehlerhaften Block betroffen ist, ist das Überschreiben der Originaldatei. Dadurch wird die Festplatte veranlasst, den fehlerhaften Block neu abzubilden oder die CRC oder die Daten zu reparieren.
Die Verwaltung fehlerhafter Blöcke ist entscheidend für die Verbesserung der Zuverlässigkeit und Ausdauer von NAND-Flash-Laufwerken. Im Gegensatz zu magnetischen Speichermedien kann Flash nicht auf Byte-Ebene überschrieben werden; alle Änderungen müssen in einen neuen Block geschrieben werden, und die Daten im ursprünglichen Block müssen zum Löschen markiert werden.
Sobald ein Flash-Laufwerk voll ist, muss der Controller damit beginnen, die zum Löschen markierten Blöcke zu löschen, bevor er neue Daten schreiben kann. Zu diesem Zweck konsolidiert er gute Daten, indem er sie in einen neuen Block kopiert. Dieser Prozess erfordert zusätzliche Schreibvorgänge, um die guten Daten zu konsolidieren, und führt zu einer Schreibverstärkung, wenn die Anzahl der tatsächlichen Schreibvorgänge die Anzahl der angeforderten Schreibvorgänge übersteigt. Schreibverstärkung kann die Leistung und Lebensdauer eines Flash-Laufwerks verringern.
Flash-Anbieter verwenden eine Reihe von Techniken zur Steuerung des Schreibverstärkers. Eine, die als Garbage Collection bezeichnet wird, umfasst die proaktive Konsolidierung von Daten, indem Blöcke, auf die zuvor geschrieben wurde, wieder freigegeben werden. Bei korrekter Durchführung können diese neu zugewiesenen Sektoren die Notwendigkeit verringern, bei jedem Schreibvorgang ganze Datenblöcke zu löschen.
Die Hersteller verwenden auch Datenreduzierungstechnologien wie Komprimierung und Deduplizierung, um die Datenmenge, die auf ein Laufwerk geschrieben und gelöscht wird, zu minimieren. Darüber hinaus kann die Schnittstelle einer SSD dazu beitragen, die Schreibverstärkung zu verringern. Die Befehle TRIM von Serial ATA und UNMAP von SAS identifizieren nicht mehr verwendete Datenblöcke, die gelöscht werden können. Dieser Ansatz minimiert die Speicherbereinigung und gibt Platz auf dem Laufwerk frei, was zu einer besseren Leistung führt.
Um die Lebensdauer eines Solid-State-Systems zu verlängern, kann die Controller-Software, die einen NAND-Baustein verwaltet, einen Wear-Leveling-Algorithmus implementieren, um Programm-Löschzyklen (P/E-Zyklen) gleichmäßig über ein Laufwerk zu verteilen und sicherzustellen, dass kein Block im Vergleich zu anderen Blöcken übermäßig genutzt wird. Beim Wear Leveling ordnet das Flash-Gerät bei jedem Schreibvorgang die Speicherblöcke neu zu. Dieser Ansatz stellt sicher, dass die Schreibzyklen auf alle Speicherzellen verteilt werden und kein Block mehr als andere beschrieben wird, wodurch die Wahrscheinlichkeit eines vorzeitigen Ausfalls von Blöcken verringert wird.
Um Operationen wie Wear Leveling und Garbage Collection zu unterstützen, stellen die Hersteller mehr Flash-Kapazität auf einem Laufwerk zur Verfügung als nötig (Overprovisioning). Auf diese Weise verfügt ein Laufwerk über einen Bestand an Zellen, um Schreibvorgänge zu unterstützen, die Laufwerksleistung zu verbessern und Zellen zu ersetzen, die sich abnutzen.