Όλα για την υγεία της κάρτας SD στο Raspberry Pi

Υγεία της κάρτας SD

Η κάρτα SD είναι - δίπλα στην τροφοδοσία ρεύματος - ένα κρίσιμο πρόσθετο εξάρτημα του Raspberry Pi. Η παρακολούθηση της υγείας της είναι πολύ σημαντική για να διασφαλιστεί η ομαλή λειτουργία του λειτουργικού συστήματος του Raspberry Pi και η καλή εμπειρία χρήσης. Αυτό το άρθρο θα σας δείξει διάφορους τρόπους για να ελέγξετε και να παρακολουθήσετε την υγεία της κάρτας microSD.

Αρχικά, θα δώσω μια λεπτομερή επισκόπηση του τρόπου λειτουργίας των καρτών μνήμης, ώστε να κατανοήσετε τις δυνατότητες και τους περιορισμούς του ελέγχου της κατάστασης της κάρτας SD.

Στη συνέχεια θα σας εξηγήσω πώς να προστατεύσετε την κάρτα microSD μειώνοντας τα κοινά προβλήματα που αντιμετωπίζουν οι χρήστες του Raspberry Pi. Θα αναφερθούμε επίσης στις καλύτερες μάρκες καρτών microSD για Raspberry Pi που προτείνουμε.

Αν θέλετε, μπορείτε επίσης να προχωρήσετε πιο κάτω, για να λάβετε μόνο τις εντολές Linux για να ελέγξετε την τρέχουσα κατάσταση της κάρτας microSD.

Βασικά στοιχεία: Μέσα στην κάρτα microSD

Εσωτερική κάρτα microSD
Εικόνα: Εικόνα του εσωτερικού μιας κάρτας SD. Η κάρτα microSD έχει παρόμοια δομή. Πηγή εικόνας: CC-BY-SA Korpsvart, Wikimedia Commons

Η κάρτα microSD περιέχει ένα τσιπ μνήμης flash (στα αριστερά της εικόνας) και έναν μικροελεγκτή (στα δεξιά της εικόνας, συνήθως βασισμένο σε ARM).

Flash

Η μνήμη flash αποθηκεύει πληροφορίες με "παγίδευση" ηλεκτρονίων, τα οποία "εγχέονται" με τη χρήση υψηλής τάσης μέσω ενός μη αγωγού σε ένα λεγόμενο κυμαινόμενη πύλη(**). Τα ηλεκτρόνια αποτελούν έτσι μέρος ενός τρανζίστορ που μπορεί να επιτρέπει ή να μην επιτρέπει τη ροή συνδεδεμένου ρεύματος, ανάλογα με το φορτίο της πλωτής πύλης. Θεωρητικά, δεν μπορούν να διαρρεύσουν, επειδή η πλωτή πύλη είναι ηλεκτρικά απομονωμένη. Αυτό σημαίνει ότι οι πληροφορίες παραμένουν ακόμα και μετά την απενεργοποίηση της παροχής ρεύματος.

Η πληροφορία διαβάζεται πάντα μεταξύ πηγής (S) και αποστράγγισης (D). Τα ηλεκτρόνια που εισάγονται στην πλωτή πύλη αυξάνουν π.χ. την τάση κατωφλίου του τρανζίστορ, ξεκινώντας από την οποία θα ρέει ρεύμα. Το τρανζίστορ στη συνέχεια μπλοκάρει σε μια κανονική τάση ανάγνωσης (δεν αγωγιμοποιείται).

Για τον προγραμματισμό της πλωτής πύλης απαιτούνται σημαντικά υψηλότερες ηλεκτρικές τάσεις (π.χ. 10 V) από ό,τι για την κανονική λειτουργία ανάγνωσης (π.χ. 3,3 V). Για να γίνει αυτό, επιπλέον η πύλη ελέγχου (V1/V2/V3) παίζει καθοριστικό ρόλο.

Για να διαγραφούν τα πάντα, η πύλη ελέγχου οδηγεί ηλεκτρόνια έξω από την πλωτή πύλη εφαρμόζοντας υψηλή αρνητική τάση.

Τα στοιχεία NAND flash που χρησιμοποιούνται στις κάρτες microSD ομαδοποιούν τα μεμονωμένα τρανζίστορ μνήμης σε σελίδες και αρκετές από τις σελίδες σε μπλοκ. Μια σελίδα έχει μεταξύ 512 και 8192 bytes, ένα μπλοκ μπορεί να περιέχει έως και 256 σελίδες (επομένως συνολικά 2048 kB με μέγεθος σελίδας 8kB).

