Beste tweakers,
Ik ben trots eigenaar van de Raspberry Pi, en andere linux hardware. Naast dat ze allemaal linux draaien hebben ze nog een gemeenschappelijke deler: de kernel staat op NAND-flash.
Zoals julie weten gaat NAND flash langzaam maar zeker kapot. Aangezien fabrikanten hun gegevens / tests e.d. geheim houden / zeer beperkt geven / weinig van klopt is de levensduur slecht te voorspellen. En daarom ben ik er een "onderzoekje" naar gestart. Deel hier al je kennis over NAND! Zodat wij nog langer kunnen genieten van onze XBMC machine's / Automatische broodroosters / Licht bediening / gazonbesproeiing installaties.
Zoals eerder vermeld gaat NAND flash langzaam maar zeker stuk. Afhankelijk van het type is dit:
-SLC: 1 bit per cel, gemiddelde max. read/write: 10^5
-MLC: Meerdere bits per cel, gemiddelde max. read/write: 10^4
Er zijn verschillende truuks om je flash langer goed te houden. Het begint bij de aanschaf: een grotere, SLC kaart van een betrouwbaar merk(b.v. Sandisk) is altijd aan te raden. het juiste Filesystem is de duidelijke stap 2: Journaling filesystems zijn not done. De laatste ontwikkelingen komen van Samsung: f2fs. Dit komt helaas pas terug in linux 3.8(maar voor de echte tweaker is dat natuurlijk geen probleem).
Waarom (!meestal) geen Chinese ebay spullen?
Om je kaart zo lang mogelijk heel te houden, wil je alle cellen evenveel belasten. In de "duurdere" NAND kaarten zit een stukje MMU verstopt. data wordt contstand verplaatst, zodat alle cellen evenveel slijten. Kapotte delen worden niet meer gebruikt(Het is op cel niveau zeer goed te voorspellen wanneer de cel kapot gaat!). Hierdoor gaat data niet verloren, en blijven onze systemen werken. Niet alle kaarten hebben dit! Vooral de goedkoopste kaarten falen hierin. De betere merken hebben dit meestal wel: helaas worden algoritmes e.d. angstvallig stilhehouden(en daar wordt nou net leuk...)
Waarom een (te) grote kaart kopen?
Algorithmes in de SD-kaart verplaatsen contsand de data om zo de belasting van de cellen gelijk te houden. Een grotere kaart betekend meer mogelijkheden met verplaatsing. Hierdoor zal je kaart langer mee gaan.
Wanneer je een eigen log-programma (zoals het bijhouden van je aquariumtemperatuur) schrijft loont het om eerst je data in je RAM te verzamelen i.p.v. contstand je log op je SD-Card te schrijven. Elke schrijfactie wordt namelijk een compleet blok belast(2 of 4 Kb), en dit verhoogd de slijtage ontzettend. Een simpel te realiseren- maar zeer bruikbare tip!
tests
Natuurlijk wil je weten hoe zwaar je kaart belast wordt. Met iostat krijg je een log waar al deze informatie in terug te vinden is. het volgende commando geeft elke seconde een update:
iostat -x -d -k sda 1
De eerste meetwaarde is ovrigens onzin! Houd hier rekening mee wanneer je bijv. een shell script wilt schrijven die iostat zonder interval gebruikt. Dit geeft foutieve waardes! Ik kom met een Idle systeem op gemiddeld 8 Kb/s (heb hiervoor een progje geschreven. Mocht er intresse zijn kan ik hem eventueel posten).
Met dit gegeven is de levensduur van de kaart (zeer grof) te berekenen. de volgende formule kan hiervoor gebruikt worden:
levensduur(dagen) = (A*L / 3600 RW) / T
A: grootte van vrije ruimte SD-kaart (in Kb)
L: levensduur cel flash (meestal 10^4 of 10^5)
RW: Read + Write acties per seconde (in Kb)
T: aantal uur aan per dag
Het probleem met deze formule:
1. Schrijven is slechter voor NAND flash dan lezen, hier wordt geen rekening mee gehouden
2. Het opstarten wordt niet meegerekend (en ik heb nog geen idee om dit uit te zoeken)
3. Levensduur van cellen is behoorlijk grof.
4. er wordt alleen rekening gehouden met vrije cellen(spare): de formule geeft eigelijk weer wanneer de spare cellen op zijn en houd geen rekening met de grootte van de data
Dus...
Zoals julie kunnen lezen heb ik niet stil gezeten. Ik ben vooral benieuwd naar:
1. Wat zijn julie ervaringen (Merk, levensduur, omstandigheden)
2. Welke tips hebben julie voor mij?
3. Wat is de verwachte levensduur van julie kaarten? (volgens de eerder genoemde formule)
4. Hebben julie betere manieren / verbeteringen voor mij(uitbereiding formule, teststrategieën, mischien al tests gedaan)?
Overige bronnen
http://www.google.nl/url?...bv.44770516,d.dmQ&cad=rja : zeer intresante PDF waar verschillende kaarten worden getest
http://serverfault.com/qu...r-hard-disk-load-on-linux : over iostat.
Thanks!
TunderNerd
Ik ben trots eigenaar van de Raspberry Pi, en andere linux hardware. Naast dat ze allemaal linux draaien hebben ze nog een gemeenschappelijke deler: de kernel staat op NAND-flash.
Zoals julie weten gaat NAND flash langzaam maar zeker kapot. Aangezien fabrikanten hun gegevens / tests e.d. geheim houden / zeer beperkt geven / weinig van klopt is de levensduur slecht te voorspellen. En daarom ben ik er een "onderzoekje" naar gestart. Deel hier al je kennis over NAND! Zodat wij nog langer kunnen genieten van onze XBMC machine's / Automatische broodroosters / Licht bediening / gazonbesproeiing installaties.
Zoals eerder vermeld gaat NAND flash langzaam maar zeker stuk. Afhankelijk van het type is dit:
-SLC: 1 bit per cel, gemiddelde max. read/write: 10^5
-MLC: Meerdere bits per cel, gemiddelde max. read/write: 10^4
Er zijn verschillende truuks om je flash langer goed te houden. Het begint bij de aanschaf: een grotere, SLC kaart van een betrouwbaar merk(b.v. Sandisk) is altijd aan te raden. het juiste Filesystem is de duidelijke stap 2: Journaling filesystems zijn not done. De laatste ontwikkelingen komen van Samsung: f2fs. Dit komt helaas pas terug in linux 3.8(maar voor de echte tweaker is dat natuurlijk geen probleem).
Waarom (!meestal) geen Chinese ebay spullen?
Om je kaart zo lang mogelijk heel te houden, wil je alle cellen evenveel belasten. In de "duurdere" NAND kaarten zit een stukje MMU verstopt. data wordt contstand verplaatst, zodat alle cellen evenveel slijten. Kapotte delen worden niet meer gebruikt(Het is op cel niveau zeer goed te voorspellen wanneer de cel kapot gaat!). Hierdoor gaat data niet verloren, en blijven onze systemen werken. Niet alle kaarten hebben dit! Vooral de goedkoopste kaarten falen hierin. De betere merken hebben dit meestal wel: helaas worden algoritmes e.d. angstvallig stilhehouden(en daar wordt nou net leuk...)
Waarom een (te) grote kaart kopen?
Algorithmes in de SD-kaart verplaatsen contsand de data om zo de belasting van de cellen gelijk te houden. Een grotere kaart betekend meer mogelijkheden met verplaatsing. Hierdoor zal je kaart langer mee gaan.
Wanneer je een eigen log-programma (zoals het bijhouden van je aquariumtemperatuur) schrijft loont het om eerst je data in je RAM te verzamelen i.p.v. contstand je log op je SD-Card te schrijven. Elke schrijfactie wordt namelijk een compleet blok belast(2 of 4 Kb), en dit verhoogd de slijtage ontzettend. Een simpel te realiseren- maar zeer bruikbare tip!
tests
Natuurlijk wil je weten hoe zwaar je kaart belast wordt. Met iostat krijg je een log waar al deze informatie in terug te vinden is. het volgende commando geeft elke seconde een update:
iostat -x -d -k sda 1
De eerste meetwaarde is ovrigens onzin! Houd hier rekening mee wanneer je bijv. een shell script wilt schrijven die iostat zonder interval gebruikt. Dit geeft foutieve waardes! Ik kom met een Idle systeem op gemiddeld 8 Kb/s (heb hiervoor een progje geschreven. Mocht er intresse zijn kan ik hem eventueel posten).
Met dit gegeven is de levensduur van de kaart (zeer grof) te berekenen. de volgende formule kan hiervoor gebruikt worden:
levensduur(dagen) = (A*L / 3600 RW) / T
A: grootte van vrije ruimte SD-kaart (in Kb)
L: levensduur cel flash (meestal 10^4 of 10^5)
RW: Read + Write acties per seconde (in Kb)
T: aantal uur aan per dag
Het probleem met deze formule:
1. Schrijven is slechter voor NAND flash dan lezen, hier wordt geen rekening mee gehouden
2. Het opstarten wordt niet meegerekend (en ik heb nog geen idee om dit uit te zoeken)
3. Levensduur van cellen is behoorlijk grof.
4. er wordt alleen rekening gehouden met vrije cellen(spare): de formule geeft eigelijk weer wanneer de spare cellen op zijn en houd geen rekening met de grootte van de data
Dus...
Zoals julie kunnen lezen heb ik niet stil gezeten. Ik ben vooral benieuwd naar:
1. Wat zijn julie ervaringen (Merk, levensduur, omstandigheden)
2. Welke tips hebben julie voor mij?
3. Wat is de verwachte levensduur van julie kaarten? (volgens de eerder genoemde formule)
4. Hebben julie betere manieren / verbeteringen voor mij(uitbereiding formule, teststrategieën, mischien al tests gedaan)?
Overige bronnen
http://www.google.nl/url?...bv.44770516,d.dmQ&cad=rja : zeer intresante PDF waar verschillende kaarten worden getest
http://serverfault.com/qu...r-hard-disk-load-on-linux : over iostat.
Thanks!
TunderNerd