Wie kann ich die Lebensdauer meiner SD-Karte verlängern?

252

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?

Sehr unregelmäßig
quelle
19
Wenn Sie Tag und Nacht mit voller Geschwindigkeit darauf schreiben, hält ein 16-GB-Speicher ungefähr 30 Tage. Bei normaler Nutzung können Sie mit 27 Jahren rechnen, basierend auf 10.000 Schreibzyklen. Wenn es 100.000 Schreibzyklen über 50 Jahre verwendet. Je größer die Karte ist, desto länger hält sie dank der cleveren Wear Leveling-Logik
Piotr Kula
Wow, das ist toll zu wissen, ich hatte keine Ahnung, wie lange Ihr erster Punkt von 16 GB SD 30 Tage dauert, wenn Sie mit voller Geschwindigkeit schreiben. Ich nehme an, dass es nicht die beste Idee ist, ständig Videos auf die SD-Karte aufzunehmen und dann zu übertragen.
SSH Dies
3
Bei all den Performance-Erfolgen, die Sie mit diesen Lösungen erzielen, zahlen Sie doch alle paar Jahre 10 US-Dollar.
Alexander

Antworten:

244

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 swapoffBefehl:

sudo swapoff --all

Sie müssen auch verhindern, dass es nach einem Neustart wieder angezeigt wird:

  • Für Raspbian, das dphys-swapfile zur Verwaltung einer Auslagerungsdatei verwendet (anstelle einer "normalen" Auslagerungspartition), können Sie diese einfach sudo apt-get remove dphys-swapfiledauerhaft entfernen. Am besten zu entfernen, da das Setzen von CONF_SWAPSIZEauf 0, wie in dieser Antwort erläutert , nicht funktioniert und nach dem Neustart immer noch eine 100-MB-Auslagerungsdatei erstellt.
  • Entfernen Sie für andere Distributionen, die eine Auslagerungspartition anstelle einer Auslagerungsdatei verwenden, die entsprechende Zeile von /etc/fstab

Journaling im Dateisystem deaktivieren

Die Verwendung eines Journal-Dateisystems wie ext3oder ext4OHNE 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, ext3indem Sie es als einbinden ext2.

Sie können die Aufzeichnung ext4auf einem nicht bereitgestellten Laufwerk wie folgt deaktivieren :

tune4fs -O ^has_journal /dev/sdaX
e4fsck –f /dev/sdaX
sudo reboot

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.

Lesezugriffe auf das Dateisystem führen nicht mehr zu einer Aktualisierung der mit der Datei verknüpften Zeitinformationen. Die Noatime-Einstellung hat die Bedeutung, dass das System keine Schreibvorgänge in das Dateisystem für Dateien ausführen muss, die lediglich gelesen werden. Da Schreibvorgänge, wie im vorherigen Abschnitt erwähnt, etwas kostspielig sein können, kann dies zu messbaren Leistungssteigerungen führen. Beachten Sie, dass die Informationen zum Schreibzeitpunkt in eine Datei immer dann aktualisiert werden, wenn in die Datei mit aktivierter Option geschrieben wird.

Verzeichnisse im RAM

Häufig verwendete Verzeichnisse wie /var/tmp/und können möglicherweise /var/logwie folgt in den Arbeitsspeicher /etc/fstabverschoben werden:

tmpfs /var/tmp tmpfs nodev,nosuid,size=50M 0 0

Auf diese Weise können /var/tmp50 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/logund 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 .

Jivings
quelle
17
noatimesollte ein Standard sein.
Alex Chamberlain
3
@AlexChamberlain: noatimeist nicht die Standardeinstellung, zumindest bei Arch.
Jivings
20
Es ist in den neuesten Raspian Builds.
Oli
4
Demnach: superuser.com/a/168126/105936 ist es keine so gute Idee, sich etwas /var/tmpzu merken. Vielleicht hast du es verwechselt mit /tmp.
Inf3rno
1
Beachten Sie, noatimedass Sie bei Problemen auch eine Option verwenden können, mit relatimeder Schreibvorgänge beim Lesen erheblich reduziert werden, anstatt sie vollständig zu entfernen.
Mark Booth
79

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

Wenn Sie eine 2-GB-Karte nehmen und sie von Anfang bis Ende immer wieder beschreiben, beträgt der Durchschnitt etwa 10 TB, bevor die Karte tot und nicht mehr beschreibbar ist.