Η εγγραφή (για ένα λογικό "1") μπορεί να γίνει ανά bit ή τουλάχιστον ανά byte/λέξη. Η διαγραφή (για ένα λογικό "0") μπορεί να γίνει μόνο κατά μπλοκ. Εάν υπάρχει κάποια αμετάβλητη πληροφορία, πρέπει να προγραμματιστεί ξανά.

Οι μνήμες flash έχουν περιορισμένη διάρκεια ζωής λόγω του προγραμματισμού και της διαγραφής, την οποία υπολογίζουμε σε κύκλους διαγραφής.

Ο λόγος για την περιορισμένη διάρκεια ζωής είναι η καταστροφή του μονωτικού στρώματος οξειδίου, το οποίο προστατεύει την πλωτή πύλη από τη διαρροή φορτίου, που προκαλείται από τις υψηλές τάσεις. Μόλις αυτό το στρώμα γίνει αγώγιμο, το κύτταρο μνήμης δεν μπορεί να συγκρατήσει περισσότερες πληροφορίες.

Παρεμπιπτόντως: Κύτταρα μνήμης πολλαπλών επιπέδων

Αρχικά, υπήρχαν μόνο δύο καταστάσεις φορτίου (1 bit πληροφορίας) ανά κύτταρο μνήμης. Τώρα, χάρη στις πολλές κυμαινόμενες πύλες ανά τρανζίστορ, τα κύτταρα μνήμης πολλαπλών επιπέδων αποθηκεύουν διαφορετικές καταστάσεις φόρτισης και συνεπώς αρκετά bits ανά τρανζίστορ μνήμης. Κατά τη διάρκεια της ανάγνωσης, το σύστημα αξιολογεί πώς το εφαρμοζόμενο ρεύμα διοχετεύεται διαφορετικά από το τρανζίστορ.

Από τη μία πλευρά, αυτό καθιστά δυνατή τη σημαντική αύξηση της πυκνότητας των κυψελών μνήμης, αλλά από την άλλη πλευρά, η ανάγνωση είναι πιο αργή και οι κυψέλες μνήμης αντιδρούν πολύ πιο ευαίσθητα με σφάλματα bit στις απώλειες φορτίου. Με τα κύτταρα ενός επιπέδου είναι δυνατοί 100.000 έως 1.000.000 κύκλοι εγγραφής-διαγραφής, ενώ με τα TLC (κύτταρα τριπλού επιπέδου με τρία bit ανά κύτταρο μνήμης) περίπου 1000 κύκλοι εγγραφής-διαγραφής.

Αυτός είναι ο λόγος που οι βιομηχανικές κάρτες SD έχουν συνήθως μικρότερη πυκνότητα μνήμης και χρησιμοποιούν SLC (single level cells), για καλύτερη ακεραιότητα δεδομένων..

Ο ελεγκτής

Το έργο του ελεγκτή είναι να διαχειρίζεται το φλας, και ιδίως να εκτελεί εξισορρόπηση φθοράς και διόρθωση σφαλμάτων ανάγνωσης. Οι επιδόσεις και η μακροζωία της κάρτας microSD εξαρτώνται καθοριστικά από τους αλγόριθμους που χρησιμοποιούνται στον ελεγκτή.

Η μνήμη flash δεν μπορεί να επανεγγραφεί όσο συχνά απαιτείται λόγω ζημίας στο μονωτικό στρώμα οξειδίου των πλωτών πυλών, όπως περιγράφεται παραπάνω. Για να αποφύγετε τη ζημιά σε μεμονωμένες περιοχές που χρησιμοποιούνται ιδιαίτερα συχνά, ο ελεγκτής μεταβάλλει τη φυσική κατανομή στα μπλοκ που μπορούν να διευθυνσιοδοτηθούν λογικά από το σύστημα αρχείων (= wear leveling).

Αυτή η διαφοροποίηση της φυσικής κατανομής είναι επίσης ο λόγος που ο έλεγχος εγγραφής της κάρτας SD (γράφοντας και διαβάζοντας με εργαλεία bad block tools, κλπ.) δεν θα εντοπίσει τα πραγματικά bad blocks και δεν θα σας επιτρέψει να τα αποφύγετε σε επίπεδο λειτουργικού συστήματος / συστήματος αρχείων! Μόνο ο ελεγκτής μνήμης flash στο εσωτερικό της κάρτας microSD γνωρίζει σε ποιο μπλοκ γράφεται / διαβάζεται κάθε στιγμή, και όπως συζητήθηκε αυτό μπορεί να αλλάξει με την πάροδο του χρόνου.

Τα ελαττωματικά μπλοκ (bad blocks) είναι ήδη παρόντα στην ολοκαίνουργια μνήμη flash. Αυτά τα ελαττωματικά μπλοκ επισημαίνονται σε μια ειδική περιοχή της μνήμης flash.

