Raspberry Pi gjør en mer robust File System
Dokumentets omfang
Dette dokumentet gjelder for følgende Raspberry Pi-produkter:
Pi 0 | Pi 1 | Pi 2 | Pi 3 | Pi 4 | Pi 400 | CM1 | CM3 | CM4 | CM 5 | Pico | ||||
0 | W | H | A | B | A | B | B | Alle | Alle | Alle | Alle | Alle | Alle | Alle |
* | * | * | * | * | * | * | * | * | * | * | * | * | * |
|
Introduksjon
Raspberry Pi Ltd-enheter brukes ofte som datalagrings- og overvåkingsenheter, ofte på steder der plutselige strømbrudd kan oppstå. Som med alle dataenheter kan strømbrudd forårsake lagringskorrupsjon. Denne rapporten gir noen alternativer for hvordan du kan forhindre datakorrupsjon under disse og andre omstendigheter ved å velge passende. file systemer og oppsett for å sikre dataintegritet. Denne rapporten forutsetter at Raspberry Pi kjører operativsystemet Raspberry Pi (Linux) og er fullstendig oppdatert med den nyeste fastvaren og kjernene.
Hva er datakorrupsjon, og hvorfor oppstår det?
Datakorrupsjon refererer til utilsiktede endringer i data som oppstår under skriving, lesing, lagring, overføring eller behandling. I dette dokumentet refererer vi kun til lagring, snarere enn overføring eller behandling. Korrupsjon kan oppstå når en skriveprosess avbrytes før den er fullført, på en måte som forhindrer at skrivingen fullføres, for eksempelamphvis strømmen går. Det er verdt å gi en rask introduksjon til hvordan Linux OS (og dermed også Raspberry Pi OS) skriver data til lagring. Linux bruker vanligvis skrivebuffere for å lagre data som skal skrives til lagring. Disse mellomlagrer (lagrer midlertidig) dataene i RAM (random access memory) inntil en viss forhåndsdefinert grense er nådd, hvoretter alle utestående skrivinger til lagringsmediet gjøres i én transaksjon. Disse forhåndsdefinerte grensene kan være tids- og/eller størrelsesrelaterte. For eksempelampDvs. data kan mellomlagres og bare skrives til lagring hvert femte sekund, eller bare skrives ut når en viss mengde data har samlet seg. Disse ordningene brukes til å forbedre ytelsen: å skrive en stor mengde data på én gang er raskere enn å skrive mange små databiter.
Men hvis strømmen går tapt mellom data som lagres i hurtigbufferen og når de skrives ut, går disse dataene tapt. Andre mulige problemer oppstår lenger ned i skriveprosessen, under den fysiske skrivingen av data til lagringsmediet. Når en maskinvareenhet (for eksempelampf.eks. Secure Digital (SD)-kortgrensesnittet) får beskjed om å skrive data, men det tar fortsatt en begrenset tid før disse dataene er fysisk lagret. Igjen, hvis strømbrudd oppstår i løpet av denne ekstremt korte perioden, er det mulig at dataene som skrives blir ødelagt. Når du slår av et datasystem, inkludert Raspberry Pi, er det beste å bruke avstengningsalternativet. Dette vil sikre at alle hurtigbufrede data skrives ut, og at maskinvaren har hatt tid til å faktisk skrive dataene til lagringsmediet. SD-kortene som brukes av de fleste Raspberry Pi-enheter er gode som billige harddiskerstatninger, men er utsatt for feil over tid, avhengig av hvordan de brukes. Flashminnet som brukes i SD-kort har en begrenset skrivesykluslevetid, og når kortene nærmer seg denne grensen, kan de bli upålitelige. De fleste SD-kort bruker en prosedyre som kalles slitasjeutjevning for å sikre at de varer så lenge som mulig, men til slutt kan de svikte. Dette kan være fra måneder til år, avhengig av hvor mye data som er skrevet til, eller (enda viktigere) slettet fra, kortet. Denne levetiden kan variere dramatisk mellom kort. SD-kortfeil indikeres vanligvis av tilfeldige file korrupsjon ettersom deler av SD-kortet blir ubrukelige.
Det finnes andre måter data kan bli ødelagt på, inkludert, men ikke begrenset til, defekt lagringsmedium, feil i programvaren for lagringsskriving (drivere) eller feil i selve applikasjonene. I denne rapporten defineres enhver prosess der datatap kan oppstå som en korrupsjonshendelse.
Hva kan forårsake en skriveoperasjon?
De fleste applikasjoner skriver til lagring på en eller annen måte, for eksempelampkonfigurasjonsinformasjon for filen, databaseoppdateringer og lignende. Noen av disse files kan til og med være midlertidige, dvs. bare brukt mens programmet kjører, og krever ikke vedlikehold over en strømsyklus. De resulterer imidlertid fortsatt i skriving til lagringsmediet. Selv om applikasjonen din faktisk ikke skriver noen data, vil Linux i bakgrunnen stadig skrive til lagringsmediet, hovedsakelig skrive logginformasjon.
Maskinvareløsninger
Selv om det ikke helt dekkes av denne rapporten, er det verdt å nevne at det å forhindre uventede strømbrudd er en vanlig og godt forstått måte å redusere datatap på. Enheter som avbruddsfrie strømforsyninger (UPS-er) sikrer at strømforsyningen forblir stabil, og hvis strømmen går tapt til UPS-en, kan den fortelle datasystemet at strømbrudd er nært forestående mens den er på batteristrøm, slik at avstengningen kan fortsette problemfritt før reservestrømforsyningen går tom. Fordi SD-kort har en begrenset levetid, kan det være nyttig å ha en erstatningsordning som sikrer at SD-kort byttes ut før de når slutten av levetiden.
Robust file systemer
Det finnes ulike måter en Raspberry Pi-enhet kan beskyttes mot korrupsjonshendelser på. Disse varierer i evnen til å forhindre korrupsjon, der hver handling reduserer sjansen for at det oppstår.
- Redusere skrivinger
Bare det å redusere mengden skriving som applikasjonene dine og Linux-operativsystemet gjør kan ha en gunstig effekt. Hvis du bruker mye logging, øker sjansene for at skriving skjer under en korrupsjonshendelse. Redusert logging i applikasjonen din er opp til sluttbrukeren, men logging i Linux kan også reduseres. Dette er spesielt relevant hvis du bruker flash-basert lagring (f.eks. eMMC, SD-kort) på grunn av deres begrensede skrivesyklus. - Endring av iverksettelsestider
Innsatstiden for en file Systemet er hvor lenge det mellomlagrer data før det kopierer alt til lagring. Å øke denne tiden forbedrer ytelsen ved å batche opp mange skrivinger, men kan føre til datatap hvis det oppstår en korrupsjonshendelse før dataene skrives. Å redusere iverksettelsestiden vil bety mindre sjanse for at en korrupsjonshendelse fører til datatap, selv om det ikke forhindrer det fullstendig.
For å endre iverksettelsestiden for hoved-EXT4 file system på Raspberry Pi OS, må du redigere \etc\fstab file som definerer hvordan file Systemene monteres ved oppstart. - $sudo nano /etc/fstab
Legg til følgende i EXT4-oppføringen for roten file system:
- begå=
Så, fstab kan se omtrent slik ut, der commit-tiden er satt til tre sekunder. Standardtiden vil være fem sekunder hvis den ikke er spesifikt angitt.
Midlertidig file systemer
Hvis en søknad krever midlertidig file lagring, dvs. data som bare brukes mens applikasjonen kjører og ikke trenger å lagres ved en avslutning, er et godt alternativ for å forhindre fysisk skriving til lagring å bruke en midlertidig file system, tmpfs. Fordi disse file Systemer er RAM-baserte (faktisk i virtuelt minne), data som skrives til en tmpfs blir aldri skrevet til fysisk lagring, og påvirker derfor ikke flash-levetiden, og kan ikke bli skadet av en korrupsjonshendelse.
Å opprette én eller flere tmpfs-plasseringer krever redigering av /etc/fstab file, som kontrollerer alle file systemer under Raspberry Pi OS. Følgende eksempelample erstatter de lagringsbaserte plasseringene /tmp og /var/log med midlertidige file systemplasseringer. Den andre eksenample, som erstatter standard loggmappe, begrenser den totale størrelsen på file systemet til 16 MB.
- tmpfs /tmp tmpfs standardinnstillinger, ingen tid 0 0
- tmpfs /var/log tmpfs standardverdier,ingen tid,størrelse=16m 0 0
Det finnes også et tredjepartsskript som hjelper med å sette opp logging til RAM, som du finner på GitHub. Dette har den ekstra funksjonen å dumpe RAM-baserte loggene til disk med et forhåndsdefinert intervall.
Skrivebeskyttet rot file systemer
Roten file systemet (rootfs) er file system på diskpartisjonen der rotkatalogen ligger, og det er file system som alle de andre er på file Systemer monteres når systemet startes opp. På Raspberry Pi er det /, og som standard er det plassert på SD-kortet som en EXT4-partisjon med full lesing/skriving. Det finnes også en oppstartsmappe, som er montert som /boot og er en FAT-partisjon med lesing/skriving. Å gjøre rootfs-en til KUN lesing forhindrer enhver form for skrivetilgang til den, noe som gjør den mye mer robust mot korrupsjonshendelser. Men med mindre andre handlinger iverksettes, betyr dette at ingenting kan skrive til den. file systemet i det hele tatt, så lagring av data av noe slag fra applikasjonen din til rootfs-filen er deaktivert. Hvis du trenger å lagre data fra applikasjonen din, men ønsker en skrivebeskyttet rootfs, er en vanlig teknikk å legge til en USB-minnepinne eller lignende som kun er for lagring av brukerdata.
NOTE
Hvis du bruker en byttepenn file når du bruker skrivebeskyttet file system, må du flytte veksleren file til en lese-/skrivepartisjon.
Overlegg file system
Et overlegg file system (overlays) kombinerer to file systemer, en øvre file system og et lavere file systemet. Når et navn finnes i begge file systemer, objektet i den øvre file systemet er synlig mens objektet i den nedre file systemet er enten skjult eller, i tilfelle mapper, slått sammen med det øvre objektet. Raspberry Pi tilbyr et alternativ i raspi-config for å aktivere en overlayfs. Dette gjør rootfs (nedre) skrivebeskyttet, og oppretter en RAM-basert øvre file system. Dette gir et veldig likt resultat som skrivebeskyttet file systemet, og alle brukerendringer går tapt ved omstart. Du kan aktivere overlayfs enten ved å bruke kommandolinjen raspi-config eller ved å bruke skrivebordsprogrammet for Raspberry Pi-konfigurasjon på Innstillinger-menyen.
Det finnes også andre implementeringer av overlayfs som kan synkronisere nødvendige endringer fra øvre til nedre file systemet etter en forhåndsbestemt tidsplan. For eksempelample, du kan kopiere innholdet i en brukers hjemmemappe fra øvre til nedre side hver tolvte time. Dette begrenser skriveprosessen til et svært kort tidsrom, noe som betyr at korrupsjon er mye mindre sannsynlig, men det betyr at hvis strømmen går før synkroniseringen, går data som er generert siden den siste tapt. pSLC på datamoduler eMMC-minnet som brukes på Raspberry Pi Compute Module-enheter er MLC (Multi-Level Cell), der hver minnecelle representerer 2 bits. pSLC, eller pseudo-Single Level Cell, er en type NAND flash-minneteknologi som kan aktiveres i kompatible MLC-lagringsenheter, der hver celle bare representerer 1 bit. Den er designet for å gi en balanse mellom ytelsen og utholdenheten til SLC-flash og kostnadseffektiviteten og den høyere kapasiteten til MLC-flash. pSLC har høyere skriveutholdenhet enn MLC fordi det å skrive data til celler sjeldnere reduserer slitasje. Selv om MLC kan tilby rundt 3,000 til 10,000 XNUMX skrivesykluser, kan pSLC oppnå betydelig høyere tall, som nærmer seg utholdenhetsnivåene til SLC. Denne økte utholdenheten betyr lengre levetid for enheter som bruker pSLC-teknologi sammenlignet med de som bruker standard MLC.
MLC er mer kostnadseffektivt enn SLC-minne, men selv om pSLC tilbyr bedre ytelse og utholdenhet enn ren MLC, gjør det det på bekostning av kapasitet. En MLC-enhet konfigurert for pSLC vil ha halvparten av kapasiteten (eller mindre) den ville hatt som en standard MLC-enhet, siden hver celle bare lagrer én bit i stedet for to eller flere.
Implementeringsdetaljer
pSLC er implementert på eMMC som et Enhanced User Area (også kjent som Enhanced Storage). Den faktiske implementeringen av det Enhanced User Area er ikke definert i MMC-standarden, men er vanligvis pSLC.
- Enhanced User Area er et konsept, mens pSLC er en implementering.
- pSLC er én måte å implementere Enhanced User Area på.
- I skrivende stund implementerer eMMC-en som brukes på Raspberry Pi-beregningsmodulene det forbedrede brukerområdet ved hjelp av pSLC.
- Det er ikke nødvendig å konfigurere hele eMMC-brukerområdet som et utvidet brukerområde.
- Å programmere et minneområde til å være et utvidet brukerområde er en engangsoperasjon. Det betyr at det ikke kan angres.
Slår den på
Linux tilbyr et sett med kommandoer for å manipulere eMMC-partisjonene i mmc-utils-pakken. Installer et standard Linux-operativsystem på CM-enheten, og installer verktøyene som følger:
- sudo apt install mmc-utils
For å få informasjon om eMMC (denne kommandoen bruker mindre tid, ettersom det er ganske mye informasjon å vise):
- sudo mmc extcsd les /dev/mmcblk0 | mindre
ADVARSEL
Følgende operasjoner er engangsoperasjoner – du kan kjøre dem én gang, og de kan ikke angres. Du bør også kjøre dem før Compute Module er brukt, da de vil slette alle data. Kapasiteten til eMMC vil reduseres til halvparten av den forrige verdien.
Kommandoen som brukes for å slå på pSLC er mmc enh_area_set, som krever flere parametere som forteller hvor mye minneområde pSLC skal aktiveres. Følgende eksempelample bruker hele området. Se hjelpen til mmc-kommandoen (man mmc) for detaljer om hvordan du bruker et delsett av eMMC.
Etter at enheten har startet på nytt, må du installere operativsystemet på nytt, da aktivering av pSLC vil slette innholdet i eMMC-en.
Raspberry Pi CM Provisioner-programvaren har et alternativ for å angi pSLC under provisioneringsprosessen. Dette finner du på GitHub på https://github.com/raspberrypi/cmprovision.
- Utenfor enheten file systemer / nettverksoppstart
Raspberry Pi kan starte opp via en nettverkstilkobling, for eksempelampved hjelp av nettverket File System (NFS). Dette betyr at når enheten har fullført sin førstetage boot, i stedet for å laste inn kjernen og roten file systemet fra SD-kortet, lastes det inn fra en nettverksserver. Når det kjører, vil alt file Operasjonene foregår på serveren og ikke det lokale SD-kortet, som ikke spiller noen videre rolle i prosessen. - Skyløsninger
I dag foregår mange kontoroppgaver i nettleseren, og all data lagres på nett i skyen. Å holde datalagring utenfor SD-kortet kan åpenbart forbedre påliteligheten, på bekostning av behovet for en alltid påkoblet internettforbindelse, samt mulige kostnader fra skyleverandører. Brukeren kan enten bruke en fullverdig Raspberry Pi OS-installasjon, med den Raspberry Pi-optimaliserte nettleseren, for å få tilgang til hvilken som helst av skytjenestene fra leverandører som Google, Microsoft, Amazon osv. Et alternativ er en av tynnklientleverandørene, som erstatter Raspberry Pi OS med et operativsystem/applikasjon som kjører fra ressurser lagret på en sentral server i stedet for SD-kortet. Tynne klienter fungerer ved å koble eksternt til et serverbasert databehandlingsmiljø der de fleste applikasjoner, sensitive data og minne er lagret.
Konklusjoner
Når riktige avstengningsprosedyrer følges, er SD-kortlagringen til Raspberry Pi ekstremt pålitelig. Dette fungerer bra i hjemme- eller kontormiljøer der avstengning kan kontrolleres, men når Raspberry Pi-enheter brukes i industrielle brukstilfeller, eller i områder med upålitelig strømforsyning, kan ekstra forholdsregler forbedre påliteligheten.
Kort sagt kan alternativene for å forbedre påliteligheten listes opp som følger:
- Bruk et kjent og pålitelig SD-kort.
- Reduser skrivinger ved å bruke lengre iverksettelsestider, ved å bruke midlertidige file systemer, ved hjelp av et overlayfs eller lignende.
- Bruk lagring utenfor enheten, for eksempel nettverksoppstart eller skylagring.
- Implementer et system for å bytte ut SD-kort før de når slutten av levetiden.
- Bruk en UPS.
Raspberry Pi er et varemerke for Raspberry Pi Ltd
Raspberry Pi Ltd
Kolofon
© 2020-2023 Raspberry Pi Ltd (tidligere Raspberry Pi (Trading) Ltd.)
Denne dokumentasjonen er lisensiert under en Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND).
- byggedato: 2024-06-25
- byggeversjon: githash: 3e4dad9-clean
Juridisk ansvarsfraskrivelse
TEKNISKE DATA OG PÅLITELIGHETSDATA FOR RASPBERRY PI-PRODUKTER (INKLUDERT DATABLAD) SOM ENDRET FRA TIDEN TIL TIDEN (“RESURSER”) LEVERES AV RASPBERRY PI LTD (“RPL”) “SOM DE ER” OG EVENTUELLE UTTRYKKELIGE ELLER UNDERFORSTÅTTE, UNDERFORSTÅET TIL FRASVISES DE UNDERFORSTÅTE GARANTIER OM SALGBARHET OG EGNETHET FOR ET BESTEMT FORMÅL. I DEN MAKSIMALE UTREDNING SOM TILLATES AV GJELDENDE LOV, SKAL RPL IKKE UNDER OMSTENDIGHETER VÆRE ANSVARLIG FOR EVENTUELLE DIREKTE, INDIREKTE, TILFELDIGE, SPESIELLE, EKSEMPELISKE ELLER FØLGESKADER (INKLUDERT, MEN IKKE BEGRENSET TIL GOD, LEVERANDØR AV OSS LEVERANDØR; , DATA , Eller fortjeneste; eller forretningsavbrudd) imidlertid forårsaket og om enhver teori om ansvar, enten det er i kontrakt, strengt ansvar eller erstatning (inkludert uaktsomhet eller på annen måte) som oppstår på noen måte ut av bruken av ressursene, selv om det er anbefalt muligheten AV SLIK SKADE.
RPL forbeholder seg retten til å foreta forbedringer, korrigeringer eller andre modifikasjoner av RESSURSENE eller produkter beskrevet i dem når som helst og uten ytterligere varsel. RESSURSENE er beregnet på erfarne brukere med passende nivåer av designkunnskap. Brukere er eneansvarlige for valg og bruk av RESSURSENE og enhver anvendelse av produktene beskrevet i dem. Brukeren samtykker i å holde RPL skadesløs for alt ansvar, kostnader, skader eller andre tap som følge av deres bruk av RESSURSENE. RPL gir brukere tillatelse til å bruke RESSURSENE utelukkende i forbindelse med Raspberry Pi-produktene. All annen bruk av RESSURSENE er forbudt. Ingen lisens gis til noen annen RPL- eller tredjeparts immaterielle rettigheter.
HØYRISIKOAKTIVITETER. Raspberry Pi-produkter er ikke designet, produsert eller beregnet for bruk i farlige miljøer som krever feilsikker ytelse, for eksempel i drift av kjernefysiske anlegg, flynavigasjons- eller kommunikasjonssystemer, lufttrafikkontroll, våpensystemer eller sikkerhetskritiske applikasjoner (inkludert livsstøttesystemer og annet medisinsk utstyr), der svikt i produktene kan føre direkte til død, personskade eller alvorlig fysisk eller miljømessig skade («Høyrisikoaktiviteter»). RPL fraskriver seg spesifikt enhver uttrykt eller underforstått garanti for egnethet for høyrisikoaktiviteter og aksepterer intet ansvar for bruk eller inkludering av Raspberry Pi-produkter i høyrisikoaktiviteter. Raspberry Pi-produkter leveres underlagt RPLs standardvilkår. RPLs levering av RESSURSER utvider eller endrer ikke på annen måte RPLs standardvilkår, inkludert, men ikke begrenset til, ansvarsfraskrivelsene og garantiene som er uttrykt i dem.
Ofte stilte spørsmål
- Q: Hvilke Raspberry Pi-produkter støttes av dette dokumentet?
A: Dette dokumentet gjelder for diverse Raspberry Pi-produkter, inkludert Pi 0 W, Pi 1 A/B, Pi 2 A/B, Pi 3, Pi 4, Pi 400, CM1, CM3, CM4, CM5 og Pico. - Spørsmål: Hvordan kan jeg redusere sjansene for datakorrupsjon på Raspberry Pi-enheten min?
A: Du kan redusere datakorrupsjon ved å minimere skriveoperasjoner, spesielt loggføringsaktiviteter, og justere iverksettelsestider for file systemet som beskrevet i dette dokumentet.
Dokumenter / Ressurser
![]() |
Raspberry Pi gjør en mer robust File System [pdfBrukerhåndbok Pi 0, Pi 1, Gjør en mer robust File System, mer robust File System, robust File System, File System |