Raspberry Pi postaje otporniji File Sistem
Obim dokumenta
Ovaj dokument se odnosi na sljedeće Raspberry Pi proizvode:
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 | Sve | Sve | Sve | Sve | Sve | Sve | Sve |
* | * | * | * | * | * | * | * | * | * | * | * | * | * |
|
Uvod
Raspberry Pi Ltd uređaji se često koriste kao uređaji za pohranu i nadzor podataka, često na mjestima gdje može doći do iznenadnih nestanaka struje. Kao i kod bilo kojeg računarskog uređaja, nestanci struje mogu uzrokovati oštećenje memorije. Ovaj dokument pruža neke opcije o tome kako spriječiti oštećenje podataka u ovim i drugim okolnostima odabirom odgovarajućih... file sisteme i postavke kako bi se osigurao integritet podataka. Ovaj dokument pretpostavlja da Raspberry Pi koristi operativni sistem (OS) Raspberry Pi (Linux) i da je u potpunosti ažuriran s najnovijim firmverom i kernelima.
Šta je korupcija podataka i zašto se javlja?
Oštećenje podataka odnosi se na nenamjerne promjene u računarskim podacima koje se događaju tokom pisanja, čitanja, pohranjivanja, prijenosa ili obrade. U ovom dokumentu mislimo samo na pohranjivanje, a ne na prijenos ili obradu. Do oštećenja može doći kada se proces pisanja prekine prije nego što se završi, na način koji sprječava završetak pisanja, na primjerampako nestane struje. U ovom trenutku je vrijedno dati kratak uvod u to kako Linux OS (i, po proširenju, Raspberry Pi OS) upisuje podatke u memoriju. Linux obično koristi keš memoriju za pohranu podataka koji se trebaju zapisati u memoriju. One keširaju (privremeno pohranjuju) podatke u memoriju sa slučajnim pristupom (RAM) dok se ne dostigne određeni unaprijed definirani limit, u kom trenutku se svi preostali upisi na medij za pohranu vrše u jednoj transakciji. Ovi unaprijed definirani limiti mogu biti vezani za vrijeme i/ili veličinu. Na primjerampTj. podaci se mogu keširati i zapisivati u memoriju samo svakih pet sekundi ili zapisivati samo kada se akumulira određena količina podataka. Ove sheme se koriste za poboljšanje performansi: pisanje velikog dijela podataka odjednom je brže od pisanja mnogo malih dijelova podataka.
Međutim, ako se napajanje prekine između pohranjivanja podataka u keš memoriju i njihovog zapisivanja, ti podaci se gube. Drugi mogući problemi nastaju kasnije u procesu pisanja, tokom fizičkog pisanja podataka na medij za pohranu. Nakon što hardver (npr.amptj. interfejsu Secure Digital (SD) kartice se kaže da piše podatke, i dalje je potrebno ograničeno vrijeme da se ti podaci fizički pohrane. Opet, ako dođe do nestanka struje tokom tog izuzetno kratkog perioda, moguće je da se podaci koji se zapisuju oštete. Prilikom isključivanja računarskog sistema, uključujući Raspberry Pi, najbolja praksa je koristiti opciju isključivanja. Ovo će osigurati da se svi keširani podaci zapišu i da je hardver imao vremena da zapravo zapiše podatke na medij za pohranu. SD kartice koje koristi većina Raspberry Pi uređaja odlične su kao jeftine zamjene za tvrde diskove, ali su podložne kvarovima tokom vremena, ovisno o tome kako se koriste. Fleš memorija koja se koristi u SD karticama ima ograničen vijek trajanja ciklusa pisanja i kako se kartice približavaju tom ograničenju, mogu postati nepouzdane. Većina SD kartica koristi postupak koji se naziva izjednačavanje istrošenosti kako bi se osiguralo da traju što je duže moguće, ali na kraju mogu otkazati. To može biti od mjeseci do godina, ovisno o tome koliko je podataka zapisano na karticu ili (što je još važnije) izbrisano s kartice. Ovaj vijek trajanja može se dramatično razlikovati između kartica. Kvar SD kartice obično se javlja slučajnim file oštećenja jer dijelovi SD kartice postaju neupotrebljivi.
Postoje i drugi načini na koje se podaci mogu oštetiti, uključujući, ali ne ograničavajući se na, neispravan medij za pohranu, greške u softveru za pisanje podataka (drajveri) ili greške u samim aplikacijama. Za potrebe ovog dokumenta, svaki proces kojim može doći do gubitka podataka definira se kao događaj korupcije.
Šta može uzrokovati operaciju pisanja?
Većina aplikacija vrši neku vrstu pisanja u memoriju, na primjerampinformacije o konfiguraciji le-a, ažuriranja baze podataka i slično. Neke od ovih filemogu čak biti i privremeni, tj. korišteni samo dok je program pokrenut, i ne zahtijevaju održavanje tokom ciklusa isključivanja/deaktiviranja napajanja; međutim, oni i dalje rezultiraju pisanjem na medij za pohranu. Čak i ako vaša aplikacija zapravo ne zapisuje nikakve podatke, Linux će u pozadini stalno vršiti pisanje na medij za pohranu, uglavnom zapisujući informacije o zapisivanju.
Hardverska rješenja
Iako nije u potpunosti u okviru ovog dokumenta, vrijedi spomenuti da je sprječavanje neočekivanih nestanaka napajanja često korištena i dobro shvaćena mjera ublažavanja gubitka podataka. Uređaji poput neprekidnih izvora napajanja (UPS) osiguravaju da napajanje ostane stabilno i, ako UPS izgubi napajanje, dok je napajan iz baterije, može obavijestiti računarski sistem da je nestanak napajanja neizbježan kako bi se gašenje moglo glatko nastaviti prije nego što se rezervno napajanje isprazni. Budući da SD kartice imaju ograničen vijek trajanja, korisno je imati režim zamjene koji osigurava da se SD kartice zamijene prije nego što dostignu kraj svog vijeka trajanja.
Robustan file sistemima
Postoje različiti načini na koje se Raspberry Pi uređaj može zaštititi od oštećenja. Oni se razlikuju po svojoj sposobnosti sprječavanja oštećenja, pri čemu svaka radnja smanjuje vjerovatnoću da se ono dogodi.
- Smanjenje broja zapisa
Jednostavno smanjenje količine pisanja koju vaše aplikacije i Linux OS obavljaju može imati blagotvoran učinak. Ako vršite puno zapisivanja u dnevnik (logging), povećava se vjerovatnoća da će se zapisivanje dogoditi tokom događaja oštećenja. Smanjenje zapisivanja u vašoj aplikaciji zavisi od krajnjeg korisnika, ali se zapisivanje u Linuxu također može smanjiti. Ovo je posebno relevantno ako koristite fleš memoriju (npr. eMMC, SD kartice) zbog njihovog ograničenog životnog ciklusa pisanja. - Promjena vremena potvrđivanja (commit)
Vrijeme izvršenja za file Sistem predstavlja količinu vremena tokom koje kešira podatke prije nego što ih sve kopira u memoriju. Povećanje ovog vremena poboljšava performanse grupiranjem velikog broja zapisa, ali može dovesti do gubitka podataka ako dođe do oštećenja prije nego što se podaci zapišu. Smanjenje vremena potvrđivanja podataka značit će manju vjerovatnoću da će oštećenje dovesti do gubitka podataka, iako ga ne sprječava u potpunosti.
Da biste promijenili vrijeme potvrđivanja za glavni EXT4 file sistem na Raspberry Pi OS-u, potrebno je urediti \etc\fstab file koji definiše kako file Sistemi se montiraju prilikom pokretanja. - $sudo nano /etc/fstab
Dodajte sljedeće u EXT4 unos za root file sistem:
- commit=
Dakle, fstab može izgledati otprilike ovako, gdje je vrijeme commit-a postavljeno na tri sekunde. Vrijeme commit-a će biti podrazumijevano pet sekundi ako nije posebno postavljeno.
Privremeno file sistemima
Ako aplikacija zahtijeva privremeno file pohranu, tj. podatke koji se koriste samo dok je aplikacija pokrenuta i nije ih potrebno spremati prilikom gašenja, onda je dobra opcija za sprječavanje fizičkog pisanja u pohranu korištenje privremene file sistem, tmpfs. Jer ovi file Sistemi su bazirani na RAM-u (zapravo, u virtuelnoj memoriji), svi podaci zapisani u tmpfs nikada se ne zapisuju u fizičku memoriju i stoga ne utiču na vijek trajanja fleš memorije i ne mogu se oštetiti u slučaju kvara.
Kreiranje jedne ili više tmpfs lokacija zahtijeva uređivanje /etc/fstab datoteke file, koji kontroliše sve file sistemi pod Raspberry Pi OS-om. Sljedeći primjerample zamjenjuje lokacije za pohranu podataka /tmp i /var/log s privremenim file lokacije sistema. Drugi bivšiample, koja zamjenjuje standardnu mapu za evidentiranje, ograničava ukupnu veličinu file sistem na 16MB.
- tmpfs /tmp tmpfs podrazumijevane vrijednosti, bez vremena 0 0
- tmpfs /var/log tmpfs zadane vrijednosti, vrijeme zadržavanja, veličina=16m 0 0
Postoji i skript treće strane koji pomaže u postavljanju zapisivanja zapisa u RAM, a može se pronaći na GitHub-u. On ima dodatnu funkciju zapisivanja zapisa iz RAM-a na disk u unaprijed definiranim intervalima.
Korijen samo za čitanje file sistemima
Korijen file sistem (rootfs) je file sistem na particiji diska na kojoj se nalazi korijenski direktorij, i to je file sistem na kojem su svi ostali file Sistemi se montiraju prilikom pokretanja sistema. Na Raspberry Pi-ju to je /, i prema zadanim postavkama se nalazi na SD kartici kao potpuno čitaj/pisaj EXT4 particija. Postoji i folder za pokretanje, koji je montiran kao /boot i predstavlja FAT particiju za čitaj/pisaj. Postavljanje rootfs-a SAMO za čitanje sprečava bilo kakav pristup pisanju u njega, čineći ga mnogo otpornijim na događaje oštećenja. Međutim, osim ako se ne preduzmu druge radnje, to znači da ništa ne može pisati u... file sistem uopće, tako da je spremanje podataka bilo koje vrste iz vaše aplikacije u rootfs onemogućeno. Ako trebate pohraniti podatke iz svoje aplikacije, ali želite rootfs samo za čitanje, uobičajena tehnika je dodavanje USB memorijskog stika ili sličnog uređaja koji služi samo za pohranjivanje korisničkih podataka.
NAPOMENA
Ako koristite zamjenu file kada se koristi samo za čitanje file sistem, morat ćete premjestiti swap file na particiju za čitanje/pisanje.
Overlay file sistem
Prekrivanje file sistem (overlayfs) kombinuje dva file sistemi, gornji file sistem i niži file sistem. Kada ime postoji u oba file sistemi, objekat u gornjem file sistem je vidljiv dok je objekat u donjem file Sistem je ili skriven ili, u slučaju direktorija, spojen s gornjim objektom. Raspberry Pi pruža opciju u raspi-config-u za omogućavanje overlayfs-a. Ovo čini rootfs (donji) samo za čitanje i stvara gornji objekt baziran na RAM-u. file sistem. Ovo daje vrlo sličan rezultat kao i kod opcije samo za čitanje file sistem, pri čemu će sve korisničke promjene biti izgubljene prilikom ponovnog pokretanja. Overlayfs možete omogućiti pomoću komandne linije raspi-config ili pomoću aplikacije Raspberry Pi Configuration na desktopu u meniju Preferences.
Postoje i druge implementacije overlayf-ova koje mogu sinhronizovati potrebne promjene od gornjeg ka donjem nivou. file sistem po unaprijed određenom rasporedu. Na primjerampNa primjer, možete kopirati sadržaj korisnikove početne mape iz gornjeg u donji direktorij svakih dvanaest sati. Ovo ograničava proces pisanja na vrlo kratak vremenski period, što znači da je oštećenje mnogo manje vjerovatno, ali znači da ako se napajanje izgubi prije sinhronizacije, svi podaci generirani od posljednjeg će biti izgubljeni. pSLC na Compute modulima eMMC memorija koja se koristi na Raspberry Pi Compute Module uređajima je MLC (Multi-Level Cell), gdje svaka memorijska ćelija predstavlja 2 bita. pSLC, ili pseudo-Single Level Cell, je vrsta NAND fleš memorijske tehnologije koja se može omogućiti u kompatibilnim MLC uređajima za pohranu, gdje svaka ćelija predstavlja samo 1 bit. Dizajnirana je da obezbijedi ravnotežu između performansi i izdržljivosti SLC fleš memorije i isplativosti i većeg kapaciteta MLC fleš memorije. pSLC ima veću izdržljivost pisanja od MLC-a jer rjeđe pisanje podataka u ćelije smanjuje habanje. Dok MLC može ponuditi oko 3,000 do 10,000 ciklusa pisanja, pSLC može postići znatno veće brojeve, približavajući se nivoima izdržljivosti SLC-a. Ova povećana izdržljivost se prevodi u duži vijek trajanja uređaja koji koriste pSLC tehnologiju u poređenju sa onima koji koriste standardnu MLC.
MLC je isplativija od SLC memorije, ali iako pSLC nudi bolje performanse i izdržljivost od čistog MLC-a, to čini na štetu kapaciteta. MLC uređaj konfigurisan za pSLC imat će polovinu kapaciteta (ili manje) koji bi imao kao standardni MLC uređaj, budući da svaka ćelija pohranjuje samo jedan bit umjesto dva ili više.
Detalji implementacije
pSLC je implementiran na eMMC-u kao Enhanced User Area (također poznato kao Enhanced storage). Stvarna implementacija Enhanced User Area nije definirana u MMC standardu, ali je obično pSLC.
- Poboljšano korisničko područje je koncept, dok je pSLC implementacija.
- pSLC je jedan od načina implementacije poboljšanog korisničkog područja.
- U trenutku pisanja ovog teksta, eMMC koji se koristi na Raspberry Pi Compute modulima implementira Enhanced User Area koristeći pSLC.
- Nema potrebe konfigurirati cijelo korisničko područje eMMC-a kao prošireno korisničko područje.
- Programiranje memorijske regije da bude prošireno korisničko područje je jednokratna operacija. To znači da se ne može poništiti.
Uključujući ga
Linux pruža skup naredbi za manipulisanje eMMC particijama u paketu mmc-utils. Instalirajte standardni Linux OS na CM uređaj i instalirajte alate na sljedeći način:
- sudo apt install mmc-utils
Da biste dobili informacije o eMMC-u (ova naredba se prebacuje u less jer ima dosta informacija za prikaz):
- sudo mmc extcsd čitanje /dev/mmcblk0 | less
UPOZORENJE
Sljedeće operacije su jednokratne – možete ih pokrenuti jednom i ne mogu se poništiti. Također ih trebate pokrenuti prije nego što se Compute Module upotrijebi, jer će izbrisati sve podatke. Kapacitet eMMC-a će se smanjiti na polovinu prethodne vrijednosti.
Komanda koja se koristi za uključivanje pSLC-a je mmc enh_area_set, koja zahtijeva nekoliko parametara koji joj govore koliko memorijskog prostora treba omogućiti pSLC. Sljedeći primjerample koristi cijelo područje. Za detalje o korištenju podskupa eMMC-a pogledajte pomoć za mmc naredbu (man mmc).
Nakon što se uređaj ponovo pokrene, MORAT ćete ponovo instalirati operativni sistem, jer će omogućavanje pSLC-a izbrisati sadržaj eMMC-a.
Softver Raspberry Pi CM Provisioner ima opciju za postavljanje pSLC-a tokom procesa opskrbe. To se može pronaći na GitHub-u na https://github.com/raspberrypi/cmprovision.
- Izvan uređaja file pokretanje sistema / mreže
Raspberry Pi se može pokrenuti preko mrežne veze, na primjerampkorištenje mreže File Sistem (NFS). To znači da nakon što uređaj završi svoje prvetage boot, umjesto učitavanja kernela i root-a file sistem sa SD kartice, učitava se sa mrežnog servera. Nakon pokretanja, svi file Operacije se odvijaju na serveru, a ne na lokalnoj SD kartici, koja ne igra daljnju ulogu u postupku. - Cloud rješenja
Danas se mnogi kancelarijski zadaci odvijaju u pretraživaču, a svi podaci se pohranjuju online u oblaku. Pohranjivanje podataka van SD kartice očigledno može poboljšati pouzdanost, nauštrb potrebe za stalnom internet vezom, kao i mogućih troškova od strane provajdera cloud usluga. Korisnik može koristiti potpunu instalaciju Raspberry Pi OS-a, s pretraživačem optimiziranim za Raspberry Pi, za pristup bilo kojoj od cloud usluga dobavljača kao što su Google, Microsoft, Amazon itd. Alternativa je jedan od provajdera tankih klijenata, koji zamjenjuju Raspberry Pi OS operativnim sistemom/aplikacijom koja radi s resursa pohranjenih na centralnom serveru umjesto SD kartice. Tanki klijenti rade tako što se daljinski povezuju s računarskim okruženjem baziranim na serveru gdje se pohranjuje većina aplikacija, osjetljivih podataka i memorije.
Zaključci
Kada se slijede ispravne procedure gašenja, pohrana na SD karticu Raspberry Pi-ja je izuzetno pouzdana. Ovo dobro funkcionira u kućnom ili uredskom okruženju gdje se gašenje može kontrolirati, ali kada se Raspberry Pi uređaji koriste u industrijskoj upotrebi ili u područjima s nepouzdanim napajanjem, dodatne mjere opreza mogu poboljšati pouzdanost.
Ukratko, opcije za poboljšanje pouzdanosti mogu se navesti na sljedeći način:
- Koristite dobro poznatu i pouzdanu SD karticu.
- Smanjite broj upisa korištenjem dužeg vremena potvrđivanja (commit), korištenjem privremenih file sisteme, koristeći overlayfs ili nešto slično.
- Koristite pohranu izvan uređaja, kao što je mrežno pokretanje ili pohrana u oblaku.
- Uvedite režim zamjene SD kartica prije nego što im istekne vijek trajanja.
- Koristite UPS.
Raspberry Pi je zaštitni znak kompanije Raspberry Pi Ltd
Raspberry Pi Ltd
Kolofon
© 2020-2023 Raspberry Pi Ltd (ranije Raspberry Pi (Trading) Ltd.)
Ova dokumentacija je licencirana pod Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND).
- datum izgradnje: 2024.
- verzija-build-a: githash: 3e4dad9-clean
Pravno obaveštenje o odricanju od odgovornosti
TEHNIČKE PODATKE I POUZDANOST ZA PROIZVODE RASPBERRY PI (UKLJUČUJUĆI LISTE PODATAKA) KOJE SE S VREMENA NA VREME MODIFIKUJU (“RESURSI”) OBEZBEĐUJE RASPBERRY PI LTD (“RPL”) “KAKO JESU” I BILO KOJI IZRIČITO, NJ. DA SE IMPLICIRANE GARANCIJE O PRODAJNOSTI I PRIKLADNOSTI ZA ODREĐENU NAMJENU ODRIČE. U MAKSIMALNOJ MERI KOJI JE DOZVOLJENO VAŽEĆIM ZAKONOM NI U KOJEM SLUČAJU RPL NEĆE BITI ODGOVORAN ZA BILO KAKVE DIREKTNE, INDIREKTNE, SLUČAJNE, POSEBNE, PRIMJERNE ILI POSLJEDIČNE ŠTETE (UKLJUČUJUĆI, DA GODINE, ALI KOJI SE ODGOVARAJU GUBITAK KORIŠĆENJA, PODATAKA , ILI DOBITAKA; ILI PREKIDA POSLOVANJA) KOJI BI BILO UZROK I NA BILO KOJOJ TEORIJI ODGOVORNOSTI, BILO U UGOVORU, STROGOJ ODGOVORNOSTI ILI DEŽITNOM DELATKU (UKLJUČUJUĆI NEMAR ILI NA DRUGAČIJEG DRŽAVE) KOJI NASTAJE NA BILO KOJI NAČIN BILO KOJI IZ NJEGA ILITY TAKVE ŠTETE.
RPL zadržava pravo da izvrši bilo kakva poboljšanja, ispravke ili bilo koje druge izmjene RESURS-a ili bilo kojeg proizvoda opisanog u njima u bilo kojem trenutku i bez prethodne najave. RESURSI su namijenjeni vještim korisnicima s odgovarajućim nivoima znanja o dizajnu. Korisnici su isključivo odgovorni za svoj odabir i korištenje RESURSA i bilo kakvu primjenu proizvoda opisanih u njima. Korisnik se slaže da obešteti i zaštiti RPL od svih obaveza, troškova, šteta ili drugih gubitaka koji proizlaze iz njihovog korištenja RESURSA. RPL daje korisnicima dozvolu da koriste RESURSE isključivo u kombinaciji s Raspberry Pi proizvodima. Svaka druga upotreba RESURSA je zabranjena. Ne dodjeljuje se nikakva licenca za bilo koje drugo RPL ili pravo intelektualnog vlasništva treće strane.
AKTIVNOSTI VISOKOG RIZIKA. Raspberry Pi proizvodi nisu dizajnirani, proizvedeni niti namijenjeni za upotrebu u opasnim okruženjima koja zahtijevaju sigurne performanse, kao što je rad nuklearnih postrojenja, navigacijski ili komunikacijski sistemi za avione, kontrola zračnog prometa, sistemi naoružanja ili sigurnosno kritične aplikacije (uključujući sisteme za održavanje života i druge medicinske uređaje), u kojima bi kvar proizvoda mogao direktno dovesti do smrti, tjelesnih ozljeda ili teške fizičke ili ekološke štete („Aktivnosti visokog rizika“). RPL se posebno odriče bilo kakve izričite ili implicitne garancije o pogodnosti za aktivnosti visokog rizika i ne preuzima nikakvu odgovornost za upotrebu ili uključivanje Raspberry Pi proizvoda u aktivnosti visokog rizika. Raspberry Pi proizvodi se pružaju u skladu sa Standardnim uslovima RPL-a. RPL-ovo pružanje RESURSA ne proširuje niti na drugi način mijenja Standardne uslove RPL-a, uključujući, ali ne ograničavajući se na odricanja odgovornosti i garancije izražene u njima.
Često postavljana pitanja
- P: Koje Raspberry Pi proizvode podržava ovaj dokument?
A: Ovaj dokument se odnosi na različite Raspberry Pi proizvode, uključujući Pi 0 W, Pi 1 A/B, Pi 2 A/B, Pi 3, Pi 4, Pi 400, CM1, CM3, CM4, CM5 i Pico. - P: Kako mogu smanjiti šanse za oštećenje podataka na mom Raspberry Pi uređaju?
A: Oštećenje podataka možete smanjiti minimiziranjem operacija pisanja, posebno aktivnosti evidentiranja, i prilagođavanjem vremena potvrđivanja za file sistem kako je opisano u ovom dokumentu.
Dokumenti / Resursi
![]() |
Raspberry Pi postaje otporniji File Sistem [pdf] Korisnički priručnik Pi 0, Pi 1, stvaranje otpornijeg File Sistem, otporniji File Sistem, otporan File sistem, File Sistem |