Διαχειρίζονται επίσης πληροφορίες διόρθωσης σφαλμάτων για μεμονωμένα μπλοκ, έτσι ώστε τα σφάλματα ανάγνωσης να μπορούν να διορθωθούν με αθροίσματα ελέγχου. Ο ελεγκτής προσθέτει τα μπλοκ με ομαδοποιημένα σφάλματα ανάγνωσης στον κατάλογο των κακών μπλοκ και μετατοπίζει την πραγματική φυσική κατανομή του λογικού μπλοκ.

Η κάρτα microSD διαθέτει συνήθως - ανάλογα με τον κατασκευαστή - περίπου 10% εφεδρική χωρητικότητα για την αντικατάσταση των κακών μπλοκ με καλά "εφεδρικά μπλοκ".

Μικρά βρώμικα μυστικά: προβλήματα μνήμης Flash

Η διαγραφή γίνεται μόνο με τη φορά των δεικτών του μπλοκ

Τα δεδομένα μπορούν να διαγραφούν μόνο μπλοκ προς μπλοκ. Η διαγραφή καταπονεί τα κύτταρα μνήμης και μειώνει τη διάρκεια ζωής τους - δημιουργούνται νέα κακά μπλοκ.

Ελαττωματικά μπλοκ από το εργοστάσιο

Οι μνήμες flash αποστέλλονται ήδη με ελαττωματικά μπλοκ. Κατά τη διάρκεια της λειτουργίας, προστίθενται και άλλα ελαττωματικά μπλοκ (bad blocks). Συνεπώς, ο ελεγκτής προσπαθεί να εγγράφει/διαγράφει μπλοκ όσο το δυνατόν πιο ομοιόμορφα κατανεμημένα μέσω της εξισορρόπησης φθοράς.

MLC και TLC ιδιαίτερα ευαίσθητες

Οι κυψέλες μνήμης πολλαπλών επιπέδων (MLC) μειώνουν τον αριθμό των κύκλων διαγραφής και συνεπώς τη μακροπρόθεσμη αξιοπιστία.

Διαβάστε Ενοχλήστε

Ένα φαινόμενο που δεν έχω αναφέρει ακόμη, αλλά είναι ιδιαίτερα ύπουλο, είναι Διαβάστε Ενοχλήστε. Ακόμα και όταν διαβάζει μόνο από την κάρτα, μπορεί -μόνο με την ανάγνωση- να προκαλέσει την αλλαγή του προγραμματισμού των γειτονικών κελιών μνήμης στο ίδιο μπλοκ. Η πιθανότητα να συμβεί αυτό αυξάνεται απότομα μετά από μερικές 100.000 αναγνώσεις.

Για να αποφευχθεί η διαταραχή ανάγνωσης, ο ελεγκτής καταγράφει τον αριθμό των προσβάσεων σε ένα μπλοκ, ώστε να το αντιγράψει μονοσήμαντα σε μια νέα θέση όταν υπερβεί ένα όριο και να διαγράψει το αρχικό μπλοκ. Μετά από αυτό, το μπλοκ μπορεί να επαναχρησιμοποιηθεί και πάλι.

Όλα αυτά είναι πράγματα που ένας ελεγκτής πρέπει να αντισταθμίσει για να μας προσποιηθεί ότι είναι μια "τέλεια κάρτα μνήμης" εξωτερικά, ενώ στο εσωτερικό της κάθε άλλο παρά τέλεια φαίνεται!

Τέλος, τα κομμάτια που γράφονται με ακτίνες Χ θα μπορούσαν να σβηστούν ακούσια. Εδώ, μόνο ένας ασφαλής σχεδιασμός της κάρτας με ακτίνες Χ μπορεί να διασφαλίσει ότι τα δεδομένα παραμένουν ανέπαφα.

Κατασκευαστής & επιλογή μιας καλής κάρτας

Τόσο ο μικροελεγκτής και η συσκευή flash όσο και η τελική κάρτα microSD μπορούν να προέρχονται από διαφορετικούς κατασκευαστές - η κάρτα SD της Panasonic στη φωτογραφία του παραδείγματος έχει flash της Samsung. Ο ελεγκτής κατασκευάστηκε στην Ιαπωνία.

Υπάρχουν τέσσερις κατασκευαστές που παράγουν συσκευές NAND flash:

  • Samsung <- ηγέτης της αγοράς
  • Toshiba
  • IM Flash Technologies (κοινοπραξία Micron Technology & Intel)
  • Hynix σε συνεργασία με την Numonyx

Η Toshiba και η Samsung παράγουν την πλειονότητα όλων των τσιπ.

SanDisk (συνιστάται)

