Introductie
SSDs worden steeds meer gebruikt als kritische schakel in data-opslagsystemen zoals ZFS (bijvoorbeeld als L2ARC en ZIL). SSDs worden daar als read- en write-cache gebruikt om communicatie met een grote array harde schijven te versnellen. Er is echter een vervelend probleem bij het gebruik van SSDs als write cache: wanneer je naar een SSD schrijft, wordt in eerste instantie de data in een klein stukje SDRAM en niet meteen naar het NAND flashgeheugen geschreven. Dit wordt gedaan zodat de SSD-controller niet voor elk wissewasje de geheugencellen op een SSD hoeft te beschrijven - schrijfacties naar het flashgeheugen kunnen gebundeld worden zodat de SSD minder snel slijt. Ook verbetert dit de prestaties van de SSD.Maar stel nu eens dat de stroom opeens uitvalt en je was net bezig naar een SSD te schrijven. Zoals je wellicht weet is SDRAM vluchtig, dus alle data die wel naar het RAM is geschreven maar nog niet op de flash-geheugencellen staat gaat direct verloren. Dit is een probleem specifiek van SSDs en iets dat momenteel vooral door veel ZFS-gebruikers als reden wordt gezien om geen SSD als ZIL te gebruiken. Dat wil niet zeggen dat het een ZFS-specifiek probleem is, het geldt voor elke SSD waarnaar geschreven wordt. Windows staat default zelfs zo ingesteld dat het de write cache van een IO device optimaal benut, pas als je expliciet aangeeft dat je wil dat Windows synchroon schrijft, gebeurt dit.
Er zijn SSDs die dit probleem oplossen door een grote supercondensator of een kleine batterij in de SSD te bouwen. Hiermee kan, zodra onverwachts de stroom uitvalt, de SSD nog even snel alle data uit het SDRAM naar flash schrijven. Het probleem hiermee is: de SSDs die deze feature hebben zijn moeilijker te krijgen en vooral veel duurder dan de concurrentie. Het beperkt je ook flink in de keuze van SSDs.
Meer leesmateriaal
http://hardforum.com/showthread.php?t=1714596http://www.xtremesystems....and-power-loss-protection
http://www.brighttalk.com/webcast/663/41701
http://cseweb.ucsd.edu/us...apers/DAC2011PowerCut.pdf
Mijn oplossing: Mux’ SSD Backup battery

