Heb hier sinds tijden al Linux werkend op een Intel Postville SSD (Solid State Disk) van 40 Gb. Er wordt vaak gezegt dat het niet raadzaam is, om een swap of een journaling filesystem op een SSD te hebben. Echter, het tegendeel is waar, ondanks alle -paniek- stukjes die je tegenkomt. We hebben een aantal tests gedaan, en een aantal berekeningen daarop los gelaten met een uitkomst ..
'Dingen' waarvan men zegt dat je ze nooit zou mogen doen op een SSD, om de wearleveling te waarborgen:
- Kies nooit een journaling file system op een SSD partitie
- Stel nooit een swap partitie in op een SSD
- Bewerk je /etc/fstab om een SSD met een Linux partitie te mounten als 'noatime'
- Geen loggende service op een SSD, zoals bijvoorbeeld de error en messages files op een SSD's
Is dit nou echt allmaal waar, of is dat gewoon keer op keer gecopieerd van elkaar, zodat men er uiteindelijk erin is gaan geloven? Maar als eerste, waar komt die veronderstelling vandaan? SSD's hebben een gelimiteerde write (erase) cycli. En dat is weer afhankelijk van het type geheugencells wat er gebruikt is. Bijvoorbeeld MLC (Multi Level Cell) zal falen na 10.000 write of erase cycle's en SLC (Single Level Cell) pas na 100.000 cycle's. Terwijl 'high endurance cells' een nog hoger uithoudingsvermogen hebben, dat kan oplopen van 1 tot 5 miljoen write of erase cycles. Speciale filesystems (b.v. jffs, jffs2, logfs voor Linux) of speciale firmware designs kunnen de write cycles spreiden over het gehele apparaat (wear leveling) in plaats de bestanden op bepaalde plaatsen te beschrijven, zo .. Er schijnt dus een probleem te zijn, maar wat houdt dat nou daadwerkelijk in de praktijk in?
De experts van storagesearch.com hebben een artikel geschreven over SSD's: "Mythes and Legends – 'Write endurance", waarin dieper erop in wordt gegaan in deze materie. En in dit artikel komen ze tot een simpel rekensommetje:
- Een enkele SSD, 2 miljoen cycle's, 80 Mb/s schrijf snelheid (praktisch de snelste SSD's die te verkrijgen zijn) van 64Gb
- Er van uit gaande dat je een perfecte wearleveling hebt, wat inhoudt dat je de disk precies 2 miljoen keer beschrijft, om tot de 'write endurance limit' te komen
- 2 miljoen (write endurance) maal 64Gb (capaciteit) gedeeld door 80Mb/s geeft je een aardig idee van de tijdspanne in seconden waarin een SSD de geest zal gaan geven
- Op zich zijn het aantal seconden leuk om te weten, waarin een SSD mee gaat, echter als we er een goede berekening erop los laten, en het vertalen naar jaren, dan kom je uit op een resultaat van maar liefst:
51 jaar waarna je SSD de geest zal gaan geven!
Oke, leuk allemaal .. Maar wat houdt dat nou in voor het huis tuin en keuken gebruik in mijn computer?
Laten we om het simpel te houden de benchmarks nemen van een EEEPC, die haalt maximaal 50 Mb/s aan schrijf actie's in een sequential writes. Wat overigens niet overeenkomt met het write profiel van onze atime, swap, journaling filesystems. Dat zijn doorgaans 4k blocks die uit komen op 2 Mb/s. We gaan hier ook voor het gemak ervan uit, van een 2 miljoen cycles op een 16 Gb SSD's. Als we dan aan het rekenen slaan met 50 Mb/s komen we uit op 20 jaar, en met 2 Mb/s komen we zelfs uit op 519 jaar. Zelfs als de de write cycle's reduceren tot 100.000 met schrijf acties van 2 Mb/s dan komen we nog uit op een tijd van 26 jaar!
En dit is gewoon na een normale installatie, zonder extra aanpassingen op een EXT3 filesystem. Zelfs EXT3 schrijft zijn journal weg elke 30 seconden als er tenminste geen andere date geschreven behoeft te worden.
Closeup van wat belangrijke dingen:
- Gebruik nooit een een journaling filesystem op een SSD partiei .. Flauwekul, je kunt rustig EXT3 of EXT4 gebruiken op een SSD
- Nooit een swap partitie op een SSD .. Ook flauwekul, als je genoeg ruimte erop hebt, op je SSD kun je rustig een swap partitie erop gebruiken. Een swap partitie wordt alleen gebruikt, als je niet beschikt over voldoende geheugen in je computer.
- Je /etc/fstab bewerken, zodat je SSD partitie gemount wordt als: "noatime": Kan een goede optie zijn, als je er merkbare performance ervoor krijgt, en als je programma's ermee kunnen omgaan
- Geen log files op een SSD partitie .. Jaja .. Zolang je geen zeer drukke email server of iets dergelijks gebruikt, kun je rustig je log files op een SSD kwijt ..
Nog even wat verdere informatie over een paar gebruikte termen in dit stukje:
- Wear leveling: het gelijkmatig spreiden van schrijfacties over geheugencellen van de hele ssd – dit voorkomt slijtage van de flash-cellen waardoor het langer zal duren voordat er cellen beginnen uit te vallen
- MLC / SLC: Multi Level Cell of Single Level Cell – de laatste gaat langer mee, is in theorie sneller maar wel duurder waardoor op mlc-gebaseerde ssd’s inmiddels de overhand krijgen, vooral voor consumenten. Wikipedia: MLC vs. SLC. Een MLC doet zo'n 10.000 writes mee, terwijl een SLC toch al snel 100.000 writes meegaat, voor de cell versleten is.
'Dingen' waarvan men zegt dat je ze nooit zou mogen doen op een SSD, om de wearleveling te waarborgen:
- Kies nooit een journaling file system op een SSD partitie
- Stel nooit een swap partitie in op een SSD
- Bewerk je /etc/fstab om een SSD met een Linux partitie te mounten als 'noatime'
- Geen loggende service op een SSD, zoals bijvoorbeeld de error en messages files op een SSD's
Is dit nou echt allmaal waar, of is dat gewoon keer op keer gecopieerd van elkaar, zodat men er uiteindelijk erin is gaan geloven? Maar als eerste, waar komt die veronderstelling vandaan? SSD's hebben een gelimiteerde write (erase) cycli. En dat is weer afhankelijk van het type geheugencells wat er gebruikt is. Bijvoorbeeld MLC (Multi Level Cell) zal falen na 10.000 write of erase cycle's en SLC (Single Level Cell) pas na 100.000 cycle's. Terwijl 'high endurance cells' een nog hoger uithoudingsvermogen hebben, dat kan oplopen van 1 tot 5 miljoen write of erase cycles. Speciale filesystems (b.v. jffs, jffs2, logfs voor Linux) of speciale firmware designs kunnen de write cycles spreiden over het gehele apparaat (wear leveling) in plaats de bestanden op bepaalde plaatsen te beschrijven, zo .. Er schijnt dus een probleem te zijn, maar wat houdt dat nou daadwerkelijk in de praktijk in?
De experts van storagesearch.com hebben een artikel geschreven over SSD's: "Mythes and Legends – 'Write endurance", waarin dieper erop in wordt gegaan in deze materie. En in dit artikel komen ze tot een simpel rekensommetje:
- Een enkele SSD, 2 miljoen cycle's, 80 Mb/s schrijf snelheid (praktisch de snelste SSD's die te verkrijgen zijn) van 64Gb
- Er van uit gaande dat je een perfecte wearleveling hebt, wat inhoudt dat je de disk precies 2 miljoen keer beschrijft, om tot de 'write endurance limit' te komen
- 2 miljoen (write endurance) maal 64Gb (capaciteit) gedeeld door 80Mb/s geeft je een aardig idee van de tijdspanne in seconden waarin een SSD de geest zal gaan geven
- Op zich zijn het aantal seconden leuk om te weten, waarin een SSD mee gaat, echter als we er een goede berekening erop los laten, en het vertalen naar jaren, dan kom je uit op een resultaat van maar liefst:
51 jaar waarna je SSD de geest zal gaan geven!
Oke, leuk allemaal .. Maar wat houdt dat nou in voor het huis tuin en keuken gebruik in mijn computer?
Laten we om het simpel te houden de benchmarks nemen van een EEEPC, die haalt maximaal 50 Mb/s aan schrijf actie's in een sequential writes. Wat overigens niet overeenkomt met het write profiel van onze atime, swap, journaling filesystems. Dat zijn doorgaans 4k blocks die uit komen op 2 Mb/s. We gaan hier ook voor het gemak ervan uit, van een 2 miljoen cycles op een 16 Gb SSD's. Als we dan aan het rekenen slaan met 50 Mb/s komen we uit op 20 jaar, en met 2 Mb/s komen we zelfs uit op 519 jaar. Zelfs als de de write cycle's reduceren tot 100.000 met schrijf acties van 2 Mb/s dan komen we nog uit op een tijd van 26 jaar!
En dit is gewoon na een normale installatie, zonder extra aanpassingen op een EXT3 filesystem. Zelfs EXT3 schrijft zijn journal weg elke 30 seconden als er tenminste geen andere date geschreven behoeft te worden.
Closeup van wat belangrijke dingen:
- Gebruik nooit een een journaling filesystem op een SSD partiei .. Flauwekul, je kunt rustig EXT3 of EXT4 gebruiken op een SSD
- Nooit een swap partitie op een SSD .. Ook flauwekul, als je genoeg ruimte erop hebt, op je SSD kun je rustig een swap partitie erop gebruiken. Een swap partitie wordt alleen gebruikt, als je niet beschikt over voldoende geheugen in je computer.
- Je /etc/fstab bewerken, zodat je SSD partitie gemount wordt als: "noatime": Kan een goede optie zijn, als je er merkbare performance ervoor krijgt, en als je programma's ermee kunnen omgaan
- Geen log files op een SSD partitie .. Jaja .. Zolang je geen zeer drukke email server of iets dergelijks gebruikt, kun je rustig je log files op een SSD kwijt ..
Nog even wat verdere informatie over een paar gebruikte termen in dit stukje:
- Wear leveling: het gelijkmatig spreiden van schrijfacties over geheugencellen van de hele ssd – dit voorkomt slijtage van de flash-cellen waardoor het langer zal duren voordat er cellen beginnen uit te vallen
- MLC / SLC: Multi Level Cell of Single Level Cell – de laatste gaat langer mee, is in theorie sneller maar wel duurder waardoor op mlc-gebaseerde ssd’s inmiddels de overhand krijgen, vooral voor consumenten. Wikipedia: MLC vs. SLC. Een MLC doet zo'n 10.000 writes mee, terwijl een SLC toch al snel 100.000 writes meegaat, voor de cell versleten is.