Η SanDisk και η Toshiba έχουν κοινοπραξία για την κατασκευή flash. Ωστόσο, το 2009, η SanDisk μεταβίβασε τα δικαιώματα των εργοστασίων παραγωγής στην Toshiba για να γίνει κατασκευαστής μνήμης flash χωρίς εργοστάσιο. Εξακολουθούν να συνεργάζονται όσον αφορά την ανάπτυξη της μνήμης. Η SanDisk και η Toshiba, μαζί με την Matshushita, είναι οι ιδρυτές του προτύπου SD, το οποίο εισήχθη το 1999. Η SanDisk δημιούργησε επίσης το πρότυπο microSD.

Βασιζόμαστε στη μάρκα SanDisk εδώ και πολύ καιρό και είχαμε πολύ καλές εμπειρίες μαζί της μέχρι τώρα.

Samsung (συνιστάται)

Συνιστούμε επίσης κάρτες μνήμης Samsung. Ως ηγέτης της αγοράς στον τομέα του NAND flash, η Samsung μπορεί να ταιριάξει τέλεια όλα τα συστατικά της κάρτας SD μεταξύ τους και διαθέτει όλες τις απαραίτητες πληροφορίες για ένα αξιόπιστο προϊόν.

Kingston (ΔΕΝ συνιστάται)

Είχαμε μια κακή εμπειρία με την αξιοπιστία των καρτών Kingston 128 GB σε ένα κρίσιμο έργο. Η Kingston δεν διαθέτει δικά της εργοστάσια και αγοράζει πλεονάζουσα χωρητικότητα από άλλους κατασκευαστές flash. Ως αποτέλεσμα, δεν υπάρχει καμία εγγύηση για σταθερή απόδοση.

Τα ακόλουθα άρθρο του Bunny Huang είναι επίσης ενδιαφέρουσα σε αυτό το πλαίσιο.

Toshiba

Η Toshiba, ως #2 στην παγκόσμια αγορά DRAM, πωλεί επίσης τα δικά της προϊόντα καρτών μνήμης. Η SanDisk και η Toshiba, μαζί με την Matshushita, είναι οι θεμελιωτές του προτύπου SD, το οποίο εισήχθη το 1999. Δεν έχουμε καμία εμπειρία με τις κάρτες της Toshiba μέχρι στιγμής.

Transcend / Silicon Power

Έχουμε επίσης χρησιμοποιήσει κάρτες Transcend και Silicon Power, ειδικά στην κατηγορία χαμηλού κόστους. Οι κάρτες είναι βασικά καλές, αλλά έχουμε δει υψηλότερες επιστροφές/ελαττώματα με την Transcend από ό,τι με τη SanDisk. Για κρίσιμα έργα, θα συνιστούσα επομένως μάλλον την SanDisk / Samsung.

Επιλογή καλής κάρτας μνήμης

Για να επιλέξετε μια καλή κάρτα μνήμης, το πρώτο πράγμα που πρέπει να κάνετε είναι να επιλέξετε τον κατασκευαστή. Συνιστούμε Samsung ή SanDisk, και ενδεχομένως η Toshiba, για τη λίστα των υποψήφιων.

Στη συνέχεια, η κατηγορία μνήμης είναι σημαντική. Αυτή η κλάση υποδεικνύει την ταχύτερη ταχύτητα εγγραφής ανά μπλοκ. Δεν είναι η ταχύτητα εγγραφής για διάσπαρτες εγγραφές τυχαίας προσπέλασης, η οποία έχει μεγαλύτερη σημασία σε πραγματικές εφαρμογές.

Μια υψηλότερη κατηγορία είναι πιο ακριβή, αλλά συνιστάται λόγω της σημαντικής αύξησης των επιδόσεων. Συνήθως αποστέλλουμε κάρτες κατηγορίας 10.

Στο αυτή η επισκόπηση στο eLinux.org, μπορείτε να ελέγξετε μια κατάλληλη κάρτα μνήμης για συμβατότητα με το Raspberry Pi σας. Σημαντική σημείωση: τροποποιούν συνεχώς το firmware του Raspberry Pi για καλύτερη συμβατότητα με τις κάρτες μνήμης και για την αποφυγή καταστροφής δεδομένων.

Θα πρέπει να παραγγείλετε από αξιόπιστες πηγές - για παράδειγμα, παίρνουμε τις κάρτες SanDisk microSD απευθείας από την Raspberry Pi Trading και από αξιόπιστους, μεγάλους Γερμανούς διανομείς. Στο Amazon, φροντίστε να παραγγείλετε απευθείας από το Amazon και όχι από έναν έμπορο λιανικής πώλησης στην αγορά.

