Zmeura-logo

Raspberry Pi devine mai rezistent File Sistem

Raspberry Pi-Crearea-unui-Pi-Mai-RezilientFile-Sistem-produs

Sfera documentului

Acest document se aplică următoarelor produse Raspberry Pi:

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 Toate Toate Toate Toate Toate Toate Toate
* * * * * * * * * * * * * *  

 

Introducere

Dispozitivele Raspberry Pi Ltd sunt frecvent utilizate ca dispozitive de stocare și monitorizare a datelor, adesea în locuri unde pot apărea pene bruște de curent. Ca în cazul oricărui dispozitiv de calcul, căderile de curent pot cauza coruperea spațiului de stocare. Acest document informativ oferă câteva opțiuni despre cum să preveniți coruperea datelor în aceste circumstanțe și în altele, prin selectarea corespunzătoare. file sisteme și configurații pentru a asigura integritatea datelor. Acest document oficial presupune că Raspberry Pi rulează sistemul de operare (OS) Raspberry Pi (Linux) și este complet actualizat cu cele mai recente versiuni de firmware și kernel-uri.

Ce este coruperea datelor și de ce apare?
Corupția datelor se referă la modificări neintenționate ale datelor computerului care apar în timpul scrierii, citirii, stocării, transmiterii sau procesării. În acest document ne referim doar la stocare, mai degrabă decât la transmitere sau procesare. Corupția poate apărea atunci când un proces de scriere este întrerupt înainte de finalizare, într-un mod care împiedică finalizarea scrierii, de exempluampdacă se întrerupe alimentarea. Merită în acest moment să oferim o scurtă introducere despre modul în care sistemul de operare Linux (și, prin extensie, sistemul de operare Raspberry Pi) scrie date în spațiul de stocare. Linux folosește de obicei cache-uri de scriere pentru a stoca datele care urmează să fie scrise în spațiul de stocare. Acestea stochează temporar datele în memoria RAM până când se atinge o anumită limită predefinită, moment în care toate scrierile restante pe mediul de stocare se efectuează într-o singură tranzacție. Aceste limite predefinite pot fi legate de timp și/sau dimensiune. De exempluampDe exemplu, datele pot fi stocate în cache și scrise în memoria de stocare doar la fiecare cinci secunde sau scrise doar atunci când s-a acumulat o anumită cantitate de date. Aceste scheme sunt utilizate pentru a îmbunătăți performanța: scrierea unei bucăți mari de date dintr-o dată este mai rapidă decât scrierea multor bucăți mici de date.

