Hindbær-logo

Raspberry Pi gør en mere robust File System

Raspberry Pi - Gør en mere robustFile-System-produkt

Dokumentets omfang

Dette dokument gælder 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
* * * * * * * * * * * * * *  

 

Indledning

Raspberry Pi Ltd-enheder bruges ofte som datalagrings- og overvågningsenheder, ofte på steder, hvor der kan forekomme pludselige strømafbrydelser. Som med enhver computerenhed kan strømafbrydelser forårsage lagringskorruption. Dette whitepaper giver nogle muligheder for, hvordan man kan forhindre datakorruption under disse og andre omstændigheder ved at vælge passende. file systemer og opsætninger for at sikre dataintegritet. Denne whitepaper forudsætter, at Raspberry Pi kører operativsystemet Raspberry Pi (Linux) og er fuldt opdateret med den nyeste firmware og kerner.

Hvad er datakorruption, og hvorfor forekommer det?
Datakorruption refererer til utilsigtede ændringer i computerdata, der sker under skrivning, læsning, lagring, transmission eller behandling. I dette dokument refererer vi kun til lagring snarere end transmission eller behandling. Korruption kan opstå, når en skriveproces afbrydes, før den er færdig, på en måde, der forhindrer skrivningen i at blive fuldført, f.eks.amphvis strømmen går tabt. Det er værd at give en hurtig introduktion til, hvordan Linux OS (og dermed også Raspberry Pi OS) skriver data til lageret. Linux bruger normalt skrivecacher til at gemme data, der skal skrives til lageret. Disse cacher (lagrer midlertidigt) dataene i RAM (random access memory), indtil en bestemt foruddefineret grænse er nået, hvorefter alle udestående skrivninger til lagermediet foretages i én transaktion. Disse foruddefinerede grænser kan være tids- og/eller størrelsesrelaterede. For eksempelampDvs. data kan cachelagres og kun skrives til lageret hvert femte sekund, eller kun skrives ud, når en vis mængde data er akkumuleret. Disse ordninger bruges til at forbedre ydeevnen: at skrive en stor mængde data på én gang er hurtigere end at skrive mange små databidder.

Hvis der dog opstår strømsvigt mellem data, der lagres i cachen, og de skrives ud, går disse data tabt. Andre mulige problemer opstår senere i skriveprocessen, under den fysiske skrivning af data til lagringsmediet. Når et stykke hardware (f.eks.ampf.eks. Secure Digital (SD)-kortgrænsefladen) får besked på at skrive data, tager det stadig en begrænset tid for disse data at blive fysisk lagret. Igen, hvis der opstår strømsvigt i løbet af denne ekstremt korte periode, er det muligt, at de data, der skrives, bliver beskadiget. Når man lukker et computersystem, inklusive Raspberry Pi, ned, er det bedste at bruge nedlukningsfunktionen. Dette sikrer, at alle cachelagrede data skrives ud, og at hardwaren har haft tid til rent faktisk at skrive dataene til lagringsmediet. SD-kortene, der bruges af størstedelen af ​​Raspberry Pi-serien af ​​enheder, er gode som billige harddiskeudskiftninger, men er modtagelige for fejl over tid, afhængigt af hvordan de bruges. Flashhukommelsen, der bruges i SD-kort, har en begrænset skrivecykluslevetid, og når kortene nærmer sig denne grænse, kan de blive upålidelige. De fleste SD-kort bruger en procedure kaldet slidudjævning for at sikre, at de holder så længe som muligt, men i sidste ende kan de fejle. Dette kan være fra måneder til år, afhængigt af hvor meget data der er blevet skrevet til eller (vigtigere) slettet fra kortet. Denne levetid kan variere dramatisk mellem kort. SD-kortfejl angives normalt ved tilfældige file beskadigelse, da dele af SD-kortet bliver ubrugelige.

Der er andre måder, hvorpå data kan blive beskadiget, herunder, men ikke begrænset til, defekte lagringsmedier, fejl i softwaren til lagringsskrivning (drivere) eller fejl i selve applikationerne. I denne hvidbog defineres enhver proces, hvorved datatab kan forekomme, som en beskadigelseshændelse.

Hvad kan forårsage en skriveoperation?
De fleste applikationer skriver på en eller anden måde til lageret, f.eks.ampfilkonfigurationsoplysninger, databaseopdateringer og lignende. Nogle af disse files kan endda være midlertidige, dvs. kun brugt mens programmet kører, og kræver ikke vedligeholdelse over en strømcyklus; de resulterer dog stadig i skrivninger til lagermediet. Selv hvis din applikation ikke rent faktisk skriver nogen data, vil Linux i baggrunden konstant lave skrivninger til lageret, primært ved at skrive logoplysninger.