Aber das Besorgniserregende ist, dass

SD-Karten lassen Sie nicht wissen, wenn die Daten fehlerhaft sind, dh es wird kein E / A-Fehler zurückgegeben, wie dies bei einer PC-Festplatte der Fall ist.

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.

Mark Booth
quelle
Damit die SD-Karte überhaupt einen Verschleißausgleich durchführen kann, muss angegeben werden, welche Blöcke dafür tatsächlich frei sind. fstrim könnte dabei helfen.
JimmyB
Trimmen ist nicht erforderlich, aber ohne es wird ein Block nur wiederverwendet, wenn das Betriebssystem einen Block wiederverwendet, anstatt ihn nicht mehr zu verwenden. Soweit ich weiß, ist trim eine SSD-Funktion und wird von SD-Karten, auf die mit einem viel einfacheren Protokoll zugegriffen wird, nicht unterstützt.
Mark Booth
@Mark, dein erster Punkt ist genau richtig. - Zu Ihrem zweiten Punkt gibt es den (optionalen) MMC_ERASEBefehl, 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.
JimmyB
Ist in diesem Fall die Partitionsgröße von Bedeutung? Ich meine, wenn ich eine 16-GB-Karte und ein System mit einer einzigartigen ext4-Partition von 4 GB habe, werden dann auch die verbleibenden 12 GB für den Verschleißausgleich genutzt?
Natenho
Es ist schwierig, @natenho für eine SD-Karte mit gutem Abnutzungsgrad "Ja" zu sagen, für eine mit schlechter (oder keiner) Implementierung "Nein".
Mark Booth
25

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.

neofutur
quelle
14

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

DocSalvager
quelle
12

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.

Kerem Ersoy
quelle
Sicherstellen, dass var / log auf einem geeigneten Gerät installiert ist, klingt nach einem ausgezeichneten Rat. Haben Sie aus Interesse in diesem ersten problematischen Monat Voicemail-Boxen auch auf der USD-Karte gespeichert? Ich frage mich nur, ob uSD-Karten mit hoher Lebensdauer, wie sie für die Verwendung mit Dash Cam entwickelt wurden, für meine RasPBX-Bereitstellung möglicherweise besser sind, wenn ich Voicemail-Boxen aktiviere.
Markieren Sie den Stand
11

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/tmpfsund einstellen :

RAMLOCK=yes
RAMSHM=yes
RAMTMP=yes

Ich würde die folgenden Größen empfehlen:

TMPFS_SIZE=10%VM
RUN_SIZE=10M
LOCK_SIZE=5M
SHM_SIZE=10M
TMP_SIZE=25M

2. Aktivieren Sie zusätzliche Verzeichnisse mit / etc / fstab

tmpfs   /var/log                tmpfs   size=20M,defaults,noatime,mode=0755 0 0 
tmpfs   /var/cache/apt/archives tmpfs   size=100M,defaults,noexec,nosuid,nodev,mode=0755 0 0
tmpfs   /var/spool/cups         tmpfs   size=100M,defaults,noatime,mode=0755 0 0
tmpfs   /var/spool/cups/tmp     tmpfs   defaults,noatime,mode=0755 0 0

3. Verwenden Sie das Skript /etc/init.d/prepare-dirs, um fehlende Verzeichnisse zu erstellen, /var/logdamit alle Dämonen gestartet werden

Sehen 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:

#!/bin/bash
#
### BEGIN INIT INFO
# Provides:          prepare-dirs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Required-Start:
# Required-Stop:
# Short-Description: Create needed directories on /var/log/ for tmpfs at startup
# Description:       Create needed directories on /var/log/ for tmpfs at startup
### END INIT INFO
# needed Dirs
DIR[0]=/var/log/lighttpd
DIR[1]=/var/log/cups
DIR[2]=/var/log/apt
DIR[3]=/var/log/ConsoleKit
DIR[4]=/var/log/fsck
DIR[5]=/var/log/news
DIR[6]=/var/log/ntpstats
DIR[7]=/var/log/samba
DIR[8]=/var/log/lastlog
DIR[9]=/var/log/exim
DIR[10]=/var/log/watchdog
case "${1:-''}" in
  start)
        typeset -i i=0 max=${#DIR[*]}
        while (( i < max ))
        do
                mkdir  ${DIR[$i]}
                chmod 755 ${DIR[$i]}
                i=i+1
        done
        # set rights
        chown www-data.www-data ${DIR[0]}
    ;;
  stop)
    ;;
  restart)
   ;;
  reload|force-reload)
   ;;
  status)
   ;;
  *)
   echo "Usage: $SELF start"
   exit 1
   ;;