Ορισμένες πληροφορίες (cid, csd, ημερομηνία, manfid, oemid, serial) της κάρτας microSD μπορεί να διαβαστεί με το Linux για να ελέγξετε ότι έχετε λάβει τον σωστό κατασκευαστή. Παραδείγματα με μια κάρτα Transcend:

cd /sys/class/mmc_host/mmc?/mmc?:*
echo "man:$(cat manfid) oem:$(cat oemid) name:$(cat name) hwrev:$(cat hwrev) fwrev:$(cat fwrev)"
 man:0x000074 oem:0x4a60 name:USD hwrev:0x1 fwrev:0x0
echo "serial:$(cat serial) mdt:$(cat date)"
serial:0x401e39f2 mdt:03/2017

Το αναγνωριστικό κατασκευαστή (manfid) ανατίθεται από SD-3C LLC, καθώς και το αναγνωριστικό cOem/εφαρμογής (oemid). Το oemid προσδιορίζει τον ΚΑΕ της κάρτας ή/και το περιεχόμενο της κάρτας.

Το όνομα του προϊόντος (όνομα) έχει μήκος 5 χαρακτήρων (ASCII). hwrev είναι η αναθεώρηση του υλικού, και fwrev την αναθεώρηση του υλικολογισμικού. Μαζί αποτελούν την αναθεώρηση προϊόντος (hwrev.fwrev).

Το σειριακή είναι ο σειριακός αριθμός της κάρτας microSD, είναι ένα πεδίο 32bit που διαβάζεται ως ακέραιος αριθμός χωρίς πρόσημο.

Το mdt (Ημερομηνία κατασκευής) υποδεικνύει πότε κατασκευάστηκε η κάρτα - έτος και μήνας.

Μπορείτε να συγκρίνετε τις τιμές με ιστοσελίδες για τον εντοπισμό απάτης από πλαστές κάρτες microSD. Συνιστώ να διαβάσετε Το άρθρο στο blog του Bunny (ένα) και αυτό το άρθρο (δύο).

Σταθερό man/oem συνδυασμοί ενός εμπορικού σήματος υποδηλώνουν μια καλά ελεγχόμενη και συνεπή αλυσίδα εφοδιασμού. Για παράδειγμα, η SanDisk έχει τον ακόλουθο συνδυασμό για όλες τις καταχωρήσεις στο eLinux.org Wiki: man:0x000003 oem:0x5344. Άλλες μάρκες, όπως η Transcend, διαφοροποιούν τους προμηθευτές τους, οπότε η σταθερή ποιότητα δεν είναι σίγουρη.

Αποφυγή αλλοίωσης δεδομένων κατά τη λειτουργία

Η κάρτα microSD είναι ο "σκληρός δίσκος" του Raspberry Pi. Με μια κανονική διαμόρφωση του Linux, λειτουργεί όπως ένας κανονικός σκληρός δίσκος - πραγματοποιούνται προσπελάσεις τόσο ανάγνωσης όσο και εγγραφής. Το Linux καταγράφει πληροφορίες σε πολλά αρχεία καταγραφής και, μεταξύ άλλων, ενημερώνει τους χρόνους πρόσβασης στα αρχεία. Έτσι, τα δεδομένα αλλάζουν συχνά. Αυτό είναι κάτι για το οποίο οι κάρτες microSD δεν σχεδιάστηκαν εξαρχής.

Συμβουλή #1: Κλείστε το Raspberry Pi σωστά και χρησιμοποιήστε ένα καλό τροφοδοτικό

Ούτε έναν υπολογιστή με Windows θα αποσυνδέατε από την πρίζα. Με τους υπολογιστές Linux, και ειδικά με τα Raspberry Pi που υποστηρίζονται από κάρτες microSD, είναι θέμα χρόνου... πριν από την καταστροφή δεδομένων κατά τη διάρκεια διακοπών ρεύματος.

Το Linux διαθέτει κρυφές μνήμες ανάγνωσης-εγγραφής για να επιταχύνει τις λειτουργίες αρχείων. Όταν απλά αποσυνδέετε την τροφοδοσία από το Pi, μπορεί να χάσετε τις πληροφορίες στις κρυφές μνήμες εγγραφής που δεν έχουν φτάσει στη microSD.

Όπως αναφέρθηκε προηγουμένως, ο ελεγκτής microSD μετατοπίζει ενεργά τα δεδομένα κατά τη διάρκεια της λειτουργίας για την εξισορρόπηση της φθοράς και την αποφυγή διαταραχών στην ανάγνωση. Αυτό συμβαίνει εν αγνοία του συστήματος Linux ("διαφανές"). Και ανάλογα με τον κατασκευαστή, περισσότερο ή λιγότερο συντηρητικά. Επίσης, εδώ - ειδικά κατά τη διάρκεια των λειτουργιών εγγραφής! - μπορεί να προκύψουν ζημιές και απώλειες δεδομένων.