Totuși, dacă se întrerupe alimentarea între stocarea datelor în memoria cache și scrierea acestora, datele respective se pierd. Alte probleme posibile apar mai târziu în procesul de scriere, în timpul scrierii fizice a datelor pe mediul de stocare. Odată ce o componentă hardware (de exempluampDe exemplu, interfața cardului Secure Digital (SD) este instruită să scrie date, este nevoie de un timp finit pentru ca aceste date să fie stocate fizic. Din nou, dacă se produce o pană de curent în acea perioadă extrem de scurtă, este posibil ca datele scrise să fie corupte. La oprirea unui sistem informatic, inclusiv Raspberry Pi, cea mai bună practică este utilizarea opțiunii de oprire. Aceasta va asigura că toate datele din cache sunt scrise și că hardware-ul a avut timp să scrie efectiv datele pe mediul de stocare. Cardurile SD utilizate de majoritatea dispozitivelor Raspberry Pi sunt excelente ca înlocuitori ieftini pentru hard disk-uri, dar sunt susceptibile la defecțiuni în timp, în funcție de modul în care sunt utilizate. Memoria flash utilizată în cardurile SD are o durată de viață limitată a ciclului de scriere și, pe măsură ce cardurile se apropie de această limită, acestea pot deveni nesigure. Majoritatea cardurilor SD utilizează o procedură numită nivelare a uzurii pentru a se asigura că durează cât mai mult posibil, dar în cele din urmă se pot defecta. Aceasta poate dura de la luni la ani, în funcție de câte date au fost scrise pe card sau (mai important) șterse de pe acesta. Această durată de viață poate varia dramatic între carduri. Defectarea cardului SD este de obicei indicată de erori aleatorii file coruperi pe măsură ce părți ale cardului SD devin inutilizabile.

Există și alte modalități prin care datele se pot corupe, inclusiv, dar fără a se limita la, medii de stocare defecte, erori în software-ul de scriere a datelor (drivere) sau erori în aplicațiile în sine. În sensul acestei cărți albe, orice proces prin care se pot produce pierderi de date este definit ca un eveniment de corupere.

Ce poate cauza o operațiune de scriere?
Majoritatea aplicațiilor scriu în memoria de stocare, de exempluampinformații de configurare, actualizări ale bazei de date și altele asemenea. Unele dintre acestea file„s” pot fi chiar temporare, adică utilizate doar în timp ce programul rulează și nu necesită întreținere pe parcursul unei reporniri; cu toate acestea, ele duc în continuare la scrieri pe mediul de stocare. Chiar dacă aplicația dvs. nu scrie de fapt nicio informație, în fundal Linux va face constant scrieri în spațiul de stocare, în principal scriind informații de jurnalizare.

Soluții hardware

Deși nu intră în totalitate în sfera acestui document informativ, merită menționat faptul că prevenirea întreruperilor neașteptate de alimentare este o metodă de atenuare frecvent utilizată și bine înțeleasă împotriva pierderii de date. Dispozitive precum sursele de alimentare neîntreruptibile (UPS) asigură că sursa de alimentare rămâne constantă și, dacă se întrerupe alimentarea UPS-ului, în timp ce funcționează pe baterie, acestea pot semnala sistemului informatic că este iminentă o întrerupere de alimentare, astfel încât oprirea să poată avea loc fără probleme înainte ca sursa de alimentare de rezervă să se epuizeze. Deoarece cardurile SD au o durată de viață limitată, poate fi util să existe un regim de înlocuire care să asigure că cardurile SD sunt înlocuite înainte de a ajunge la sfârșitul duratei de viață.

Robust file sisteme

Există diverse modalități prin care un dispozitiv Raspberry Pi poate fi protejat împotriva evenimentelor de corupție. Acestea variază în capacitatea lor de a preveni corupția, fiecare acțiune reducând șansa apariției acesteia.

  • Reducerea scrierilor
    Simpla reducere a volumului de scriere efectuat de aplicațiile și de sistemul de operare Linux poate avea un efect benefic. Dacă se realizează multă înregistrare în jurnal, atunci șansele ca scrierile să aibă loc în timpul unui eveniment de corupere sunt crescute. Reducerea numărului de înregistrări în jurnal în aplicație depinde de utilizatorul final, dar și înregistrarea în jurnal în Linux poate fi redusă. Acest lucru este relevant mai ales dacă se utilizează stocare bazată pe flash (de exemplu, eMMC, carduri SD) datorită ciclului lor de viață limitat la scriere.
  • Modificarea timpilor de commit
    Timpul de angajare pentru un file Sistemul reprezintă durata de timp în care acesta stochează datele în cache înainte de a le copia pe toate în memoria de stocare. Creșterea acestui timp îmbunătățește performanța prin gruparea multor scrieri, dar poate duce la pierderea datelor dacă există un eveniment de corupere înainte de scrierea datelor. Reducerea timpului de validare va însemna o șansă mai mică ca un eveniment de corupere să ducă la pierderea datelor, deși nu o previne complet.
    Pentru a schimba timpul de validare pentru EXT4 principal file sistem pe Raspberry Pi OS, trebuie să editați fișierul \etc\fstab file care definește cum file Sistemele sunt montate la pornire.
  • $sudo nano /etc/fstab

Adăugați următoarele la intrarea EXT4 pentru rădăcină file sistem:

  • comitere=

Deci, fstab ar putea arăta cam așa, unde timpul de validare a fost setat la trei secunde. Timpul de validare va fi implicit la cinci secunde dacă nu este setat în mod specific.

Raspberry Pi-Crearea-unui-Pi-Mai-RezilientFile-Sistem-

 

Temporar file sisteme

Dacă o aplicație necesită temporar file stocare, adică date utilizate doar în timp ce aplicația rulează și nu este necesar să fie salvate la o închidere, atunci o opțiune bună pentru a preveni scrierile fizice în spațiul de stocare este utilizarea unui spațiu temporar file sistem, tmpfs. Deoarece acestea file Sistemele sunt bazate pe RAM (de fapt, în memoria virtuală), orice date scrise într-un tmpfs nu sunt niciodată scrise în spațiul de stocare fizic și, prin urmare, nu afectează durata de viață a memoriei flash și nu se pot deteriora în cazul unui eveniment de corupere.
Crearea uneia sau mai multor locații tmpfs necesită editarea fișierului /etc/fstab file, care controlează toate file sisteme sub Raspberry Pi OS. Următoarele exempleampînlocuiește locațiile de stocare /tmp și /var/log cu locații temporare file locații ale sistemului. Al doilea exempluample, care înlocuiește folderul standard de jurnalizare, limitează dimensiunea totală a file sistem la 16 MB.

  • tmpfs /tmp tmpfs implicite,noatime 0 0
  • tmpfs /var/log valori implicite tmpfs,noatime,size=16m 0 0

Există, de asemenea, un script terț care ajută la configurarea jurnalizării în RAM, care poate fi găsit pe GitHub. Acesta are funcția suplimentară de a descărca jurnalele bazate pe RAM pe disc la un interval predefinit.

Rădăcină doar pentru citire file sisteme

Rădăcina file sistemul (rootfs) este file sistem pe partiția de disc pe care se află directorul rădăcină și este file sistem pe care toate celelalte file Sistemele sunt montate odată cu pornirea sistemului. Pe Raspberry Pi este / și, în mod implicit, este localizat pe cardul SD ca o partiție EXT4 complet citire/scriere. Există, de asemenea, un folder de boot, care este montat ca /boot și este o partiție FAT citire/scriere. Setarea rootfs NUMAI citire previne orice fel de acces la scriere, făcându-l mult mai robust la evenimente de corupere. Cu toate acestea, dacă nu se iau alte măsuri, aceasta înseamnă că nimic nu poate scrie pe file sistem, deci salvarea datelor de orice fel din aplicația dvs. în rootfs este dezactivată. Dacă trebuie să stocați date din aplicația dvs., dar doriți un rootfs doar pentru citire, o tehnică obișnuită este adăugarea unui stick de memorie USB sau a unui fișier similar, care este destinat doar stocării datelor utilizatorului.

NOTA
Dacă utilizați un swap file când se utilizează o funcție doar pentru citire file sistem, va trebui să mutați swap-ul file la o partiție de citire/scriere.

Suprapunere file sistem

O suprapunere file sistem (overlayfs) combină două file sisteme, o parte superioară file sistem și un nivel inferior file sistem. Când există un nume în ambele file sisteme, obiectul din partea superioară file sistemul este vizibil în timp ce obiectul din partea inferioară file sistemul este fie ascuns, fie, în cazul directoarelor, îmbinat cu obiectul superior. Raspberry Pi oferă o opțiune în raspi-config pentru a activa un overlayfs. Aceasta face ca rootfs (inferior) să fie doar pentru citire și creează o memorie superioară bazată pe RAM. file sistem. Aceasta dă un rezultat foarte similar cu cel al funcției doar pentru citire file sistem, toate modificările utilizatorului pierzându-se la repornire. Puteți activa un overlayfs utilizând fie linia de comandă raspi-config, fie aplicația desktop Raspberry Pi Configuration din meniul Preferințe.

Există și alte implementări de overlayfs care pot sincroniza modificările necesare de la partea superioară la cea inferioară. file sistem la un program predeterminat. De exempluampDe exemplu, ați putea copia conținutul folderului principal al unui utilizator de la superior la inferior la fiecare douăsprezece ore. Acest lucru limitează procesul de scriere la un interval de timp foarte scurt, ceea ce înseamnă că probabilitatea de corupere este mult mai mică, dar înseamnă că, dacă se întrerupe alimentarea înainte de sincronizare, orice date generate de la ultima sincronizare se pierd. pSLC pe modulele Compute Memoria eMMC utilizată pe dispozitivele Raspberry Pi Compute Module este MLC (Multi-Level Cell), unde fiecare celulă de memorie reprezintă 2 biți. pSLC, sau pseudo-Single Level Cell, este un tip de tehnologie de memorie flash NAND care poate fi activată în dispozitive de stocare MLC compatibile, unde fiecare celulă reprezintă doar 1 bit. Este concepută pentru a oferi un echilibru între performanța și rezistența memoriei flash SLC și eficiența din punct de vedere al costurilor și capacitatea mai mare a memoriei flash MLC. pSLC are o rezistență la scriere mai mare decât MLC, deoarece scrierea datelor în celule mai rar reduce uzura. În timp ce MLC ar putea oferi între 3,000 și 10,000 de cicluri de scriere, pSLC poate atinge numere semnificativ mai mari, apropiindu-se de nivelurile de rezistență ale SLC. Această rezistență crescută se traduce printr-o durată de viață mai lungă pentru dispozitivele care utilizează tehnologia pSLC în comparație cu cele care utilizează MLC standard.

MLC este mai rentabilă decât memoria SLC, dar, deși pSLC oferă performanțe și rezistență mai bune decât MLC pur, o face în detrimentul capacității. Un dispozitiv MLC configurat pentru pSLC va avea jumătate din capacitatea (sau mai puțin) pe care ar avea-o un dispozitiv MLC standard, deoarece fiecare celulă stochează doar un bit în loc de doi sau mai mulți.

Detalii de implementare

pSLC este implementat pe eMMC ca o zonă de utilizator îmbunătățită (cunoscută și sub numele de stocare îmbunătățită). Implementarea propriu-zisă a zonei de utilizator îmbunătățite nu este definită în standardul MMC, ci este de obicei pSLC.

  • Zona de utilizator îmbunătățită este un concept, în timp ce pSLC este o implementare.
  • pSLC este o modalitate de implementare a Zonei de Utilizator Îmbunătățite.
  • În momentul scrierii acestui articol, eMMC-ul utilizat pe modulele de calcul Raspberry Pi implementează Enhanced User Area folosind pSLC.
  • Nu este nevoie să configurați întreaga zonă de utilizator eMMC ca Zonă de utilizator îmbunătățită.
  • Programarea unei regiuni de memorie ca Zonă de Utilizator Îmbunătățită este o operațiune unică. Aceasta înseamnă că nu poate fi anulată.

Pornind-o
Linux oferă un set de comenzi pentru manipularea partițiilor eMMC în pachetul mmc-utils. Instalați un sistem de operare Linux standard pe dispozitivul CM și instalați instrumentele după cum urmează:

  • sudo apt instalează mmc-utils

Pentru a obține informații despre eMMC (această comandă este direcționată către less, deoarece există destul de multe informații de afișat):

  • sudo mmc extcsd citește /dev/mmcblk0 | mai puțin

 AVERTIZARE
Următoarele operațiuni sunt unice – le puteți executa o singură dată și nu pot fi anulate. De asemenea, ar trebui să le executați înainte de utilizarea Modulului de Calcul, deoarece acestea vor șterge toate datele. Capacitatea eMMC va fi redusă la jumătate din valoarea anterioară.

Comanda utilizată pentru activarea pSLC este mmc enh_area_set, care necesită mai mulți parametri care îi spun în ce zonă de memorie trebuie activat pSLC. Următorul exempluampfolosește întreaga zonă. Consultați ajutorul comenzii mmc (man mmc) pentru detalii despre cum se utilizează un subset al eMMC.

Raspberry Pi-Crearea-unui-Pi-Mai-RezilientFile-Sistem-

După ce dispozitivul repornește, VA TREBUI să reinstalați sistemul de operare, deoarece activarea pSLC va șterge conținutul eMMC.

Software-ul Raspberry Pi CM Provisioner are o opțiune de a seta pSLC în timpul procesului de aprovizionare. Aceasta poate fi găsită pe GitHub la adresa https://github.com/raspberrypi/cmprovision.

  • În afara dispozitivului file sisteme / bootare din rețea
    Raspberry Pi poate porni printr-o conexiune de rețea, de exempluampfolosind rețeaua File Sistem (NFS). Aceasta înseamnă că odată ce dispozitivul și-a finalizat primatage boot, în loc să încarce kernelul și root-ul file sistem de pe cardul SD, acesta este încărcat de pe un server de rețea. Odată pornit, toate file Operațiunile acționează pe server și nu pe cardul SD local, care nu are niciun rol suplimentar în proceduri.
  • Soluții cloud
    În zilele noastre, multe sarcini de birou au loc în browser, toate datele fiind stocate online în cloud. Stocarea datelor în afara cardului SD poate îmbunătăți evident fiabilitatea, cu prețul necesității unei conexiuni permanente la internet, precum și a posibilelor taxe de la furnizorii de cloud. Utilizatorul poate utiliza fie o instalare completă a sistemului de operare Raspberry Pi, cu browserul optimizat pentru Raspberry Pi, pentru a accesa oricare dintre serviciile cloud de la furnizori precum Google, Microsoft, Amazon etc. O alternativă este unul dintre furnizorii de clienți subțiri, care înlocuiesc sistemul de operare Raspberry Pi cu un sistem de operare/o aplicație care rulează din resurse stocate pe un server central în loc de cardul SD. Clienții subțiri funcționează prin conectarea de la distanță la un mediu de calcul bazat pe server, unde sunt stocate majoritatea aplicațiilor, datelor sensibile și memoriei.

Concluzii

Când sunt urmate procedurile corecte de oprire, stocarea pe cardul SD al Raspberry Pi este extrem de fiabilă. Acest lucru funcționează bine în mediul de acasă sau de la birou, unde oprirea poate fi controlată, dar atunci când se utilizează dispozitive Raspberry Pi în cazuri de utilizare industrială sau în zone cu o sursă de alimentare nesigură, precauții suplimentare pot îmbunătăți fiabilitatea.

Pe scurt, opțiunile pentru îmbunătățirea fiabilității pot fi enumerate după cum urmează:

  • Folosește un card SD cunoscut și fiabil.
  • Reduceți scrierile folosind timpi de validare mai lungi, utilizând funcții temporare file sisteme, folosind un overlayfs sau ceva similar.
  • Folosește stocare externă, cum ar fi bootarea în rețea sau stocarea în cloud.
  • Implementați un program de înlocuire a cardurilor SD înainte ca acestea să ajungă la sfârșitul duratei de viață.
  • Folosește un UPS.

Raspberry Pi este o marcă comercială a Raspberry Pi Ltd
Raspberry Pi Ltd

Colofon
© 2020-2023 Raspberry Pi Ltd (fostă Raspberry Pi (Trading) Ltd.)
Această documentație este licențiată sub licența Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND).

  • data construcției: 2024
  • versiune-build: githash: 3e4dad9-clean

