Raspberry Pi a příběh o poškození SD karty
Nejrůznější příběhy o poškození SD karet u Raspberry Pi jsou na internetu k dispozici v hojném počtu a rozhodně jsou v komunitách příbuzných s počítačem Pi velmi časté. Je zřejmé, že při setkání Raspberry Pi s SD kartou obvykle vznikají nějaké problémy – což zní docela ironicky, protože právě SD karta je oficiálním a doporučeným prostředkem ke spoštění počítače Pi. Co to má tedy znamenat?
Začněme malou lekcí z historie. V době uvedení Raspberry Pi na trh v roce 2012 – což je již 10 let – se objevily také první problémy s ovladači řadiče SD karet. Vzhledem k širokému spektru dostupných SD karet to však dává smysl. V určitém časovém období byly opravovány a v průběhu ladění se dopad poškození snižoval a chyby s jednotlivými kartami se podařilo zahladit. Na základě toho se zrodil známý mem „poškození SD karty Pi“; kdyby však problémy skončily, skončil by i mem. Přesto nás příběhy o poškozených SD kartách trápí dodnes – jsou sice mnohem méně závažné, než byly na začátku, ale dostatečně výrazné, abyste se s nimi tu a tam setkali.
V průběhu let se rozrostla pevná a oddaná základna odpůrců SD karet Pi. Jejich požadavek byl jednoduchý – Raspberry Pi musí dostat možnost bootovat z něčeho jiného,částečně kvůli zmíněným poškozením, ale nepopiratelně také kvůli rychlosti a kapacitním/nákladovým omezením SD karet. Díky požadavkům a výzkumu komunity vznikla řada projektů, které se z neoficiálních snah a hacků postupně staly oficiálně podporovanými schopnostmi Raspberry Pi. Bootování prostřednictvím USB bylo zpočátku spíše takovým obcházením, ale nyní je možné jej povolit hned po vybalení, skříně Pi vybavené SSD se stávají takřka normou a nyní se na obzoru objevila možnost bootování z NVMe. Nový způsob, jak spustit počítač Pi, se objevuje každých několik let.
Je tedy na místě vzdát se SD karet úplně?
“Měli byste se vy osobně zbavit karet SD? Odpověď zní spíše “ne“ než “ano“.“
Pojďme si to objasnit – bootování z SSD nebo USB disku je velmi příjemná záležitost, a pokud chcete, aby byl váš Pi rychlý, svižný a spolehlivý, rozhodně to můžete vyzkoušet. Slot na karty SD zůstal, nechystá se zmizet, a nezmizí ani všechny karty SD z našich šuplíků. Měli byste se vy osobně karet SD zbavit? Odpověď bude spíše „ne“ než „ano“.
Ne každý se totiž setkává s problémy s SD kartami. SD karta je první věcí, která je k dispozici vždy, když vidíte nějaký nový skvělý projekt, a počítač Pi vybavený slotem pro SD kartu je stále základem průměrného tvůrčího vynálezu. Zastánci USB a bootování ze sítě při použití Pi jako stolního počítače uvádějí lepší latenci a snadnější správu Pi, a to jsou samy o sobě dobré důvody – ale to rozhodně neplatí pro každý projekt. SD karty zůstávají nejjednodušší a nejlevnější možností, jak spustit počítač Pi.
Bootování z SD karty se také vždy nevyhnete. Boot počítače Pi Zero z paměťové USB karty vyžaduje, abyste buď vyplýtvali jediný USB port, nebo přidali do mixu celý rozbočovač USB, což dále komplikuje nastavení, přidává otravné kabely a zvyšuje riziko poruchy. Pokud jde o přenosná a bateriově napájená zařízení postavená na Pi, SD karta je z hlediska spotřeby energie těžko překonatelná – USB flash disky nejsou známé tím, že by byly optimalizovány pro nízkou spotřebu energie, stejně jako USB rozbočovače. Toho si všimnete, když se podíváte, jak se IC USB rozbočovače může zahřát po průchodu i relativně malého množství USB paketů.
Nakonec i ti nejoddanější nadšenci do zavádění externích SSD disků možná budou chtít přidat SD kartu kvůli nezávislému dodatečnému úložišti, které přináší. Slot tu je, a pokud máte kartu k dispozici – proč ji nevyužít? Tedy pokud nenarazíte na problémy. Pojďme si je tedy projít.
Proč SD karty stále selhávájí?
Veškerou zábavu všeobecně kazí především falešné a levné SD karty. Klony karet MicroSD jsou všudypřítomné a je těžké je odlišit od legálně vyrobených karet, ale rozhodně nepodléhají stejným standardům kvality. Levné karty sice splňují „nízké standardy kvality“, ale alespoň poznáte no-name kartu pouhým pohledem. Falešné a levné karty zkrátka nejsou obvykle vhodné pro provoz celého operačního systému. Použití těchto karet způsobí, že vaše Pi bude o poznání pomalejší, ale také povede k záhadným selháním a později k celkem explicitnímu poškození. Součástí receptu na klidnou cestu za poznáním systému Pi je pořízení kvalitních SD karet z oficiálních míst, a vzhledem k tomu, že za své peníze získáte pořádnou porci úložného prostoru, už vás to ani finančně nezamrzí.
Problémy však mohou způsobit i originální karty. Hackerspace zakoupil v roce 2014 várku originálních Samsung SD karet pro Pi, avšak každá z nich nakonec skončila se stejnými příznaky – protože každé Pi používalo kartu ze stejné várky, dopadlo to tak, že infrastruktura hackerspace odumírala zařízení po zařízení, což nemálo frustrovalo všechny členy, kteří se na originální SD kartu tolik spoléhali. Koneckonců, SD karta je složité vysoce integrované zařízení, jehož řadičem je malý účelový procesor – je zde prostor pro chyby firmwaru, výrobní vady a taky starou dobrou hardwarovou náhodu.
Nastal čas vypnout SBC
“Bezpečné vypínání je samozřejmě žádoucí, na druhou stranu být laxní neznamená konec světa.“
Stejně jako většina dnešních paměťových zařízení má i SD karta zabudované dvě samostatné entity – řadič a flash paměť. Řadič bývá zaneprázdněný se správou flash paměti, kterou musí vykonat vždy, když mu přijdou nějaká data k zápisu, ale dělat ji ihned by bylo časově náročné, zdržovalo by to následné operace zápisu a možná by to bylo i neekonomické. Následně musí mít řadič SD karty malý kousek cache paměti a uchovávat seznam operací, které mají být teprve provedeny, ale ještě nebyly.
To je důvod, proč se mluví o „bezpečném vypínání počítače Pi“ alias „spuštění vypínání před odpojením napájení“ – pokud kartě SD nedáte trochu času a možná ani automatické předběžné upozornění od operačního systému, může dojít k tomu, že budou probíhat operace zápisu, které nebudou nikdy dokončeny, což bude mít za následek pocuchané úložiště při dalším zapnutí karty. Někteří zkušení inženýři tvrdí, že tento styl vypínání nakonec průměrnou kartu SD zaručeně nenávratně zničí, a mi se s nimi v tomto ohledu nebudeme hádat.
Lze se však na SD kartu spolehnout, i když čas od času dochází k nebezpečným vypnutím? Zkušenost říká „ano“. Přesně na tento problém bylo testováno jisté komerční zařízení založené na Pi, kdy sestava během zápisu na SD kartu vypínala Pi. Sestava byla provozována několik dní, přičemž software souběžně procházel všemi testy. Tato kombinace hardwaru byla dodávána úspěšně dlouhodobě. U ZeroPhonu vedla nekonvenční správa napájení bez softwarového protějšku, který by kompenzoval její nedostatky, k pravidelným (někdy i cyklickým) výpadkům napájení, a to pár dní po sobě v průběhu několika let. Karty SD, které byly takto používány, přežívaly dlouhodobě docela dobře a žijí dodnes, až na občasný neuspokojivý fsck.
Závěr je, že bezpečné vypínání je sice žádoucí, ale laxnost neznamená konec světa, a tuto zkušenost potvrdí nejeden koníčkář, který ze svého Pi neopatrně vytrhl napájecí kabel. Pokud však váš software provádí značné množství zápisů na stejnou kartu SD, ze které spouštíte operační systém, možná byste jej chtěli odložit někam jinam.
Nešetřete na zdroji napájení
Je třeba zmínit také poměrně neobvyklého podezřelého, a tím je kvalita napájecího zdroje. Někdy se o ní mluví jen tak mimochodem, je to nedoceněný důvod, ale u několikaletého hledání příčiny poškození jednoho Pi v hackerspace se zdroj ukázal jako viník. Dotyčné Pi bylo jediné z celé sítě Pi, které mělo tyto problémy, a bylo také napájeno ručně připájeným SMPS LM2576 bez zemnící roviny v dohledu – v době sestavení zjevně jediné schůdné řešení, které tam zůstalo navěky kvůli prostému lidskému faktoru „hele, ono to funguje“.
DC-DC sice nenapájí SD kartu přímo – k tomu je na desce regulátor z 5 V na 3,3 V – ale každá část této sestavy, od Pi až po souborový systém, byla vyměněna. Pi mohou být náročné na proud, zejména pokud napájejí další zařízení přes USB. Tenké kabely a nedostatečně dimenzované zdroje mohou vést k výpadkům proudu a chudáci SD karty na to doplácí.
Až výměna DC-DC za běžný modrý modul „LM2596“, posílený o další kondenzátory a silnější vodiče, byla řešením, díky kterému problémy s poškozením skutečně zmizely. Někde tam může být poučení o šíření šumu. Na základě této a dalších podobných, ale méně záhadných zkušeností doporučujeme závěr – myslete na Ohmův zákon a ujistěte se, že cesta pro proudění šťávy do vašeho Pi není zúžena strašně tenkým a dlouhým kabelem MicroUSB nebo Type-C, nebo sestavou DC-DC, která se ukáže jako nekvalitní.
Noví a nedocenění pomocníci
“Zvažte OverlayFS – malá položka nabídky v raspi-config.“
V průběhu let se objevily drobné triky, které, pokud jsou pro váš projekt vhodné, vám poskytnou dodatečnou ochranu proti poškození a nepochybně zajistí také určitý klid. Jedním z nich je možnost OverlayFS v Raspbianu, malá položka nabídky v raspi-config, která byla přidána někdy v roce 2019. Pokud ji povolíte a restartujete Pi, bude se chovat stejně, ale žádná z provedených změn se ve skutečnosti nezapíše na SD kartu, což také znamená, že se neuloží a po restartu prostě zmizí. Pokud chcete změnit soubory na SD kartě, budete muset systém OverlayFS zakázat, restartovat počítač, provést změny, znovu povolit systém OverlayFS a znovu restartovat počítač. Možná existuje způsob, jak to obejít, ale na to už musíte přijít sami.
Podobnou možnost nabízí také sdtool, což je malý software, který můžete spustit na Pi a který přepne MicroSD kartu do režimu pouze pro čtení – což umí všechny SD karty, velké i malé. Pokud nepoužíváte nejnovější Raspbian nebo chcete přepnout stav karty pouze pro čtení bez restartu, mohl by pro vás být tento přístup jako stvořený.
Další věc, která stojí za to vyzkoušet, jsou čipy eMMC. Jsou navrženy tak, aby z nich mohl běžet jakýkoliv operační systém, shodou okolností jsou také kompatibilní s rozhraním SD karty v Raspberry Pi, a některé jsou dokonce kompatibilní s Pi. Nedávno někdo, kdo přísahal, že držel v ruce jeden z těchto bájných výpočetních modulů Pi 4 (údajně na pár sekund), řekl, že používají vestavěné úložiště eMMC. Ne že by varování Není skladem dávalo naději, že by se to někdy dalo skutečně ověřit, ale pokud je to tak, nemuselo by to být špatné.
Několik málo poškození neznamená konec světa
Množství příběhů o poškození karet Raspberry Pi je skličující, ale je to kapka v moři, když si uvědomíte, že se jich prodalo čtyřicet milionů. Toto je podstata toho, co se děje v typickém případě poškození SD karty. Pokud někdy budete muset řešit otravné problémy s poškozením SD, víte nyní, na co se zaměřit, a pravděpodobně jste se dozvěděli některé nové proměnné, které můžete upravit. Pořiďte si dobrou kartu, dobrý napájecí zdroj a nenechte se odradit negativními zkušenostmi ostatních, ať už skutečnými nebo údajnými!
A nemůže to také být tím, že karta má jen omezený počet přepisů? Zatímco u flash disků se uvádí i desititísice zápisů než odejde nějaká paměťová buňka, u SD karet (i těch lepších) je to málokdy více než 500 (!!). Pokud tedy RPi zapisuje nějaké data za chodu, odejde i kvalitní SD karta do křemíkového nebe dříve, než za půl roku nepřetržitého provozu.
Zdravím,
Já myslím, že máte pravdu. Pokud to používané operační systémy u nízkopříkonových pc kde se využívá SD karta jako systémový disk nějakým způsobem neoptimalizují aby se rozložily počty zápisů rovnoměrně mezi všechny paměťové buňky a tím prodloužily životnost SD karty. Řešilo se kdysi i ve Win na SSD. Tak bez toho by mohla narůstat chybovost rychleji při využiti SD karty jako systémového disku s častým zápisem oproti využití jako úložiště pro záznamy videa a fotek.
Nicméně to s tím počtem zápisů bude složitější s tou životností, protože podle jedné fyzikální studie není pro datová media limitem přímo počet zápisů ale výchozí integrita (kvalita) křemíku.
Mě někdy příjde, že komunita okolo nízkopříkonových pc na ARM jakoby předtím úplně vynechala eru x86 pc
a chybí jim znalosti problematiky HW které jsou známé již z éry X86 PC a platí i u ARM PC.
Jedu na jedné kartě Raspbian + Domoticz 6 let. Aktualizace systému i samotného Domo pravidelně co měsíc. Karta Sandisk Extreme (hnědočervená) 16Gb. Ani jediný problém. Samozřejmě naklonovanou druhou stejnou SD mám – nikdy jsem ji nepoužil… Raspi 3B.
Provozuji desítky dohledových systémů Nagios na Debi/Raspianu. Napřed na SD kartách Kingston/Rpi 3. Sem tam to umřelo tak, že karta se sice zdála funkční, ale nezapisovala, stala se „read only“, na což jsem ale přišel až po restartu, že nebyly zapsané změny, dokud to jelo, tak to nepadalo. Podotýkám, že jsem si pohrál s tím, aby se na SD kartu neswapovalo a nepoužívala se pro časté zápisy – na to jsem udělal tmpfs. SD karty nemají diagnostiku, takže se to ani nedozvíte. Tak jsem přešel na USB boot. Nějakou dobu to bylo dobré. Používal jsem Transcendy, takvé pidi, co moc nečouhají ven. S přechodem na Raspi 4 ale začaly potíže, ty Transcendy mi v jednou Rpi 4 začaly odcházet (nejen textový Nagios, ale i GUI, Web browser s dohledem na všechny ty Nagiosy – tam mi odešly dva asi po půl roce). Možná teplotou, ta karta byla vždycky hodně horká, což těm flashkám asi nesvědčí – stejná karta v Rpi3 běží na USB 2, a tak asi netopí. BTW, i VMware ukončuje možnost bootu z USB právě kvůi nespolehlivosti. Mezitím se ale zase věci posunuly z obou stran. Ze strany karet objevily se karty „Endurance“, slibující spousty zápisů, a ze strany Rpi je verze podstaně překopaná ve směru k SD kartě, takže už to není úzké hrdlo.