foofoobar schrieb:
Wie das Blockdevice die Persistenz herstellt ist nicht definiert.
Richtig, wobei dies sowieso nicht gesetzlich geregelt ist.
foofoobar schrieb:
Und bei einem RAID interessiert die Persistenz des RAID Device und nicht der einzelnen Platten.
Ein RAID ist ja aus Sicht des Controller auch ein Volumen dessen Inhalt konsistent sein muss. Aber die Frage ist doch, wie der RAID Controller das macht. Er hat seinen gepufferten DRAM Cache dessen Inhalt erhalten bleibt, sollte es plötzlich einen Spannungsabfall geben, aber dazu muss er beim Schreiben wissen, was wirklich auf der Platten geschrieben wurde, damit er es aus seinem eigenen DRAM Cache entfernen kann. Er "deaktiviert" also den Schreibcache der Platten, z.B. indem er hinter jedem Schreibbefehl ein fsync schickt, dies soll die Platte ja erst beantworten wenn die Daten persistent geschrieben sind.
Deaktiviere aber mal bei einer Consumer SSD den Schreibcache in Windows und benche sie mit dem
AS-SSD Benchmark, wenn sie kein sync-Faking macht, dann brechen die Schreibraten, vor allem bei 4k, massiv von teils über 100MB/s auf wenige MB/s ein, denn die NAND Pages haben i.d.R. 16kB und müssen auf einmal beschrieben werden, wenn nun nur 4k im internen SRAM Schreibcache des Controllers stehen und er muss diese ins NAND schreiben, dann ist das saulahm und erhöht die WA gewaltig, denn normalerweise wird er damit warten bis genug Daten im Schreibcache stehen um eine ganze Page schreiben zu können. Hat die SSD aber selbst eine Full-power-loss protection (oder schummelt einfach, wie die Sandforce), dann beantwortet sie ein fsync sofort, durch die eigenen Stützkondensatoren kann sie die Daten aus ihrem Schreibcache ja immer noch in die NANDs schreiben, die Daten in ihrem Schreibcache sind also persistent wie die im DRAM Cache des RAID Controllers. Aber so eine Full-power-loss protection haben nur ordentliche Enterprise SSD, die Consumer SSDs wie z.B. die Crucial M500 bis MX300 haben nur Client Lösung mit Kondensatoren mit geringer Kapazität, nur genug für die data-at-rest, wie z.B. die letzten Änderungen Mappingtabelle (was aber bei denen auch nicht immer geklappt hat).
Bei so einer SSD mit Full-power-loss protection sieht man bei Deaktiviertem Schreibcache auch keinen Performnaceunterschied, da die ihren Schreibcache gar nicht deaktiviert und jedes fsync sofort beantwortet, auch wenn die Daten noch gar nicht im NAND stehen, aber dies ist ja in Ordnung, sofern die Kondensatoren wirklich vorhanden und die Daten damit geschützt sind. Die bringen dann an solchen Hardware RAID Controllern auch die volle Performance, aber die normalen Consumer SSDs werden saulahm, sofern man dem RAID Controller nicht abgewöhnen kann die Schreibcaches der SSDs zu deaktivieren, was dann aber bei einem unerwarteten Spannungsabfall das Risiko von Datenverlust in deren Schreibcaches bedeutet und daher geht es i.d.R. nur, wenn der RAID Controller eben keinen eigenen, mit BBU abgesicherten DRAM Cache hat. Dies ist ja auch konsequent, denn wenn der RAID Controller selbst Persistenz verspricht, er quittiert ja ein fsync vom Host sofort, wenn die Daten in einem DRAM Cache stehen und dieser per BBU gesichert ist, dann kann er ja nicht zulassen, dass sie womöglich im Schreibcache der Platte verloren gehen, nachdem die Platte selbst ihm das fsync quittiert und damit selbst die Persistenz der Daten bestätigt hat.
foofoobar schrieb:
allerdings darf dann der Kontroller mit dem Akku und RAM nicht kaputt gehen.
Das ist klar, aber zumindest den Zustand des Akkus überwachen die Controller normalerweise ja.