esac

Das ist es.

user13222
quelle
Puppy Linux verwendet ebenfalls TMPFS für alles.
DocSalvager
7

Swapfile deaktivieren:

sudo dphys-swapfile swapoff

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:

sudo dphys-swapfile deinstallieren

Verwendung: / sbin / dphys-swapfile {setup | swapon | swapoff | uninstall}

Dave Henderson
quelle
5

Flash Cell Endurance:

  • Für MLC-Flash (Multi-Level Cell) bis zu 10.000 Schreibzyklen pro physischem Sektor.
  • Für Single-Level Cell (SLC) Flash bis zu 100.000 Schreibzyklen pro physischem Sektor.
  • Neuere SSDs bieten 1 Million Schreibzyklen pro physischem Sektor.

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.

Was Sie bei normalen DSLR-Kameras möglicherweise alle paar Monate nachfüllen, hängt davon ab, wie viel Sie unterwegs sind. Wenn Sie einen Pi in Betracht ziehen und häufig experimentieren, ist dies möglicherweise mit einer höheren Belastung verbunden. Normalerweise, wenn Sie einmal mit einer Distribution zufrieden sind ..., wird sie für Monate oder Jahre nicht mehr geflasht. Um den SD-Verschleiß zu verlängern, sollten Sie einige Ratschläge zur Reduzierung der E / A auf dem SD befolgen.

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!

Piotr Kula
quelle
Ein Raspberry Pi, der aus Sicherheitsgründen mit einer Webcam ausgestattet ist, schreibt möglicherweise Daten rund um die Uhr. Ich denke in diesem Fall ist eine SSD wahrscheinlich besser.
Sehr unregelmäßig
1
Ja, aber es werden nicht ALLE Sektoren die GANZE Zeit nacheinander geschrieben. Es wird mit geringstem Verschleiß verwaltet und neue Daten werden immer an den Sektor / Bereich mit den geringsten Zugriffen gesendet. Das Video überschreibt nicht die Dateisystemdateien oder Auslagerungsdateien. Wie viele Stunden können Sie auf einem 16-GB-Flash-Laufwerk verbringen? Normalerweise sollte CCTV 15-30 Tage später verfügbar sein! Verwenden Sie stattdessen ein 1-TB-Laufwerk oder NAS zum Speichern für historische Zwecke. Selbst kurzfristig für die Speicherung und Übertragung erhalten Sie Jahre aus einer SD-Karte! Verwenden Sie besser noch eine 32 GB SD, aber begrenzen Sie den Ordner auf 16 GB - Sie werden die Lebensdauer dieser Technik mehr als verdoppeln!
Piotr Kula
4
@ppumkin, kannst du uns bitte sagen, wie du deine SD-Karten tatsächlich in deinen RPi (s) verwendest? Viele von uns (Google "raspberry damaged sd") sind mit ihren Standard-Raspbian-Setups trotz der beeindruckenden Lieferantenzahlen auf fatale Fehler gestoßen (ich mehr als einer, einschließlich Kingston, jetzt wo Sie es erwähnen) ... Es kann sein, dass RPi nicht SD, aber Ihre Zahlen in Papierform sind immer noch unbegründet, ohne Hinweise auf die (sollte ich als bekannt bezeichnen?) RPi-SD-Probleme, Ihre eigenen tatsächlichen Feldübungen oder noch besser: Fallstudien, die die SD-Schaden- "Gerüchte" experimentell entlarven.
Gr.
1
Schau, alles, worüber ich spreche, ist mit Bezug verbunden. OK, du willst wissen, wie ich es benutze? Ich nicht! Weil der Pi, ist wirklich ein großer Schmerz im Arsch! SD-Karten versagen weiterhin, und es liegt nicht am Fehler der SD-Karte. Entweder die Pi-Hardware oder -Software blockiert diese Dinge. Ich denke, es sind die instabilen Spannungen, die billige USB-Netzteile liefern. Der neue B + hat Regulierungsbehörden. Danke Gott! Dieses reparierte WiFi, stichhaltiges Rückgespräch und ich bete zu Gott, SD-Karten zu mauern. Ich muss noch welche bestellen, aber ich spiele jetzt mit Netduino, noch ist keine SD darauf abgestürzt.
Piotr Kula
1
@ppumkin Ich habe SanDisk benutzt. Nicht bei Ebay. Es gibt einen großen Unterschied zwischen dem erneuten Speichern einer SD-Karte (zum Beispiel für die Wiederverwendung in einer Kamera) und der Verwendung als Heim eines Betriebssystems. Sie sollten genauer festlegen, wie genau Sie Ihre verwenden und wie lange sie anhielten. Ich brauche Lunakids Kommentar nicht zu wiederholen, aber ich stimme ihm voll und ganz zu. .
RolfBly
4

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 tmpfsMount 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.