Επομένως, θα πρέπει να βεβαιωθείτε ότι, αφού κλείσετε το Pi σας, η λυχνία ACT-LED του Raspberry Pi σταματά να αναβοσβήνει και μόνο τότε τραβήξτε το ρεύμα.

Ένα κακό τροφοδοτικό μπορεί επίσης να οδηγήσει σε προβλήματα λόγω διακοπές ρεύματος (υπόταση). Εάν έχετε αμφιβολίες, χρησιμοποιήστε το τροφοδοτικό που συνιστάται/προμηθεύεται από την Raspberry Pi Trading.

Συμβουλή #2 Σύστημα μόνο για ανάγνωση με επικαλύψεις

Ένα σύστημα μόνο για ανάγνωση δεν προστατεύει την κάρτα SD από την ενόχληση της ανάγνωσης και, συνεπώς, από τη γήρανση λόγω των απαραίτητων κύκλων διαγραφής. Ωστόσο, αυτό συμβαίνει πολύ πιο αργά από ό,τι όταν γίνεται ενεργή εγγραφή.

Ένα σύστημα αρχείων μόνο για ανάγνωση έχει και άλλα πλεονεκτήματα, για παράδειγμα λιγότερους ελέγχους του συστήματος αρχείων κατά την εκκίνηση.

Ειδικά τα ενσωματωμένα συστήματα - δηλαδή τα συστήματα που εξυπηρετούν έναν συγκεκριμένο σκοπό σε μια εφαρμογή (π.χ. ψηφιακή σήμανση) δεν χρειάζονται απαραίτητα τη δυνατότητα συνεχούς εγκατάστασης νέου λογισμικού και τήρησης ακριβών αρχείων καταγραφής στο χώρο. Μπορείτε να στέλνετε τα αρχεία καταγραφής μέσω δικτύου σε έναν κεντρικό διακομιστή (με καθυστέρηση, εάν είναι απαραίτητο), και για τις ενημερώσεις του συστήματος το σύστημα μπορεί να τεθεί σε κατάσταση συντήρησης για την εφαρμογή των ενημερώσεων.

Ακολουθούν μερικές πληροφορίες από το πρόγραμμα Debian στο οποίο βασίζεται το Raspbian: https://wiki.debian.org/ReadonlyRoot.

Χρησιμοποιώντας επικαλύψεις δίσκου RAM (στο tmpfs), ένα σύστημα μπορεί να εξακολουθεί να γράφει αρχεία καταγραφής ή να πραγματοποιεί αλλαγές σε αρχεία. Μπορείτε να συγχρονίζετε περιοδικά τις επικαλύψεις του δίσκου RAM με ειδικά καθορισμένες κατατμήσεις στην κάρτα SD. Θα πρέπει να είστε προσεκτικοί με το δίσκο RAM, ώστε να μην υπερχειλίσει (λόγω των αρχείων καταγραφής), και φυσικά υπάρχει λιγότερη μνήμη RAM διαθέσιμη για κανονικές δραστηριότητες.

Χρησιμοποιούμε αυτή την τεχνική με το προϊόν μας Anonymebox, όπου πρέπει να υποτεθεί ότι οι χρήστες απλώς το αποσυνδέουν από την πρίζα.

Ψάχνετε για έναν συνεργάτη που θα υλοποιήσει μια σταθερή λύση μόνο για ανάγνωση για το ενσωματωμένο έργο σας Raspberry Pi; Εμείς (ως pi3g e.K.) προσφέρουμε συμβουλευτικές & αναπτυξιακές υπηρεσίες, για υλικό και λογισμικό.

Συμβουλή #3 Μείωση των λειτουργιών εγγραφής

Ειδικά με τους παλαιότερους πυρήνες, το Linux ενημερώνει το χρόνο πρόσβασης για κάθε πρόσβαση σε αρχείο, σύμφωνα με το πρότυπο POSIX. Αυτό σημαίνει ότι κάθε λειτουργία ανάγνωσης οδηγεί αυτόματα σε λειτουργία εγγραφής. Υπάρχει η δυνατότητα να ορίσετε ρητά noatime στο /etc/fstab αν δεν το έχετε ήδη ορίσει (το Raspbian φαίνεται να το ορίζει αυτόματα).

Περισσότερες πληροφορίες σχετικά με relatime και noatime

Απενεργοποίηση της καταγραφής συστήματος με χρήση μάσκας:

systemctl mask systemd-journald.service
Δημιουργήθηκε συμβολικός σύνδεσμος από το αρχείο /etc/systemd/system/systemd-journald.service στο αρχείο /dev/null.
sudo systemctl mask rsyslog.service
Δημιουργήθηκε συμβολικός σύνδεσμος από το αρχείο /etc/systemd/system/rsyslog.service στο αρχείο /dev/null.