Hardwareløsninger

Selvom det ikke helt er omfattet af denne whitepaper, er det værd at nævne, at forebyggelse af uventede strømafbrydelser er en almindeligt anvendt og velforstået afhjælpning af datatab. Enheder som f.eks. nødstrømsforsyninger (UPS'er) sikrer, at strømforsyningen forbliver stabil, og hvis strømmen til UPS'en går tabt, kan den, mens den kører på batteristrøm, fortælle computersystemet, at strømafbrydelsen er nært forestående, så nedlukningen kan fortsætte problemfrit, før backup-strømforsyningen løber tør. Da SD-kort har en begrænset levetid, kan det være nyttigt at have en udskiftningsordning, der sikrer, at SD-kort udskiftes, før de når slutningen af ​​deres levetid.

Robust file systemer

Der er forskellige måder, hvorpå en Raspberry Pi-enhed kan beskyttes mod korruption. Disse varierer i deres evne til at forhindre korruption, hvor hver handling reducerer risikoen for, at det sker.

  • Reducering af skrivninger
    Blot at reducere mængden af ​​skrivning, som dine applikationer og Linux OS udfører, kan have en gavnlig effekt. Hvis du laver meget logning, øges chancerne for skrivninger under en korruptionshændelse. Reduceret logning i din applikation er op til slutbrugeren, men logning i Linux kan også reduceres. Dette er især relevant, hvis du bruger flash-baseret lagring (f.eks. eMMC, SD-kort) på grund af deres begrænsede skrivelevetid.
  • Ændring af commit-tider
    Commit-tiden for en file Systemet er den tid, det cachelagrer data, før det kopierer det hele til lageret. At øge denne tid forbedrer ydeevnen ved at batche mange skrivninger, men det kan føre til datatab, hvis der opstår en korruptionshændelse, før dataene skrives. At reducere commit-tiden vil betyde mindre risiko for, at en korruptionshændelse fører til datatab, selvom det ikke forhindrer det fuldstændigt.
    Sådan ændrer du commit-tiden for den primære EXT4 file system på Raspberry Pi OS, skal du redigere \etc\fstab file som definerer hvordan file Systemerne monteres ved opstart.
  • $sudo nano /etc/fstab

Tilføj følgende til EXT4-posten for roden file system:

  • begå=

Så fstab kan se nogenlunde sådan ud, hvor commit-tiden er sat til tre sekunder. Commit-tiden vil som standard være fem sekunder, hvis den ikke specifikt er angivet.

Raspberry Pi - Gør en mere robustFile-System-

 

Midlertidig file systemer

Hvis en ansøgning kræver midlertidig file lager, dvs. data, der kun bruges, mens applikationen kører, og som ikke skal gemmes ved nedlukning, er en god mulighed for at forhindre fysisk skrivning til lageret at bruge et midlertidigt file system, tmpfs. Fordi disse file Systemer er RAM-baserede (faktisk i virtuel hukommelse), data, der skrives til en tmpfs, skrives aldrig til fysisk lagring og påvirker derfor ikke flashens levetid og kan ikke blive beskadiget under en korruptionshændelse.
Oprettelse af en eller flere tmpfs-placeringer kræver redigering af /etc/fstab file, som kontrollerer alle file systemer under Raspberry Pi OS. Følgende f.eks.ample erstatter de lagringsbaserede placeringer /tmp og /var/log med midlertidige file systemplaceringer. Den anden eks.ample, som erstatter standardlogmappen, begrænser den samlede størrelse af file systemet til 16 MB.

  • tmpfs /tmp tmpfs standardindstillinger,ingen tid 0 0
  • tmpfs /var/log tmpfs standardindstillinger,ingen tid,størrelse=16m 0 0

Der findes også et tredjepartsscript, der hjælper med at opsætte logning til RAM, som kan findes på GitHub. Dette har den ekstra funktion at dumpe de RAM-baserede logs til disken med et foruddefineret interval.

Skrivebeskyttet rod file systemer

Roden file systemet (rootfs) er file system på den diskpartition, hvor rodmappen er placeret, og det er den file system, hvorpå alle de andre file Systemer monteres, når systemet startes op. På Raspberry Pi er det /, og som standard er det placeret på SD-kortet som en fuldt læse-/skrivebaseret EXT4-partition. Der er også en boot-mappe, der er monteret som /boot og er en læse-/skrivebaseret FAT-partition. At gøre rootfs-filen til KUN-læst forhindrer enhver form for skriveadgang til den, hvilket gør den meget mere robust over for korruptionshændelser. Men medmindre der foretages andre handlinger, betyder det, at der ikke kan skrives til den. file systemet overhovedet, så det er deaktiveret at gemme data af enhver art fra din applikation til rootf'en. Hvis du har brug for at gemme data fra din applikation, men ønsker en skrivebeskyttet rootf', er en almindelig teknik at tilføje en USB-hukommelsesnøgle eller lignende, der kun er til lagring af brugerdata.

NOTE
Hvis du bruger en swap file når du bruger en skrivebeskyttet file system, skal du flytte swap'en file til en læse/skrive-partition.

Overlejring file system

Et overlay file system (overlays) kombinerer to file systemer, en øvre file system og et lavere file system. Når et navn findes i begge file systemer, objektet i den øvre file systemet er synligt, mens objektet i den nederste file Systemet er enten skjult eller, i tilfælde af mapper, flettet sammen med det øvre objekt. Raspberry Pi tilbyder en mulighed i raspi-config til at aktivere overlayfs. Dette gør rootfs (nedre) skrivebeskyttet og opretter en RAM-baseret øvre file system. Dette giver et resultat, der minder meget om det skrivebeskyttede file systemet, hvor alle brugerændringer går tabt ved genstart. Du kan aktivere overlayfs enten ved hjælp af kommandolinjen raspi-config eller ved hjælp af skrivebordets Raspberry Pi-konfigurationsapplikation i menuen Indstillinger.

Der findes også andre implementeringer af overlayfs, der kan synkronisere nødvendige ændringer fra den øvre til den nedre file systemet efter en forudbestemt tidsplan. For eksempelampDu kan muligvis kopiere indholdet af en brugers hjemmemappe fra øverst til nederst hver tolvte time. Dette begrænser skriveprocessen til et meget kort tidsrum, hvilket betyder, at korruption er meget mindre sandsynlig, men det betyder, at hvis strømmen går ud før synkroniseringen, går alle data, der er genereret siden den sidste, tabt. pSLC på beregningsmoduler eMMC-hukommelsen, der bruges på Raspberry Pi Compute Module-enheder, er MLC (Multi-Level Cell), hvor hver hukommelsescelle repræsenterer 2 bits. pSLC, eller pseudo-Single Level Cell, er en type NAND flash-hukommelsesteknologi, der kan aktiveres i kompatible MLC-lagerenheder, hvor hver celle kun repræsenterer 1 bit. Den er designet til at give en balance mellem ydeevnen og holdbarheden af ​​SLC flash og omkostningseffektiviteten og den højere kapacitet af MLC flash. pSLC har en højere skriveudholdenhed end MLC, fordi skrivning af data til celler sjældnere reducerer slid. Mens MLC kan tilbyde omkring 3,000 til 10,000 skrivecyklusser, kan pSLC opnå betydeligt højere tal, der nærmer sig udholdenhedsniveauerne for SLC. Denne øgede udholdenhed betyder en længere levetid for enheder, der bruger pSLC-teknologi sammenlignet med dem, der bruger standard MLC.

MLC er mere omkostningseffektiv end SLC-hukommelse, men selvom pSLC tilbyder bedre ydeevne og holdbarhed end ren MLC, sker det på bekostning af kapaciteten. En MLC-enhed konfigureret til pSLC vil have halvdelen af ​​den kapacitet (eller mindre), som en standard MLC-enhed ville have, da hver celle kun lagrer én bit i stedet for to eller flere.

Implementeringsdetaljer

pSLC er implementeret på eMMC som et Enhanced User Area (også kendt som Enhanced storage). Den faktiske implementering af det Enhanced User Area er ikke defineret i MMC-standarden, men er normalt pSLC.

  • Enhanced User Area er et koncept, hvorimod pSLC er en implementering.
  • pSLC er én måde at implementere Enhanced User Area på.
  • I skrivende stund implementerer den eMMC, der bruges på Raspberry Pi Compute Modules, det forbedrede brugerområde ved hjælp af pSLC.
  • Det er ikke nødvendigt at konfigurere hele eMMC-brugerområdet som et udvidet brugerområde.
  • Programmering af et hukommelsesområde til at være et udvidet brugerområde er en engangshandling. Det betyder, at det ikke kan fortrydes.

Tænder den
Linux tilbyder et sæt kommandoer til at manipulere eMMC-partitionerne i mmc-utils-pakken. Installer et standard Linux-operativsystem på CM-enheden, og installer værktøjerne som følger:

  • sudo apt install mmc-utils

For at få information om eMMC'en (denne kommando kræver mindre information, da der er en hel del information at vise):

  • sudo mmc extcsd læs /dev/mmcblk0 | mindre

 ADVARSEL
Følgende handlinger er engangshandlinger – du kan køre dem én gang, og de kan ikke fortrydes. Du bør også køre dem, før Compute Module er blevet brugt, da de vil slette alle data. Kapaciteten af ​​eMMC'en vil blive reduceret til halvdelen af ​​den tidligere værdi.

Kommandoen, der bruges til at aktivere pSLC, er mmc enh_area_set, som kræver flere parametre, der angiver, hvor meget hukommelsesområde pSLC skal være aktiveret. Følgende eksempelamp`le` bruger hele området. Se venligst mmc-kommandohjælpen (man mmc) for detaljer om, hvordan man bruger en delmængde af eMMC.

Raspberry Pi - Gør en mere robustFile-System-

Når enheden er genstartet, skal du geninstallere operativsystemet, da aktivering af pSLC vil slette indholdet af eMMC'en.

Raspberry Pi CM Provisioner-softwaren har en mulighed for at indstille pSLC under provisioneringsprocessen. Dette kan findes på GitHub på https://github.com/raspberrypi/cmprovision.

  • Uden for enheden file systemer / netværksopstart
    Raspberry Pi kan boote over en netværksforbindelse, for eksempelampved hjælp af netværket File System (NFS). Det betyder, at når enheden har gennemført sin førstetage boot, i stedet for at indlæse dens kerne og root file systemet fra SD-kortet, indlæses det fra en netværksserver. Når det kører, file Handlingerne foregår på serveren og ikke på det lokale SD-kort, som ikke spiller nogen yderligere rolle i processen.
  • Cloud-løsninger
    Nu om dage foregår mange kontoropgaver i browseren, hvor alle data gemmes online i skyen. At holde datalagring væk fra SD-kortet kan naturligvis forbedre pålideligheden, på bekostning af behovet for en konstant internetforbindelse samt mulige gebyrer fra cloud-udbydere. Brugeren kan enten bruge en fuld Raspberry Pi OS-installation med den Raspberry Pi-optimerede browser til at få adgang til cloud-tjenester fra leverandører som Google, Microsoft, Amazon osv. Et alternativ er en af ​​tyndklient-udbyderne, der erstatter Raspberry Pi OS med et operativsystem/applikation, der kører fra ressourcer gemt på en central server i stedet for SD-kortet. Tynde klienter fungerer ved at oprette fjernforbindelse til et serverbaseret computermiljø, hvor de fleste applikationer, følsomme data og hukommelse er gemt.

Konklusioner

Når de korrekte nedlukningsprocedurer følges, er SD-kortlagringen på Raspberry Pi ekstremt pålidelig. Dette fungerer godt i hjemmet eller på kontoret, hvor nedlukningen kan styres, men når Raspberry Pi-enheder bruges i industriel brug eller i områder med en upålidelig strømforsyning, kan ekstra forholdsregler forbedre pålideligheden.

Kort sagt kan mulighederne for at forbedre pålideligheden opremses som følger:

  • Brug et velkendt og pålideligt SD-kort.
  • Reducer skrivninger ved at bruge længere commit-tider, ved hjælp af midlertidige file systemer, ved hjælp af et overlayfs eller lignende.
  • Brug lagring uden for enheden, f.eks. netværksstart eller cloud-lagring.
  • Implementer en ordning for at udskifte SD-kort, før de når slutningen af ​​deres levetid.
  • Brug en UPS.

Raspberry Pi er et varemærke tilhørende Raspberry Pi Ltd
Raspberry Pi Ltd

Kolofon
© 2020-2023 Raspberry Pi Ltd (tidligere Raspberry Pi (Trading) Ltd.)
Denne dokumentation er licenseret under en Creative Commons Navngivelse-IngenBearbejdelser 4.0 International (CC BY-ND).

  • byggedato: 2024-06-25
  • build-version: githash: 3e4dad9-clean

Juridisk ansvarsfraskrivelse
TEKNISKE DATA OG PÅLIDELIGHED FOR RASPBERRY PI-PRODUKTER (INKLUSIVE DATABLAD) SOM ÆNDRET FRA TID TIL ANDEN (“RESOURCER”) LEVERES AF RASPBERRY PI LTD (“RPL”) “SOM DE ER” OG EVENTUELLE UDTRYKKELIGE ELLER UNDERFORSTÅET, UNDERFORSTÅET, UNDERFORSTÅET TIL ER DE UNDERFORSTÅEDE GARANTIER FOR SALGBARHED OG EGNETHED TIL ET BESTEMT FORMÅL FRASKRIFTLIG. I DET MAKSIMALTE OMFANG, DER ER TILLADET AF GÆLDENDE LOV, KAN RPL UNDER INGEN OMSTÆNDIGHEDER VÆRE ANSVARLIG FOR NOGEN DIREKTE, INDIREKTE, TILFÆLDELIGE, SÆRLIGE, EKSEMPEL- ELLER FØLGESKADER (INKLUSIVE, MEN IKKE BEGRÆNSET TIL, UDBYGNINGER, UDBYGNINGER, UDBYGNINGER, DATA ELLER FORTJENESTE ELLER VIRKSOMHEDSAFBRYDELSE) HVORDAN FORÅRSAGET OG PÅ ENHVER ANSVARSTEORI, HVIS I KONTRAKTER, STRIKT ANSVAR, ELLER ORGANISATION (HERunder Uagtsomhed ELLER ANDEN MÅDE), SOM ER OPSTÅET PÅ ENHVER MÅDE UD AF DET ANVENDELSE, AF SÅDAN SKADE.

RPL forbeholder sig retten til at foretage forbedringer, rettelser eller andre ændringer af RESSOURCERNE eller produkter beskrevet i dem når som helst og uden yderligere varsel. RESSOURCERNE er beregnet til erfarne brugere med passende niveauer af designviden. Brugerne er eneansvarlige for deres valg og brug af RESSOURCERNE og enhver anvendelse af de produkter, der er beskrevet i dem. Brugeren accepterer at skadesløsholde og holde RPL skadesløs for alt ansvar, omkostninger, skader eller andre tab, der måtte opstå som følge af deres brug af RESSOURCERNE. RPL giver brugerne tilladelse til udelukkende at bruge RESSOURCERNE i forbindelse med Raspberry Pi-produkterne. Al anden brug af RESSOURCERNE er forbudt. Der gives ingen licens til nogen anden RPL- eller tredjeparts immaterielle rettigheder.

HØJRISIKOAKTIVITETER. Raspberry Pi-produkter er ikke designet, fremstillet eller beregnet til brug i farlige miljøer, der kræver fejlsikker ydeevne, såsom drift af nukleare anlæg, flynavigations- eller kommunikationssystemer, lufttrafikkontrol, våbensystemer eller sikkerhedskritiske applikationer (herunder livsstøttende systemer og andet medicinsk udstyr), hvor produkternes svigt kan føre direkte til død, personskade eller alvorlig fysisk eller miljømæssig skade ("Højrisikoaktiviteter"). RPL fraskriver sig specifikt enhver udtrykkelig eller stiltiende garanti for egnethed til højrisikoaktiviteter og påtager sig intet ansvar for brug eller inkludering af Raspberry Pi-produkter i højrisikoaktiviteter. Raspberry Pi-produkter leveres i henhold til RPL's standardvilkår. RPL's levering af RESSOURCER udvider eller ændrer ikke på anden måde RPL's standardvilkår, herunder, men ikke begrænset til, de ansvarsfraskrivelser og garantier, der er udtrykt i dem.

Ofte stillede spørgsmål

  • Q: Hvilke Raspberry Pi-produkter understøttes af dette dokument?
    A: Dette dokument gælder for forskellige Raspberry Pi-produkter, herunder Pi 0 W, Pi 1 A/B, Pi 2 A/B, Pi 3, Pi 4, Pi 400, CM1, CM3, CM4, CM5 og Pico.
  • Q: Hvordan kan jeg reducere risikoen for datakorruption på min Raspberry Pi-enhed?
    A: Du kan reducere datakorruption ved at minimere skriveoperationer, især logføringsaktiviteter, og justere commit-tider for file systemet som beskrevet i dette dokument.

Dokumenter/ressourcer

Raspberry Pi gør en mere robust File System [pdfBrugervejledning
Pi 0, Pi 1, Gør en mere robust File System, mere robust File System, robust File System, File System

Referencer

Efterlad en kommentar

Din e-mailadresse vil ikke blive offentliggjort. Påkrævede felter er markeret *