Notificare legală de declinare a răspunderii
DATELE TEHNICE ȘI DE FIABILITATE PENTRU PRODUSELE RASPBERRY PI (INCLUSIV FIȘE DE TEHNICE) MODIFICATE DIN CANCEL CU CANDIDAT (“RESURSE”) SUNT FURNIZATE DE RASPBERRY PI LTD (“RPL”) „CA AȚI” ȘI ORICE GARANȚII EXPRESE SAU IMPLICITE, INCLUSIV, DAR NU LIMITATE PENTRU, GARANȚIA IMPLICITĂ DE VANTABILITATE ȘI ADECUAREA PENTRU UN ANUMIT SCOP SUNT RENUNCIATE. ÎN MĂSURA MAXIMĂ PERMISĂ DE LEGEA APLICABILĂ ÎN NICIO CAZ RPL NU VA FI RESPONSABILĂ PENTRU ORICE DAUNE DIRECTE, INDIRECTE, INCIDENTALE, SPECIALE, EXEMPLARE SAU CONSECUȚIONALE (INCLUSIV, DAR FĂRĂ A SE LIMITĂ LA, ACHIZIȚIA DE BUNURI DE SUBSTITUȚIE, PIERDERI DE DATE DE SERVICII; , SAU PROFIT; SAU ÎNTRERUPERARE A AFACERII) ORICARE CAUZATE ȘI PE ORICE TEORIE A RĂSPUNDERII, FIEA ÎN CONTRACT, RESPONSABILITATE STRICTĂ SAU DELICIT (INCLUSIV NEGLIGENȚA SAU ALLT MAL) DECORIT ÎN ORICE MOD DIN UTILIZAREA RESURSELOR, CHIAR CU PRIVIRE A RESURSELOR. DE ASEMENEA DAUNE.