Φυσικά, θα πρέπει να εξεταστούν λεπτομερώς και άλλα αρχεία καταγραφής που δημιουργούνται από άλλες εφαρμογές, καθώς και οι συνέπειες της απενεργοποίησης αυτών των υπηρεσιών (π.χ. η διακοπή της εκκίνησης ορισμένων υπηρεσιών).

Ανταλλαγή αρχείου:

Εάν δεν υπάρχει αρκετή μνήμη RAM, το Linux μετακινεί μεμονωμένες περιοχές RAM σε ένα αρχείο SWAP. (Σκεφτείτε να χρησιμοποιήσετε ένα Raspberry Pi 4 με αρκετή μνήμη RAM, για παράδειγμα το Pi 4 / 4 GB ή το Pi 4/8 GB για τη δική σας περίπτωση χρήσης.) Με την ακόλουθη εντολή, μπορείτε να ελέγξετε την κατάσταση του αρχείου SWAP:

sudo systemctl status dphys-swapfile
● dphys-swapfile.service - LSB: Αυτόματη δημιουργία και χρήση αρχείου swap
Φορτωμένο: φορτωμένο (/etc/init.d/dphys-swapfile)
Ενεργό: ενεργό (εξήλθε) από το Sat 2017-07-01 19:11:57 UTC; 8min ago
 498 ExecStart=/etc/init.d/dphys-swapfile start (code=exited, status=0/SUCCESS)

Μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή για να απενεργοποιήσετε το SWAP:

sudo systemctl disable dphys-swapfile

Συμπέρασμα

οι κάρτες microSD σε συνεχή χρήση θέτουν σε σκληρή δοκιμασία τη μακροπρόθεσμη αξιοπιστία των συστημάτων που βασίζονται στο Raspberry Pi.

Με τη χρήση του κατάλληλου τροφοδοτικού, συστημάτων μόνο για ανάγνωση με επικαλύψεις, τη συνεπή μείωση των λειτουργιών εγγραφής και την επιλογή μιας καλής κάρτας SD από γνωστή μάρκα, μπορείτε να αυξήσετε τη σταθερότητα μακροπρόθεσμα.

Εάν χρειάζεστε επαγγελματική υποστήριξη για το έργο/προϊόν σας που βασίζεται στο Raspberry Pi, παρακαλούμε επικοινωνήστε μαζί μας για μια δωρεάν αρχική διαβούλευση..

Σημειώσεις

(*) Σημείωση: Τα Raspberry Pi 3, 3B+ και 4 μπορούν να εκκινήσουν από μέσο USB ή μέσω δικτύου (Ethernet), χωρίς κάρτα microSD.

Ειδικά για εκκίνηση μέσω δικτύου, συνιστούμε την εγκατάσταση μιας κάρτας microSD με ειδικό υλικολογισμικό, επειδή ένα σφάλμα timeout στον κώδικα εκκίνησης εμποδίζει τη σταθερή εκκίνηση (Raspberry Pi 3B).

Οι παραπάνω εξηγήσεις σχετικά με τη δομή της μνήμης flash ισχύουν και για τα στικάκια USB, αφού και αυτά βασίζονται στη μνήμη flash.

(**) Σημείωση: μια ολοένα και περισσότερο χρησιμοποιούμενη εναλλακτική λύση για τις κυμαινόμενες πύλες είναι οι μνήμες flash με παγίδευση φορτίου, η λειτουργική αρχή παραμένει η ίδια. Το κύτταρο flash με παγίδευση φορτίου επιτρέπει υψηλότερες πυκνότητες μνήμης.

Αν θέλετε να μάθετε περισσότερα για τις κάρτες SD με το Raspberry Pi σας, ανατρέξτε στο τα πολλά άρθρα μας που καλύπτουν το θέμα εδώ.

