Raspberry Pi diventa più resiliente File Sistema
Ambito del documento
Questo documento si applica ai seguenti prodotti 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 | Tutto | Tutto | Tutto | Tutto | Tutto | Tutto | Tutto |
* | * | * | * | * | * | * | * | * | * | * | * | * | * |
|
Introduzione
I dispositivi Raspberry Pi Ltd vengono spesso utilizzati come dispositivi di archiviazione e monitoraggio dei dati, spesso in luoghi in cui possono verificarsi improvvise interruzioni di corrente. Come con qualsiasi dispositivo informatico, le interruzioni di corrente possono causare la corruzione dei dati. Questo white paper fornisce alcune opzioni su come prevenire la corruzione dei dati in queste e altre circostanze, selezionando le opzioni appropriate. file Sistemi e configurazioni per garantire l'integrità dei dati. Questo whitepaper presuppone che il Raspberry Pi utilizzi il sistema operativo (OS) Raspberry Pi (Linux) e sia completamente aggiornato con gli ultimi firmware e kernel.
Cos'è la corruzione dei dati e perché si verifica?
Il danneggiamento dei dati si riferisce a modifiche indesiderate nei dati informatici che si verificano durante la scrittura, la lettura, l'archiviazione, la trasmissione o l'elaborazione. In questo documento ci riferiamo solo all'archiviazione, non alla trasmissione o all'elaborazione. Il danneggiamento può verificarsi quando un processo di scrittura viene interrotto prima del suo completamento, impedendo il completamento della scrittura, ad esempioampIn caso di interruzione di corrente, vale la pena fornire una breve introduzione a come il sistema operativo Linux (e, per estensione, il sistema operativo Raspberry Pi) scrive i dati sullo storage. Linux di solito utilizza cache di scrittura per memorizzare i dati da scrivere sullo storage. Queste cache memorizzano temporaneamente i dati nella memoria ad accesso casuale (RAM) fino al raggiungimento di un limite predefinito, al termine del quale tutte le scritture in sospeso sul supporto di memorizzazione vengono eseguite in un'unica transazione. Questi limiti predefiniti possono essere correlati al tempo e/o alle dimensioni. Ad esempioampIn questo caso, i dati possono essere memorizzati nella cache e scritti in memoria solo ogni cinque secondi, oppure scritti solo quando si è accumulata una certa quantità di dati. Questi schemi vengono utilizzati per migliorare le prestazioni: scrivere una grande quantità di dati in una sola volta è più veloce che scrivere molti piccoli blocchi di dati.
Tuttavia, se si verifica un'interruzione di corrente tra la memorizzazione dei dati nella cache e la loro scrittura, tali dati vengono persi. Altri possibili problemi sorgono più avanti nel processo di scrittura, durante la scrittura fisica dei dati sul supporto di memorizzazione. Una volta che un componente hardware (ad esempioampAnche se alla scheda SD (Secure Digital) viene richiesto di scrivere dati, è comunque necessario un tempo limitato affinché tali dati vengano fisicamente archiviati. Anche in questo caso, se si verifica un'interruzione di corrente durante questo periodo estremamente breve, è possibile che i dati in scrittura vengano danneggiati. Quando si spegne un computer, incluso il Raspberry Pi, la procedura consigliata è utilizzare l'opzione di spegnimento. Ciò garantirà che tutti i dati memorizzati nella cache vengano scritti e che l'hardware abbia avuto il tempo di scrivere effettivamente i dati sul supporto di memorizzazione. Le schede SD utilizzate dalla maggior parte dei dispositivi della gamma Raspberry Pi sono ottime come sostituti economici dei dischi rigidi, ma sono soggette a guasti nel tempo, a seconda di come vengono utilizzate. La memoria flash utilizzata nelle schede SD ha una durata limitata dei cicli di scrittura e, man mano che si avvicinano a tale limite, possono diventare inaffidabili. La maggior parte delle schede SD utilizza una procedura chiamata livellamento dell'usura per garantire la massima durata possibile, ma alla fine possono guastarsi. Questo può durare da mesi ad anni, a seconda della quantità di dati scritti o (cosa ancora più importante) cancellati dalla scheda. Questa durata può variare notevolmente tra le schede. Il guasto della scheda SD è solitamente indicato da un errore casuale file corruzioni poiché parti della scheda SD diventano inutilizzabili.
Esistono altri modi in cui i dati possono essere corrotti, tra cui, a titolo esemplificativo ma non esaustivo, supporti di memorizzazione difettosi, bug nel software di scrittura dei dati (driver) o bug nelle applicazioni stesse. Ai fini del presente white paper, qualsiasi processo che possa causare una perdita di dati è definito evento di corruzione.
Cosa può causare un'operazione di scrittura?
La maggior parte delle applicazioni esegue una sorta di scrittura sullo storage, ad esempioampinformazioni di configurazione, aggiornamenti del database e simili. Alcuni di questi filePossono anche essere temporanei, ovvero utilizzati solo durante l'esecuzione del programma, e non richiedono manutenzione durante un ciclo di accensione/spegnimento; tuttavia, generano comunque delle scritture sul supporto di memorizzazione. Anche se l'applicazione non scrive effettivamente alcun dato, in background Linux effettuerà costantemente scritture sul supporto di memorizzazione, principalmente scrivendo informazioni di log.
Soluzioni hardware
Sebbene non rientri pienamente nell'ambito di questo white paper, vale la pena ricordare che prevenire interruzioni di corrente impreviste è una misura di mitigazione comunemente utilizzata e ben compresa contro la perdita di dati. Dispositivi come i gruppi di continuità (UPS) garantiscono che l'alimentazione rimanga stabile e, in caso di interruzione dell'alimentazione dell'UPS, mentre è alimentato a batteria, possono segnalare al sistema informatico che l'interruzione di corrente è imminente, in modo che l'arresto possa procedere correttamente prima che l'alimentazione di backup si esaurisca. Poiché le schede SD hanno una durata limitata, potrebbe essere utile disporre di un regime di sostituzione che garantisca che le schede SD vengano sostituite prima che raggiungano la fine del loro ciclo di vita.
Robust file sistemi
Esistono diversi modi per proteggere un dispositivo Raspberry Pi da eventi di corruzione. La loro capacità di prevenire la corruzione varia, e ogni azione riduce la probabilità che si verifichi.
- Riduzione delle scritture
La semplice riduzione della quantità di scrittura eseguita dalle applicazioni e dal sistema operativo Linux può avere un effetto positivo. Se si esegue un elevato numero di log, aumentano le probabilità che si verifichino scritture durante un evento di danneggiamento. La riduzione del log nell'applicazione è una scelta dell'utente finale, ma anche in Linux è possibile ridurre il log. Questo è particolarmente rilevante se si utilizza un sistema di archiviazione basato su flash (ad esempio eMMC, schede SD) a causa del loro limitato ciclo di vita in scrittura. - Modifica dei tempi di commit
Il tempo di impegno per un file Il tempo di commit del sistema è il tempo per cui memorizza i dati nella cache prima di copiarli tutti sullo storage. Aumentare questo tempo migliora le prestazioni raggruppando un gran numero di scritture, ma può portare alla perdita di dati in caso di danneggiamento prima della scrittura. Ridurre il tempo di commit riduce le probabilità che un danneggiamento porti alla perdita di dati, sebbene non la elimini completamente.
Per modificare il tempo di commit per l'EXT4 principale file sistema su Raspberry Pi OS, è necessario modificare il file \etc\fstab file che definisce come file i sistemi vengono montati all'avvio. - $sudo nano /etc/fstab
Aggiungere quanto segue alla voce EXT4 per la radice file sistema:
- commettere=
Quindi, fstab potrebbe apparire più o meno così, con il tempo di commit impostato a tre secondi. Il tempo di commit sarà predefinito a cinque secondi se non impostato specificamente.
Temporaneo file sistemi
Se un'applicazione richiede un periodo temporaneo file storage, ovvero i dati vengono utilizzati solo mentre l'applicazione è in esecuzione e non è necessario salvarli durante un arresto, quindi una buona opzione per impedire le scritture fisiche sullo storage è utilizzare un temporaneo file sistema, tmpfs. Poiché questi file sono basati su RAM (in realtà, su memoria virtuale), tutti i dati scritti su un tmpfs non vengono mai scritti su un archivio fisico e quindi non influiscono sulla durata della memoria flash e non possono essere danneggiati da un evento di danneggiamento.
La creazione di una o più posizioni tmpfs richiede la modifica del file /etc/fstab file, che controlla tutti i file sistemi con Raspberry Pi OS. Il seguente esempioample sostituisce le posizioni basate sull'archiviazione /tmp e /var/log con temporanee file posizioni del sistema. Il secondo example, che sostituisce la cartella di registrazione standard, limita la dimensione complessiva del file sistema a 16 MB.
- tmpfs /tmp tmpfs impostazioni predefinite,noatime 0 0
- tmpfs /var/log tmpfs valori predefiniti,noatime,dimensione=16m 0 0
Esiste anche uno script di terze parti che aiuta a configurare la registrazione su RAM, disponibile su GitHub. Questo script offre anche la possibilità di scaricare i log su disco a intervalli predefiniti.
Root di sola lettura file sistemi
La radice file sistema (rootfs) è il file sistema sulla partizione del disco su cui si trova la directory radice, ed è il file sistema su cui si basano tutti gli altri file I sistemi vengono montati all'avvio del sistema. Sul Raspberry Pi è /, e di default si trova sulla scheda SD come partizione EXT4 completamente in lettura/scrittura. C'è anche una cartella di avvio, montata come /boot e una partizione FAT in lettura/scrittura. Rendere rootfs in SOLA lettura impedisce qualsiasi tipo di accesso in scrittura, rendendolo molto più resistente agli eventi di corruzione. Tuttavia, a meno che non vengano intraprese altre azioni, questo significa che nulla può scrivere sulla file sistema, quindi il salvataggio di dati di qualsiasi tipo dall'applicazione al rootfs è disabilitato. Se è necessario memorizzare dati dall'applicazione ma si desidera un rootfs di sola lettura, una tecnica comune è quella di aggiungere una chiavetta USB o un dispositivo simile, destinato esclusivamente all'archiviazione dei dati utente.
NOTA
Se stai utilizzando uno swap file quando si utilizza una sola lettura file sistema, sarà necessario spostare lo swap file in una partizione di lettura/scrittura.
Sovrapposizione file sistema
Una sovrapposizione file sistema (overlayfs) combina due file sistemi, un superiore file sistema e un inferiore file sistema. Quando un nome esiste in entrambi file sistemi, l'oggetto nella parte superiore file il sistema è visibile mentre l'oggetto nella parte inferiore file Il sistema è nascosto o, nel caso delle directory, unito all'oggetto superiore. Raspberry Pi offre un'opzione in raspi-config per abilitare un overlayfs. Questo rende il rootfs (inferiore) di sola lettura e crea un file superiore basato su RAM. file sistema. Ciò fornisce un risultato molto simile al sistema di sola lettura file sistema, con tutte le modifiche utente che andranno perse al riavvio. È possibile abilitare un overlayfs utilizzando la riga di comando raspi-config o l'applicazione desktop Raspberry Pi Configuration dal menu Preferenze.
Esistono anche altre implementazioni di overlayfs che possono sincronizzare le modifiche richieste dalla parte superiore a quella inferiore file sistema secondo un programma predeterminato. Per esempioample, potresti copiare il contenuto della cartella home di un utente da superiore a inferiore ogni dodici ore. Questo limita il processo di scrittura a un intervallo di tempo molto breve, il che significa che la corruzione è molto meno probabile, ma significa anche che se l'alimentazione viene interrotta prima della sincronizzazione, tutti i dati generati dall'ultimo vengono persi. pSLC sui moduli Compute La memoria eMMC utilizzata sui dispositivi Raspberry Pi Compute Module è MLC (Multi-Level Cell), in cui ogni cella di memoria rappresenta 2 bit. pSLC, o pseudo-Single Level Cell, è un tipo di tecnologia di memoria flash NAND che può essere abilitata nei dispositivi di archiviazione MLC compatibili, in cui ogni cella rappresenta solo 1 bit. È progettata per fornire un equilibrio tra le prestazioni e la durata della flash SLC e il rapporto costo-efficacia e la maggiore capacità della flash MLC. pSLC ha una durata di scrittura maggiore rispetto a MLC perché la scrittura dei dati sulle celle meno frequente riduce l'usura. Mentre MLC potrebbe offrire da 3,000 a 10,000 cicli di scrittura, pSLC può raggiungere numeri significativamente più elevati, avvicinandosi ai livelli di durata di SLC. Questa maggiore resistenza si traduce in una maggiore durata dei dispositivi che utilizzano la tecnologia pSLC rispetto a quelli che utilizzano la tecnologia MLC standard.
La memoria MLC è più conveniente della memoria SLC, ma sebbene la pSLC offra prestazioni e durata migliori rispetto alla MLC pura, lo fa a scapito della capacità. Un dispositivo MLC configurato per pSLC avrà metà della capacità (o meno) di un dispositivo MLC standard, poiché ogni cella memorizza un solo bit invece di due o più.
Dettagli di implementazione
pSLC è implementato su eMMC come Enhanced User Area (nota anche come Enhanced Storage). L'implementazione effettiva dell'Enhanced User Area non è definita nello standard MMC, ma solitamente è pSLC.
- Enhanced User Area è un concetto, mentre pSLC è un'implementazione.
- pSLC è un modo per implementare l'Enhanced User Area.
- Al momento in cui scriviamo, l'eMMC utilizzato sui moduli di elaborazione Raspberry Pi implementa l'Enhanced User Area tramite pSLC.
- Non è necessario configurare l'intera area utente eMMC come Area utente avanzata.
- La programmazione di una regione di memoria come Area Utente EAU è un'operazione una tantum. Ciò significa che non può essere annullata.
Accendendolo
Linux fornisce un set di comandi per la manipolazione delle partizioni eMMC nel pacchetto mmc-utils. Installare un sistema operativo Linux standard sul dispositivo CM e installare gli strumenti come segue:
- sudo apt install mmc-utils
Per ottenere informazioni sull'eMMC (questo comando viene convogliato in less poiché le informazioni da visualizzare sono parecchie):
- sudo mmc extcsd read /dev/mmcblk0 | meno
AVVERTIMENTO
Le seguenti operazioni sono una tantum: è possibile eseguirle una sola volta e non possono essere annullate. È consigliabile eseguirle prima di utilizzare il Compute Module, poiché cancelleranno tutti i dati. La capacità dell'eMMC verrà ridotta alla metà rispetto al valore precedente.
Il comando utilizzato per attivare pSLC è mmc enh_area_set, che richiede diversi parametri che indicano su quanta area di memoria deve essere attivato il pSLC. Il seguente esempioample utilizza l'intera area. Consultare la guida del comando mmc (man mmc) per i dettagli su come utilizzare un sottoinsieme dell'eMMC.
Dopo il riavvio del dispositivo, SARÀ NECESSARIO reinstallare il sistema operativo, poiché l'abilitazione di pSLC cancellerà il contenuto dell'eMMC.
Il software Raspberry Pi CM Provisioner offre un'opzione per impostare pSLC durante il processo di provisioning. Questa opzione è disponibile su GitHub all'indirizzo https://github.com/raspberrypi/cmprovision.
- Fuori dal dispositivo file sistemi / avvio di rete
Il Raspberry Pi è in grado di avviarsi tramite una connessione di rete, ad esempioample utilizzando la rete File Sistema (NFS). Ciò significa che una volta che il dispositivo ha completato il suo primotage boot, invece di caricare il suo kernel e root file sistema dalla scheda SD, viene caricato da un server di rete. Una volta in esecuzione, tutti file le operazioni vengono eseguite sul server e non sulla scheda SD locale, che non ha alcun ulteriore ruolo nel procedimento. - Soluzioni cloud
Oggigiorno, molte attività d'ufficio si svolgono tramite browser, con tutti i dati archiviati online nel cloud. Mantenere l'archiviazione dei dati al di fuori della scheda SD può ovviamente migliorare l'affidabilità, a scapito della necessità di una connessione Internet sempre attiva e di eventuali costi aggiuntivi da parte dei provider cloud. L'utente può utilizzare un'installazione completa del sistema operativo Raspberry Pi, con il browser ottimizzato per Raspberry Pi, per accedere a qualsiasi servizio cloud di fornitori come Google, Microsoft, Amazon, ecc. Un'alternativa è rappresentata dai provider thin client, che sostituiscono Raspberry Pi OS con un sistema operativo/applicazione eseguito da risorse archiviate su un server centrale anziché sulla scheda SD. I thin client funzionano connettendosi in remoto a un ambiente di elaborazione basato su server in cui sono archiviate la maggior parte delle applicazioni, dei dati sensibili e della memoria.
Conclusioni
Seguendo le corrette procedure di spegnimento, la memoria su scheda SD del Raspberry Pi è estremamente affidabile. Questo funziona bene in ambienti domestici o d'ufficio dove è possibile controllare lo spegnimento, ma quando si utilizzano dispositivi Raspberry Pi in ambito industriale o in aree con alimentazione elettrica inaffidabile, ulteriori precauzioni possono migliorare l'affidabilità.
In breve, le opzioni per migliorare l'affidabilità possono essere elencate come segue:
- Utilizzare una scheda SD affidabile e conosciuta.
- Ridurre le scritture utilizzando tempi di commit più lunghi, utilizzando temporaneo file sistemi, utilizzando un overlayfs o simili.
- Utilizzare un archivio esterno al dispositivo, ad esempio l'avvio di rete o l'archiviazione su cloud.
- Implementare un regime per sostituire le schede SD prima che raggiungano la fine del loro ciclo di vita.
- Utilizzare un UPS.
Raspberry Pi è un marchio registrato di Raspberry Pi Ltd
Raspberry Pi Ltd
Colofone
© 2020-2023 Raspberry Pi Ltd (ex Raspberry Pi (Trading) Ltd.)
La presente documentazione è rilasciata con licenza Creative Commons Attribuzione - Non opere derivate 4.0 Internazionale (CC BY-ND).
- data di costruzione: 2024/06/25
- versione build: githash: 3e4dad9-clean
Avviso di esclusione di responsabilità legale
I DATI TECNICI E DI AFFIDABILITÀ DEI PRODOTTI RASPBERRY PI (COMPRESE LE SCHEDE TECNICHE) COME MODIFICATI DI VOLTA IN VOLTA ("RISORSE") SONO FORNITI DA RASPBERRY PI LTD ("RPL") "COSÌ COME SONO" E QUALSIASI GARANZIA ESPLICITA O IMPLICITA, INCLUSE, MA NON LIMITATE A, LE GARANZIE IMPLICITE DI COMMERCIABILITÀ E IDONEITÀ PER UNO SCOPO PARTICOLARE SONO ESCLUSE. NELLA MISURA MASSIMA CONSENTITA DALLA LEGGE APPLICABILE IN NESSUN CASO RPL SARÀ RESPONSABILE PER DANNI DIRETTI, INDIRETTI, INCIDENTALI, SPECIALI, ESEMPLARI O CONSEQUENZIALI (COMPRESI, MA NON LIMITATI A, APPROVVIGIONAMENTO DI BENI O SERVIZI SOSTITUTIVI; PERDITA DI UTILIZZO, DATI , O UTILI; O INTERRUZIONE AZIENDALE) COMUNQUE CAUSATI E SU QUALSIASI TEORIA DI RESPONSABILITÀ, SIA CONTRATTUALE, OGGETTIVA, O ILLECITA (INCLUSA NEGLIGENZA O ALTRO) DERIVANTI IN QUALSIASI MODO DALL'UTILIZZO DELLE RISORSE, ANCHE SE AVVISATI DELLA POSSIBILITÀ DI TALI DANNI.
RPL si riserva il diritto di apportare miglioramenti, correzioni o altre modifiche alle RISORSE o a qualsiasi prodotto in esse descritto in qualsiasi momento e senza preavviso. Le RISORSE sono destinate a utenti esperti con un adeguato livello di conoscenza della progettazione. Gli utenti sono gli unici responsabili della selezione e dell'utilizzo delle RISORSE e di qualsiasi applicazione dei prodotti in esse descritti. L'utente accetta di indennizzare e tenere indenne RPL da qualsiasi responsabilità, costo, danno o altra perdita derivante dall'utilizzo delle RISORSE. RPL concede agli utenti l'autorizzazione a utilizzare le RISORSE esclusivamente in combinazione con i prodotti Raspberry Pi. Qualsiasi altro utilizzo delle RISORSE è vietato. Non viene concessa alcuna licenza su alcun altro diritto di proprietà intellettuale di RPL o di terze parti.
ATTIVITÀ AD ALTO RISCHIO. I prodotti Raspberry Pi non sono progettati, fabbricati o destinati all'uso in ambienti pericolosi che richiedono prestazioni a prova di guasto, come nel funzionamento di impianti nucleari, sistemi di navigazione aerea o di comunicazione, controllo del traffico aereo, sistemi d'arma o applicazioni critiche per la sicurezza (inclusi sistemi di supporto vitale e altri dispositivi medici), in cui il guasto dei prodotti potrebbe causare direttamente morte, lesioni personali o gravi danni fisici o ambientali ("Attività ad Alto Rischio"). RPL declina espressamente qualsiasi garanzia espressa o implicita di idoneità per Attività ad Alto Rischio e non si assume alcuna responsabilità per l'uso o l'inclusione di prodotti Raspberry Pi in Attività ad Alto Rischio. I prodotti Raspberry Pi sono forniti in base ai Termini Standard di RPL. La fornitura delle RISORSE da parte di RPL non amplia né modifica in alcun modo i Termini Standard di RPL, incluse, a titolo esemplificativo ma non esaustivo, le esclusioni di responsabilità e le garanzie in essi espresse.
Domande frequenti
- D: Quali prodotti Raspberry Pi sono supportati da questo documento?
R: Questo documento si applica a vari prodotti Raspberry Pi, tra cui Pi 0 W, Pi 1 A/B, Pi 2 A/B, Pi 3, Pi 4, Pi 400, CM1, CM3, CM4, CM5 e Pico. - D: Come posso ridurre il rischio di danneggiamento dei dati sul mio dispositivo Raspberry Pi?
A: È possibile ridurre il danneggiamento dei dati riducendo al minimo le operazioni di scrittura, in particolare le attività di registrazione, e regolando i tempi di commit per il file sistema come descritto nel presente documento.
Documenti / Risorse
![]() |
Raspberry Pi diventa più resiliente File Sistema [pdf] Guida utente Pi 0, Pi 1, Rendere un essere più resiliente File Sistema, più resiliente File Sistema, resiliente File Sistema, File Sistema |