Axel Beckert
quelle
3

Dies sind meine Empfehlungen für ein Debian 8.0 (Jessie)

Sie basieren auf iotop -bktoqqqund iostat -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

sudo systemctl disable dphys-swapfile
sudo rm /var/swap

2. Verwenden Sie Mount-Optionen und RAM

Hängen Sie alle Partitionen auf der SD-Karte mit den noatime,commit=1800Optionen ein und hängen Sie die folgenden Verzeichnisse mit diesen Einträgen im RAM ein /etc/fstab/:

/dev/mmcblk0p1  /boot           vfat    defaults,noatime,commit=1800  0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime,commit=1800  0       1

tmpfs           /tmp            tmpfs   size=50M,nodev,nosuid     0       0
tmpfs           /var/tmp        tmpfs   size=10M,nodev,nosuid     0       0
tmpfs           /var/cache/samba tmpfs   size=5M,nodev,nosuid     0       0

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-varszu

CHROMIUM_FLAGS="--disable-quic --enable-fast-unload --enable-tcp-fast-open --disk-cache-size=10000000 --media-cache-size=5000000"

Jetzt ist der Cache klein genug, um auf die RAM-Disk verschoben zu werden, indem Sie den XDG_CACHE_HOMEEintrag in /etc/security/pam_env.confin ändern

XDG_CACHE_HOME  DEFAULT=/tmp/@{PAM_USER}/cache

Jetzt 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 -bktoqqqund iostat -dzp 5wieder 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.

Frank Breitling
quelle
2

Nur eine winzige Reduzierung der Schreibzyklen kann erreicht werden, indem die Syslog-Ausgabe auf einen anderen Server gestreamt wird. syslogdVoraussetzung 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

*.*    @myserver.mydomain

/etc/rsyslog.confKommentieren Sie am Anfang der Datei alle anderen Zeilen aus und starten Sie die Protokollierung neu, indem Sie sie ausgeben service 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.

Marcus Rickert
quelle
Beachten Sie, dass moderne Linux-Systeme (einschließlich CentOS 7 und Debian 8 sowie Systeme, die auf solchen wie Raspbian 8 basieren) alle Protokollierungen durchführen, in journalddenen sie im systemd-Journal gespeichert sind. Sie konfigurieren außerdem journald, dass die Protokolle an den Syslog-Socket weitergeleitet werden, der überwacht rsyslogdwird. das platziert zusätzliche Kopien der Nachrichten in den Protokolldateien unter /var/log. Wenn Sie mit journalctldem Durchsuchen Ihrer Protokolle /var/logvertraut sind (und es viel besser funktioniert, als wenn Sie es kennen), können Sie rsyslogeinige Schreibvorgänge vollständig deaktivieren und speichern.
Curt J. Sampson
1

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..

touchStone
quelle
Ich versuche immer, weniger zu tippen, um auf Tastaturen zu sparen;)
Piotr Kula
Das Hinzufügen eines neuen Benutzers verhindert nicht, dass beschäftigt /var/logund /var/tmp. Die Erfahrung hat gezeigt, dass die richtige Kühlung einen großen Unterschied macht, als "Ich glaube" zu sagen.
RolfBly
0

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 auch logread -fein tail -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, z stunnel. B. mit oder dergleichen.

Axel Beckert
quelle
-1

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:

sudo chmod a-x dphys-swapfile

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 ....

user10419
quelle