RPL își rezervă dreptul de a efectua orice îmbunătățiri, corecții sau alte modificări ale RESURSELE sau ale oricăror produse descrise în acestea, în orice moment și fără notificare ulterioară. RESURSELE sunt destinate utilizatorilor calificați cu niveluri adecvate de cunoștințe de proiectare. Utilizatorii sunt singurii responsabili pentru selecția și utilizarea RESURSELE și pentru orice aplicație a produselor descrise în acestea. Utilizatorul este de acord să despăgubească și să exonereze RPL de orice răspundere, cost, daune sau alte pierderi care decurg din utilizarea RESURSELE. RPL acordă utilizatorilor permisiunea de a utiliza RESURSELE exclusiv în conjuncție cu produsele Raspberry Pi. Orice altă utilizare a RESURSELE este interzisă. Nu se acordă nicio licență pentru niciun alt drept de proprietate intelectuală al RPL sau al altor terți.

ACTIVITĂȚI CU RISC RIDICAT. Produsele Raspberry Pi nu sunt proiectate, fabricate sau destinate utilizării în medii periculoase care necesită performanțe de siguranță, cum ar fi în operarea instalațiilor nucleare, a sistemelor de navigație sau comunicații ale aeronavelor, a controlului traficului aerian, a sistemelor de armament sau a aplicațiilor critice pentru siguranță (inclusiv sisteme de susținere a vieții și alte dispozitive medicale), în care defectarea produselor ar putea duce direct la deces, vătămări corporale sau daune fizice sau de mediu grave („Activități cu Risc Ridicat”). RPL declină în mod specific orice garanție expresă sau implicită de adecvare pentru Activități cu Risc Ridicat și nu își asumă nicio răspundere pentru utilizarea sau includerea produselor Raspberry Pi în Activități cu Risc Ridicat. Produsele Raspberry Pi sunt furnizate în conformitate cu Termenii Standard ai RPL. Furnizarea RESURSELE de către RPL nu extinde sau modifică în alt mod Termenii Standard ai RPL, inclusiv, dar fără a se limita la, declinările de responsabilitate și garanțiile exprimate în aceștia.

Întrebări frecvente

  • Î: Ce produse Raspberry Pi sunt acceptate de acest document?
    R: Acest document se aplică diverselor produse Raspberry Pi, inclusiv Pi 0 W, Pi 1 A/B, Pi 2 A/B, Pi 3, Pi 4, Pi 400, CM1, CM3, CM4, CM5 și Pico.
  • Î: Cum pot reduce șansele de corupere a datelor pe dispozitivul meu Raspberry Pi?
    A: Puteți reduce coruperea datelor prin minimizarea operațiunilor de scriere, în special a activităților de înregistrare în jurnal, și prin ajustarea timpilor de validare pentru file sistem așa cum este descris în acest document.

Documente/Resurse

Raspberry Pi devine mai rezistent File Sistem [pdfGhid de utilizare
Pi 0, Pi 1, Creșterea rezistenței File Sistem, mai rezistent File Sistem, Rezilient File Sistem, File Sistem

Referințe

Lasă un comentariu

Adresa ta de e-mail nu va fi publicată. Câmpurile obligatorii sunt marcate *