Ieder puntje op de zwarte achtergrond = 5mm
De oplossing? Een externe batterij natuurlijk! Ik heb een printplaat ontworpen met daarop een batterij die, zodra de stroom naar een SSD uitvalt, wakker wordt en de stroom naar de SSD hervat gedurende ongeveer 60 seconden. Dit geeft de SSD meer dan genoeg tijd om door te hebben dat hij als de wiedeweerga al zijn data uit SDRAM naar NAND moet schrijven en veilig af te sluiten. Dit printplaatje zit verwerkt in een SATA power-kabel en is compatible met alle 2,5” SSDs. Het ontwerp is af en kost ongeveer 15 à 20 euro incl. BTW.
In theorie moet dit perfect werken. Wanneer je computer onverwacht uitvalt maar de SSD blijft werken (door deze batterijmodule) ziet de SSD dit als het wegvallen van de fysieke layer (PHY layer) van SATA. In de SATA specificatie staat dat de SSD dan over moet gaan naar het proberen te hervatten van een signaal, of als dat niet lukt moet hij in een ‘freeze’ status gaan die enkel wordt doorbroken door een harde reset. Deze modus houdt impliciet in dat ook alle gebruikersdata naar NAND wordt geflusht. Echter, en dit is de grote ‘maar’, ik weet dit niet 100% zeker.
Dit wil ik testen, en daar heb ik jullie hulp bij nodig.
Testopstelling
Net als bij mijn mSATA-SATA-printplaat [link] is het plan om 10 prototypes te bouwen. De mensen die deze prototypes ontvangen moeten vervolgens een aantal, nog niet nader gespecificeerde, tests doen met de printplaat om te zien of en hoe goed hij werkt. Dit is hoe het ongeveer werkt:Test 1: Schrijven naar een SSD zonder supercap, zonder battery backup module en plots de stroom van de SSD afhalen. Dit zou in veel gevallen moeten leiden tot corruptie of dataverlies
Test 2: Zelfde SSD, nog steeds zonder battery backup, en nu tijdens een write de datakabel eruit trekken. Dit hoort géén corruptie of dataverlies te veroorzaken.
Test 3: Zelfde test, maar nu mét battery backup. Tijdens een schrijfactie de stroom van het gehele systeem halen. Dit zou géén corruptie of dataverlies moeten veroorzaken.
Als dit werkt hebben we met elkaar iets prachtigs gedaan.
Echter, om dit afdoende te testen hebben we een hele grote hoeveelheid testdata nodig. Veel verschillende SSDs, mensen die bereid zijn hun computer (of iig de SSD) meerdere malen achter elkaar zomaar uit te gooien en mensen die tijd hebben om dit soort fratsen te doen. Daarvoor is dit topic!
Hoe kun je meedoen?
Als je mee wil doen aan dit project kun je een prototype kopen voor €15 incl. BTW en verzendkosten. Dit is je eigendom, het is in principe alsof je bij een webshop koopt (recht op deugdelijk product, support, etc.). Ik hoef hem dus niet terug (behalve als hij stukgaat, dan wil ik graag weten waaróm hij stuk is gegaan).Dit is voor mij net kostendekkend. Het is niet mijn bedoeling om op dit project te verdienen, maar ik wil eigenlijk ook geen geld erop verliezen. Voorwaarde voor aankoop is wel dat je meehelpt met het verzamelen van testdata. Het zou daarbij leuk zijn dat we zoveel mogelijk verschillende hardware en filesystems kunnen testen. Dus bijvoorbeeld:
- Windows
- NTFS
- ReFS
- Linux
- Btrfs
- Ext2/3/4
- XFS
- FreeBSD
- ZFS
- UFS
- Solaris (ZFS)
- ESXi (VMFS) Hoewel dit een hele lastige is, maar zou wel ontzettend gaaf zijn!
- Intel SSD 320
- OCZ Vertex 2 Pro
- OCZ Vertex 3 Pro
Resultaten
[project is nog niet van start gegaan]Disclaimer
Hoewel het ontwijkend klinkt, moeten we natuurlijk een slag om de arm houden over de bewering “Dit zorgt ervoor dat je syteem tegen corruptie bestand is”. Waarom is dat? Heel simpel, niet alle vendors houden zich aan de standaarden, in zowel de SATA als in de SGPIO (aanverwant) staat dat er bepaalde acties moeten volgen op problemen (zoals een PHY probleem), en wat er dan moet gebeuren. Hoewel de tijd niet in alle gevallen specifiek vermeld staat, wil dat natuurlijk wel zeggen dat je device het in een afzienbare tijd moet doen. Aangezien de target tijd om de SSD van spanning voorzien op het moment van schrijven 60 seconden is, gaan we er redelijkerwijs van uit dat alle SSD’s dan tijd genoeg hebben om hun dirty pages weg te schrijven.Mocht een SSD zich absoluut niet aan deze standaard houden, en op hol slaan, of juist helemaal niets doen, kun je er nog zoveel batterij aan hangen, werken doet het niet.
Met veel dank aan FireDrunk, HyperBart en CiPHER voor hun hulp met het uitdenken van dit concept en de hulp met het opzetten en onderhouden van dit topic
Geïnteresseerde testers
- FireDrunk
- HyperBart
- BastiaanCM (misschien?)
- VorCha
- mace
- Mafketel (als het project héél snel begint)
- ItsValium (misschien?)
- Jism
- Fluppie007
- dj1981