Ich bin nicht besonders daran interessiert, eine USB-Festplatte zu kaufen, aber mir ist bewusst, dass SD-Karten nicht für viele Lese- und Schreibwiederholungen geeignet sind.
Gibt es irgendwelche Schritte, die ich unternehmen kann, um die Lebensdauer meiner SD-Karte zu verlängern, während sie von meinem Raspberry Pi verwendet wird?
sd-card
durability
Sehr unregelmäßig
quelle
quelle
Antworten:
Diese Methoden sollten die Lebensdauer der SD-Karte verlängern, indem die Anzahl der Lese- / Schreibvorgänge auf verschiedene Weise minimiert wird:
Swap deaktivieren
Beim Austauschen wird ein Teil der SD-Karte als flüchtiger Speicher verwendet. Dies erhöht den verfügbaren RAM, führt jedoch zu einer hohen Anzahl von Lese- / Schreibvorgängen. Es ist unwahrscheinlich, dass die Leistung signifikant gesteigert wird.
Deaktiviere Swap mit dem
swapoff
Befehl:Sie müssen auch verhindern, dass es nach einem Neustart wieder angezeigt wird:
sudo apt-get remove dphys-swapfile
dauerhaft entfernen. Am besten zu entfernen, da das Setzen vonCONF_SWAPSIZE
auf 0, wie in dieser Antwort erläutert , nicht funktioniert und nach dem Neustart immer noch eine 100-MB-Auslagerungsdatei erstellt./etc/fstab
Journaling im Dateisystem deaktivieren
Die Verwendung eines Journal-Dateisystems wie
ext3
oderext4
OHNE Journal ist eine Option zum Verringern von Lese- / Schreibzugriffen. Der offensichtliche Nachteil der Verwendung eines Dateisystems mit deaktivierter Journalfunktion ist der Datenverlust aufgrund einer nicht ordnungsgemäßen Bereitstellung (z. B. nach einem Stromausfall, Kernel-Sperrung usw.).Sie können das Journaling deaktivieren,
ext3
indem Sie es als einbindenext2
.Sie können die Aufzeichnung
ext4
auf einem nicht bereitgestellten Laufwerk wie folgt deaktivieren :Die Noatime-Mount-Flagge
Weisen Sie Partitionen, die sich auf der SD-Karte befinden, das Noatime-Mount-Flag zu, indem Sie es dem Optionsabschnitt der Partition in hinzufügen
/etc/fstab
.Verzeichnisse im RAM
Häufig verwendete Verzeichnisse wie
/var/tmp/
und können möglicherweise/var/log
wie folgt in den Arbeitsspeicher/etc/fstab
verschoben werden:Auf diese Weise können
/var/tmp
50 MB RAM als Speicherplatz verwendet werden. Das einzige Problem dabei ist, dass im RAM gemountete Laufwerke nach einem Neustart nicht bestehen bleiben. Wenn Sie also einhängen/var/log
und Ihr System auf einen Fehler stößt, der zu einem Neustart führt, können Sie nicht herausfinden, warum.Verzeichnisse auf externer Festplatte
Sie können auch einige Verzeichnisse auf einer dauerhaften USB-Festplatte mounten. Weitere Details hierzu finden Sie in dieser Frage .
Der Raspberry Pi kann seine Root-Partition auch von einem externen Laufwerk booten. Dies kann über USB oder Ethernet erfolgen und bedeutet, dass die SD-Karte nur zum Delegieren an ein anderes Gerät während des Startvorgangs verwendet wird. Dies erfordert ein wenig Kernel-Hacking, da der Standard-Kernel meines Erachtens keinen USB-Speicher unterstützt. Weitere Informationen finden Sie unter dieser Frage oder in diesem externen Blogbeitrag .
quelle
noatime
sollte ein Standard sein.noatime
ist nicht die Standardeinstellung, zumindest bei Arch./var/tmp
zu merken. Vielleicht hast du es verwechselt mit/tmp
.noatime
dass Sie bei Problemen auch eine Option verwenden können, mitrelatime
der Schreibvorgänge beim Lesen erheblich reduziert werden, anstatt sie vollständig zu entfernen.Wenn die von bereitgestellten Optionen Jivings für Ihre Anwendung nicht möglich sind , dann auf eine andere Option zu verlängern das Leben ist im Wesentlichen ist eine SD - Karte zu verwenden , das ist viel größer , als Sie benötigen.
Lassen Sie viel Platz frei
Die meisten anständigen SD-Karten verwenden Abnutzungsausgleichsalgorithmen , um die Anzahl der Schreibvorgänge für jeden Block zu minimieren. Wenn die SD-Karte also größer ist als erforderlich, kann die Abnutzung auf einen viel größeren Bereich des freien Speicherplatzes verteilt werden.
Ein Grund dafür, dass die Abnutzungskorrektur so wichtig ist, ist, dass einige Dateisysteme wie FAT (das Standardformat für viele SD-Karten) immer wieder dieselben Sektoren bearbeiten.
Weitere Informationen hierzu finden Sie in den Antworten auf die Frage. Trifft es zu, dass eine SD / MMC-Karte mit ihrem eigenen Controller einen Abnutzungsgradabgleich durchführt? über Electronics Stack Exchange , insbesondere diese Antwort .
Eine interessante Statistik aus dieser Antwort ist die folgende
Aber das Besorgniserregende ist, dass
Dies kann Ihre Wahl des Dateisystems wichtig machen, wenn Sie eine zuverlässige Speicherung gewährleisten müssen.
Ein letzter Hinweis: Wenn Sie die Größe der SD-Karte verdoppeln, kann sich ihre Lebensdauer mehr als verdoppeln .
Wenn Sie also eine SD-Karte mit 2 GB und 200 MB freien Speicherplatz haben, erhalten Sie durch das Wechseln zu einer 4 GB-Karte das 11-fache des freien Speicherplatzes. Durch das Wechseln zu einer 16 GB-Karte erhalten Sie das 71-fache des freien Speicherplatzes Platz.
quelle
MMC_ERASE
Befehl, der irgendwo im MMC / SD-Standard für genau diesen Zweck definiert ist. Obwohl ich von allen SD-Karten nur eine ausprobiert habe (die, die mit meinem Pi- geliefert wurde), unterstützt sie tatsächlich.Das einzige, was ich sehe, ist, NICHT die SD-Karte zu tauschen.
Das Austauschen der SD-Karte kann wahrscheinlich zum Tod Ihrer SD-Karte führen.
Wenn Sie mehr RAM benötigen, können Sie versuchen, zram zu verwenden. Einen Beitrag dazu finden Sie unter http://raspberry.pi.gw.gd/t50-Using-ZRAM.html. Dort finden Sie einige Details zur Verwendung von ZRAM auf dem Himbeer-Pi
Weitere Informationen zu zram finden Sie auf http://en.wikipedia.org/wiki/ZRam
Auch die neuesten SD-Karten sind viel solider als ältere. Der Kauf einer brandneuen Klasse-10-SD-Karte ist wahrscheinlich eine gute Option, wenn Sie sie lange sehen möchten.
quelle
Sie können versuchen, Puppy Linux auszuführen, das vollständig auf dem RAM-Server installiert ist. Es ist sehr klein und erstaunlich schnell, da es vollständig im Speicher ausgeführt wird, indem das Speicherimage (in Ihrem Fall auf der SD-Karte) beim Booten in den RAM kopiert und die Änderungen dann regelmäßig in den Speicher zurückgespeichert werden. Die Häufigkeit dieser Speicherung wird vom Benutzer gesteuert, einschließlich manuell.
Puppy verwendet das Layered-aufs-Dateisystem oder ein älteres unionfs-Dateisystem mit einem der Standard-Linux-Dateisysteme wie ext3 oder ext4. Es kann sich auch auf FAT- oder NTFS-Partitionen befinden.
Es gibt mindestens ein paar Versionen von Puppy, die speziell für das RPi entwickelt wurden. Eine davon wurde vom "Puppy Master" Barry Kauler entwickelt.
Weitere Informationen finden Sie unter http://puppylinux.org/wikka/Puppi
quelle
Die meisten Leute hier sprechen von ihren Annahmen und nicht von persönlichen Erfahrungen.
Ich habe mein RaspberryPi mit RasPBX als Firmenzentrale mit 8 Nebenstellen und einem Fax verwendet. Wir haben 3 IP-basierte Amtsleitungen und eine Festnetzleitung über LinkSYS SPA3000. Meine anfängliche Kingston 4 GB SDCard brauchte nur 1 Monat, um den Staub zu beissen.
Ich experimentierte noch und hatte keine Sicherung. Übrigens ist der Pi an eine APC-USV angeschlossen. Ich habe dann die gesamte RasPBX von Grund auf neu eingerichtet, aber dieses Mal habe ich / var / log und / var / lib / mysql auf unser Unternehmens-NAS verschoben. Diese SD war nach 3 Monaten noch OK.
Dann hatten wir einen sehr heißen Sommer. Während des dritten Monats fing der Pi an, das Ethernet nicht aus heiterem Himmel zu erkennen. Dann fand ich eines Tages alle Leds sind dunkel und es würde nicht booten.
Ich habe den Pi durch einen funktionierenden ersetzt. Der außer Betriebe hat nach dem Abkühlen zu arbeiten begonnen, funktioniert aber ziemlich unregelmäßig und wenn er mit RasPBX gestartet wird, wechselt der Videomodus nicht zur Grafik, sondern verbleibt im 80 * 25-Text. Es war wirklich durcheinander. Ich habe seitdem einen Kühlkörper bestellt. Der neue Pi arbeitet nun seit mehr als 2 Monaten 7/24 damit.
Wenn Sie den pi also in einer 7/24-Umgebung verwenden möchten, seien Sie nicht billig - kaufen Sie einen Kühlkörper und vermeiden Sie es, / var / log und andere ausgelastete Verzeichnisse über die SD-KARTE zu verwenden.
quelle
Ich habe alle Lösungen mit dem utilitze TMPFS verglichen und die beste Antwort ist eine Synthese der Skriptvorbereitungsverzeichnisse (siehe http://grenzdebiel.dyndns.org/wordpress/?p=98 ) mit einem richtigen / etc / defaults / tmpfs ( (siehe http://www.a-netz.de/2013/02/ramdisks-for-the-raspberry/ ).
Die notwendigen Schritte für die Ausführung von Raspbian sind:
1. editieren
/etc/default/tmpfs
und einstellen :Ich würde die folgenden Größen empfehlen:
2. Aktivieren Sie zusätzliche Verzeichnisse mit / etc / fstab
3. Verwenden Sie das Skript
/etc/init.d/prepare-dirs
, um fehlende Verzeichnisse zu erstellen,/var/log
damit alle Dämonen gestartet werdenSehen Sie am Ende, was es in meinem Fall enthält.
4. Machen Sie das Skript ausführbar
chmod 755 /etc/initd/prepare-dirs
.5. Stellen Sie sicher, dass das Skript zuerst beim Booten gestartet wird, bevor Ihre Daemons starten:
update-rc.d prepare-dirs defaults 01 99
Inhalt von
/etc/init.d/prepare-dir
:Das ist es.
quelle
Swapfile deaktivieren:
Es ist keine Deinstallation erforderlich. Wenn Sie sie jedoch nicht verwenden und den Speicherplatz benötigen, können Sie sie sicher entfernen. Alternativer Befehl zum Entfernen:
Verwendung: / sbin / dphys-swapfile {setup | swapon | swapoff | uninstall}
quelle
Flash Cell Endurance:
Es ist rein mathematisch auf großen Karten und normaler Abnutzung. Wenn Sie Tag und Nacht auf eine 8-GB-MLC-Karte schreiben würden, würde es ungefähr 30 Tage dauern, bis die Karte gelöscht ist.
In Episode 99 bei Techsnap geht es um die Abnutzung von SSDs, und Allen erklärt, wie es unmöglich ist, eine SSD im täglichen Gebrauch abzunutzen, und wir müssen uns nicht darum kümmern, Swap, Crons und all das zu deaktivieren. Es funktioniert gerade jetzt! Der smarte Verschleißausgleich kümmert sich um alles.
Normale Abnutzung, wie sie von Kingston angegeben wird, sollte Ihnen ein Leben von 27 Jahren für eine professionelle Digitalkamera ermöglichen.
Der Preis für Flash ist gefallen und die Technologie ist viel besser.
Die meisten SD-Karten überleben zwei oder drei Gerätegenerationen, und zu diesem Zeitpunkt wird es als zu klein und zu langsam angesehen, um mit einem viel besseren und günstigeren verfügbaren Upgrade verwendet zu werden!
quelle
Wie bereits erwähnt, sind das Hauptproblem Dateien und Verzeichnisse, die es nicht wert sind, zwischen Neustarts gespeichert zu werden, die jedoch häufig geschrieben werden, z. B. Cache-Dateien, Download-Ordner usw.
Sowohl Raspbian als auch Debian und Ubuntu haben ein Paket namens unburden-home-dir, dessen Hauptzweck darin besteht, solche Dateien mit einem weniger problematischen Ort wie z. B. einem
tmpfs
Mount oder einer externen Festplatte zu verknüpfen, die weniger abgenutzt sind.Es wird normalerweise zur Anmeldezeit unter X ausgeführt und richtet sich an die Cache-Dateien der GUI-Anwendung, kann jedoch auch über Skripte oder dergleichen aufgerufen und für beliebige Dateien im Basisverzeichnis eines Benutzers konfiguriert werden.
quelle
Dies sind meine Empfehlungen für ein Debian 8.0 (Jessie)
Sie basieren auf
iotop -bktoqqq
undiostat -dzp 5
. Sie sollten diese Befehle zuerst ausführen, um sich ein Bild von dem Problem und seiner Lösung zu machen.1. Swap deaktivieren
2. Verwenden Sie Mount-Optionen und RAM
Hängen Sie alle Partitionen auf der SD-Karte mit den
noatime,commit=1800
Optionen ein und hängen Sie die folgenden Verzeichnisse mit diesen Einträgen im RAM ein/etc/fstab/
:Commit verzögert die Schreibvorgänge und sammelt sie zuerst.
3. Protokollieren Sie die häufigsten Protokolldateien in
/var/tmp/log/
Siehe meine Beschreibung Wie kann ich das Schreiben reduziert Dateien zu protokollieren .
4. Verhindern Sie, dass Chrom auf die SD-Karte schlägt
Wie sich herausstellt, schreibt Chrom schwer und kann nicht gestoppt werden (siehe 176727 , 52663 ). Dies wirkt sich auf den Cache und das Benutzerdatenverzeichnis aus. Die Chromium / Tipps und Tricks erläutern, wie dies in den Arbeitsspeicher verschoben werden kann. Da die Himbeere nicht viel RAM hat, ist der vorgeschlagene Tab Suspender nützlich, um RAM zu sparen.
a) Cache
Begrenzen die Cachegröße und bewegen sie RAM bearbeite
/etc/chromium-browser/customizations/00-rpi-vars
zuJetzt ist der Cache klein genug, um auf die RAM-Disk verschoben zu werden, indem Sie den
XDG_CACHE_HOME
Eintrag in/etc/security/pam_env.conf
in ändernJetzt haben meine beiden Benutzer einen kleinen Browser-Cache im RAM. Wenn das nicht ausreicht, ändern Sie den Cache oder / tmp / size nach Bedarf.
b) Benutzerdatenverzeichnis
Auch das Benutzerdatenverzeichnis (
.config/chromium/
) erfährt schwere Schreibvorgänge. Der Profile-Sync-Daemon wird von Chromium / Tips and Tricks empfohlen . Es wurde entwickelt, um das Profil Ihres Browsers in tmpfs zu verwalten und es regelmäßig wieder mit Ihrer physischen Festplatte zu synchronisieren. Leider ist das Paket noch nicht Teil der Raspbian 8.0 (Jessie) Distribution. Also habe ich das noch nicht getestet.5. Freier Speicherplatz auf der SD-Karte
Geben Sie Speicherplatz frei, indem Sie nicht benötigte Pakete und Dateien deinstallieren. Dies sollte den Tragekomfort gleichmäßiger auf Ihre Partitionen verteilen.
Getan!
Nun läuft
iotop -bktoqqq
undiostat -dzp 5
wieder und eine deutliche Verringerung des Schreibzugriff sehen , wenn das System im Leerlauf befindet. Viele Minuten lang wird nichts auf meine Festplatte geschrieben. Und sorgen Sie sich nicht, dass die grüne ACT-LED blinkt . Anscheinend ist es kein guter Schreibzugriffsindikator.quelle
Nur eine winzige Reduzierung der Schreibzyklen kann erreicht werden, indem die Syslog-Ausgabe auf einen anderen Server gestreamt wird.
syslogd
Voraussetzung ist natürlich, dass ein solcher Server läuft. Da der Pi jedoch ein Spielzeug für Linux-Enthusiasten ist, ist dies wahrscheinlich sehr oft der Fall. :-)Um dieses Streaming zu aktivieren, fügen Sie einfach eine Anweisung wie ein
/etc/rsyslog.conf
Kommentieren Sie am Anfang der Datei alle anderen Zeilen aus und starten Sie die Protokollierung neu, indem Sie sie ausgebenservice rsyslog restart
. Danach sollten die Nachrichten auf dem ausgewählten Server eingehen.Ein klarer vorteilhafter Nebeneffekt davon ist, dass Sie Ihren Pi in Verbindung mit anderen Maschinen auf demselben Server leicht überwachen können. Ein Nachteil ist, dass Sie beim Starten und Herunterfahren des Systems möglicherweise einige Nachrichten verlieren, wenn die Netzwerkverbindung noch nicht hergestellt oder bereits heruntergefahren wurde.
quelle
journald
denen sie im systemd-Journal gespeichert sind. Sie konfigurieren außerdemjournald
, dass die Protokolle an den Syslog-Socket weitergeleitet werden, der überwachtrsyslogd
wird. das platziert zusätzliche Kopien der Nachrichten in den Protokolldateien unter/var/log
. Wenn Sie mitjournalctl
dem Durchsuchen Ihrer Protokolle/var/log
vertraut sind (und es viel besser funktioniert, als wenn Sie es kennen), können Siersyslog
einige Schreibvorgänge vollständig deaktivieren und speichern.Hinweis: Das Limit von 100.000 Zyklen ist eine Hypothese, die für jedes Computergerät gilt, auch für die Tasten in einer Tastatur. Ich glaube, dass das Ausführen von Pi unter geeigneten Kühlbedingungen und ordnungsgemäßen Abschalt- / Startzyklen zu besseren Ergebnissen führt, als dass Analogien herangezogen werden.
Auch dies kann meine obige Meinung ergänzen.
Fügen Sie zusätzlich zu Benutzer Pi [Standard] einen neuen Benutzer hinzu. Zeigen Sie auf dem externen Laufwerk [Daumen / Festplatte] auf das Ausgangsverzeichnis des neuen Benutzers. Geben Sie dem neuen Benutzer Superuser-Berechtigungen und beginnen Sie, ihn als Ihr primäres Konto zu verwenden.
Ich hoffe das hilft..
quelle
/var/log
und/var/tmp
. Die Erfahrung hat gezeigt, dass die richtige Kühlung einen großen Unterschied macht, als "Ich glaube" zu sagen.Verwenden Sie den Syslog-Daemon von busybox (im Paket busybox-syslogd unter Raspbian / Debian / Ubuntu) anstelle des Standard-Syslog-Daemons (normalerweise rsyslog). Unter Raspbian / Debian / Ubuntu meldet sich syslogd von busybox standardmäßig nur im Ringspeicher und nicht auf der Festplatte an. Der Ringpuffer hat standardmäßig eine Größe von 128kB, dh alte Protokolleinträge werden ziemlich schnell gelöscht und sind dann verschwunden. Sie können es jedoch so konfigurieren, dass mehr RAM dafür verwendet wird.
Trotzdem ist dies eine weitaus bessere Lösung, als überhaupt keinen Syslog-Daemon zu haben, dh Sie können sich immer noch einloggen und die Protokolleinträge der ca. letzten Stunden oder Tagen (abhängig von der konfigurierten Größe des Ringpuffers) mit dem Befehl
logread
. Sie können auchlogread -f
eintail -f
ähnliches Verhalten erzielen, um z. B. nur interessante Protokolleinträge mit einem Filterskript zu speichern oder Protokolleinträge über das Netzwerk an eine andere Stelle weiterzuleiten, zstunnel
. B. mit oder dergleichen.quelle
Ein paar Dinge, die ich getan habe:
chmod der Dphys-Swap-Datei (irgendwo in / etc - im Moment nicht in der Nähe des PI) an:
Beim Booten treten geringfügige Fehler auf (der Dienst dphys-swapfile kann nicht gestartet werden) - Angenommen, es gibt einen besseren Weg ... rc-update ??
Außerdem nehme ich Bilder vom Kameramodul auf, um sie schließlich auf meinem Webserver (dem Pi) abzulegen. Ich habe / dev / ram0 auf ext2 formatiert und es als / media / ramdrive gemountet (ich glaube mit /etc/init.rc). Es ist 4megs, groß genug für einen Schnappschuss. Keine Schreibvorgänge auf SD.
Der Server (oululife.dnsdynamic.com) ist experimentell, befindet sich jedoch im Web. Um es wirklich zu betonen, habe ich es auch eine MP4-Episode von 'Heartbeat *' streamen lassen. Es läuft mit Lighttpd, MySQL, PHP, WordPress, und selbst wenn ich aus der Ferne über das Web streame, bricht es kaum ins Schwitzen, durchschnittlich etwa 0,2. Überhaupt kein Übertakten. Modell B rev. 2, rund um die Uhr. Also, wenn ich meine Logfiles in die anderen 15 / dev / ramX bekommen kann, rechne ich damit, dass meine Micro-SD 16G Karte jahrelang halten wird ....
quelle