SSD-Cache-Problem: Trotz Flush droht Datenverlust bei Stromausfall
Auf Basis eigener Versuche berichtet der Entwickler Russ Bishop, dass es bei einigen NVMe-SSDs trotz angeblich erfolgter Pufferspeicher-Leerung (Cache Flush) zu Datenverlusten kommen kann. Bei zwei von vier getesteten NVMe-SSDs verschiedener Hersteller sei dies aufgetreten. Bishop will weitere prüfen.
Gesicherte Cache-Daten gehen verloren
Auf Twitter schreibt Bishop, der als Programmierer bei Apple tätig ist: „Ich habe eine zufällige Auswahl von vier NVMe-SSDs von vier Anbietern getestet. Die Hälfte verliert Flush-Daten bei Stromausfall“. Gemeint ist, dass die Daten nach der Leerung des Cache (Flush) verloren gingen, wenn sie eigentlich bereits sicher auf die Speicherzellen des nicht flüchtigen NAND-Flash übertragen sein sollten.
Daten werden in der Regel nur kurz im Cache zwischengespeichert und schnellstmöglich auf den Festspeicher übertragen. Tritt das von Bishop beobachtete Verhalten allerdings genau in diesem Moment auf, ist Datenverlust die Folge.
Dass die Daten im Cache bei Stromausfall verschwinden, ist normal und dem flüchtigen DRAM-Cache bei SSDs (alternativ HMB im RAM bei SSDs ohne DRAM) geschuldet und lässt sich lediglich durch Stützkondensatoren verhindern, wie sie aber nur bei einigen Enterprise-SSDs vorhanden sind.
Bishop hat allerdings seine Versuche mit herkömmlichen Client-SSDs für Verbraucher ohne solche Sicherungsmaßnahmen durchgeführt. Der „Stromausfall“ wurde nach der Meldung des erfolgreichen Flush durch das Ziehen des Stromkabels simuliert.
Fun story: I tested a random selection of four NVMe SSDs from four vendors. Half lose FLUSH’d data on power loss. That is the flush went to the drive, confirmed, success reported all the way back to userspace. Then I manually yanked the cable. Boom, data gone.
— Russ Bishop (@xenadu02) February 21, 2022
Zwei von vier SSDs verloren Daten
Die beiden NVMe-SSDs, bei denen Daten verloren gingen, waren eine SK Hynix Gold P31 mit 2 TB und eine Sabrent Rocket mit 512 GB. Bei einer Samsung 970 Evo Plus mit 2 TB und einer Western Digital Red SN700 mit 1 TB seien die geschriebenen Daten wiederum erhalten geblieben.
| SSD-Modell | Daten nach Flush behalten |
|---|---|
| SK Hynix Gold P31 2TB (SHGP31-2000GM-2, FW 31060C20) |
– |
| Sabrent Rocket 512 GB (Phison PH-SBT-RKT-303 Controller) |
– |
| Samsung 970 Evo Plus 2 TB (MZ-V7S2T0, 2021.10) |
✓ |
| WD Red SN700 1 TB (WDS100T1R0C-68BDK0, 04Sept2021) |
✓ |
| Crucial P5 Plus 1 TB (CT1000P5PSSD8, FW P7CR402) |
✓ |
| Kingston SNVS 250 GB (012.A005) |
✓ |
| Seagate Firecuda 530 1 TB (ZP1000GM30013, FW SU6SM001) |
✓ |
| Intel 670p 1 TB (SSDPEKNU010TZ, FW 002C) |
✓ |
| Crucial P2 250 GB (CT250P2SSD8, FW P2CR046) |
✓ |
| Samsung 980 250 GB (MZ-V8V250, 2021/11/07) |
✓ |
| WD Black SN750 1 TB (WDS100T1B0E, 09Jan2022) |
✓ |
| WD Green SN350 240 GB (WDS240G20C, 02Aug2021) |
✓ |
Bishop will weitere SSDs prüfen
Russ Bishop hat nach eigenen Angaben das Testverfahren „voll automatisiert“ und will folgende weitere SSDs auf die beschriebene Problematik hin überprüfen:
Tomorrow I'll have results for:
— Russ Bishop (@xenadu02) February 23, 2022
Intel 670p
Samsung 980
WD Black SN750
WD Green SN350
Kingston NV1
Seagate Firecuda 530
Crucial P2
Crucial P5 Plus
Unter den genannten Modellen sind auch SSDs ohne dedizierten DRAM-Cache wie die Samsung 980 (Test) oder die Kingston NV1. Diese können über die NVMe-Funktion Host Memory Buffer (HMB) lediglich einen kleinen Teil (im zweistelligen Megabyte-Bereich) des System-RAMs als Puffer benutzen.
Der Entwickler hat wie versprochen acht weitere SSDs auf die Problematik hin geprüft. Alle bestanden demnach den Test und behielten die Daten. Die Modelle wurden der obigen Tabelle hinzugefügt. Damit bleiben die SK Hynix Gold P31 und die Sabrent Rocket die einzigen Modelle mit Datenverlust, der beim erneuten Test wieder auftrat.
To double-check my work I swapped drives around between enclosures. Fails still failed, Passes still passed. Swapped ports and cables too. Also re-tested previous failing drives after script changes and results are the same.
— Russ Bishop (@xenadu02) February 24, 2022