5 Σχόλια

  1. Pete στις Οκτώβριος 13, 2021 στις 8:27 μμ

    Γεια σας,
    υπάρχει τρόπος να ελέγξετε τον ελεγκτή στην κάρτα SD πόσα κακά plocks υπάρχουν;
    Με τον περιοδικό έλεγχο θα ήθελα να δημιουργήσω ένα διάγραμμα τάσης.
    Σας ευχαριστώ για το έργο.
    Χαιρετισμούς,
    Peter

    • unintell στις Νοέμβριος 9, 2022 στις 3:55 μμ

      αυτό θα ήταν αδύνατο για μια κανονική κάρτα SD καταναλωτικής ποιότητας, εκτός αν έχετε το εργαλείο MP για τον συγκεκριμένο χρησιμοποιούμενο ελεγκτή, το οποίο δεν είναι ποτέ διαθέσιμο.
      Θα ήταν δυνατό αν η κάρτα είναι βιομηχανικής ποιότητας και έχει διαθέσιμες πληροφορίες SMART (που καθορίζονται στο αντίστοιχο φύλλο δεδομένων), και στη συνέχεια μπορείτε να γράψετε κάποιο κώδικα για να διαβάσετε τα δεδομένα SMART.
      Αλλά αυτό είναι μόνο η αρχή του PITA. Δεν υπάρχει βιομηχανικό πρότυπο για την παρακολούθηση της υγείας της κάρτας SD, οπότε κάθε κατασκευαστής εφαρμόζει το πρωτόκολλο με διαφορετικό τρόπο και δεν δημοσιεύεται πάντα.
      Η αναφορά SMART ορισμένων κατασκευαστών σας δίνει μόνο ένα ποσοστό του εναπομένοντος χρόνου ζωής της κάρτας, ενώ ορισμένοι παρέχουν πιο λεπτομερείς πληροφορίες, συμπεριλαμβανομένων των δεσμευμένων μπλοκ, των αρχικών κακών μπλοκ, των μεταγενέστερων κακών μπλοκ, του μέγιστου/μέγιστου/αύξημένου αριθμού διαγραφών, του χρόνου ζωής P/E κ.λπ.
      Προς το παρόν έχω καταφέρει να διαβάσω στατιστικά στοιχεία για την υγεία καρτών από τις εταιρείες Lexar, ADATA, ATP, Sandisk, Apacer, Metorage, Delkindevices, SiliconePower, Swissbit και μερικές ακόμη.
      Το κίνητρό μου είναι να σπάσω τις πληροφορίες SMART από φτηνές μεταχειρισμένες βιομηχανικές κάρτες που παράγονται από την Foresee, προς το παρόν έχω καταφέρει να σπάσω τις κάρτες της σειράς MPS/M9M/M9H/D7D/X52/X53 και εξακολουθώ να εργάζομαι σε μερικά ακόμη μοντέλα.

      Ελπίζω να υπάρξει σύντομα ένα βιομηχανικό πρότυπο για τις έξυπνες πληροφορίες της κάρτας SD. Επίσης, το βρήκα διασκεδαστικό ότι ορισμένες κάρτες SD έχουν μεγαλύτερη διάρκεια ζωής TBW από πολλούς SSDs lmao

      • unintell στις Νοέμβριος 9, 2022 στις 4:03 μμ

        Ω, ξέχασα να αναφέρω ότι η πλειοψηφία (αλλά όχι όλες, σκατά.) των καρτών δίνει πληροφορίες SMART μέσω της αποστολής της εντολής CMD56 στην κάρτα με ένα 32bit int όρισμα, θα πρέπει να βρείτε αυτόν τον μαγικό αριθμό από το φύλλο δεδομένων και την αντίστοιχη μορφή δεδομένων για να διαβάσετε τα δεδομένα. Αν έχεις το datasheet, τότε ουσιαστικά έχεις τελειώσει, δες το εργαλείο sdmon στο github για παράδειγμα κώδικα.
        Αν το φύλλο δεδομένων δεν έχει κυκλοφορήσει ή ο μαγικός αριθμός δεν έχει δημοσιευτεί, θα πρέπει να επαναλάβετε ολόκληρο το διάστημα των 31bit(το χαμηλότερο bit είναι πάντα 1) του int για να το σπάσετε με τη βία, και μπορεί να χρειαστείτε 12 ώρες έως μισό μήνα ανάλογα με την τύχη σας. Ελπίζω να μην υπάρχει κάποιος κακός κατασκευαστής που να ξεκινάει τον μαγικό του αριθμό με 0xF_______. Προς το παρόν όλοι οι μαγικοί αριθμοί που έχω καταφέρει να σπάσω/συλλέξω ξεκινούν με 0x1_______.

        Ορισμένες κάρτες απαιτούν μια πιο σύνθετη ρουτίνα για να διαβάσουν τις πληροφορίες SMART, όπως η Apacer, αλλά ευτυχώς που παρέχουν τις απαραίτητες πληροφορίες στο φύλλο δεδομένων. Η Apacer κατασκευάζει κάρτες OEM και για ορισμένες άλλες μάρκες, οπότε ισχύει η ίδια ρουτίνα.

  2. [...] Υγεία της κάρτας SD (περιλαμβάνει βέλτιστες πρακτικές για τη φροντίδα της κάρτας SD!) [...]

  3. [...] Όλα για την υγεία των καρτών SD / microSD στο Raspberry Pi [...]

Αφήστε ένα σχόλιο