Voorkom een corrupte Micro SD-kaart in de Raspberry Pi

Als je al wat ervaring met een Raspberry Pi (i.c.m. Domoticz) hebt dan weet je dat de Micro SD-kaart nogal wat te lijden heeft vanwege de vele schrijf-acties door het operating system op de MicroSD kaart. Veel applicaties schrijven veelvuldig hun logbestand weg naar de Micro SD-kaart. Wat denk je van Domoticz? Indien je wat meer sensoren en switches heb dan wordt er zowat iedere seconde wel iets weggeschreven. Gelukkig is daar een oplossing voor: Log2Ram. Deze applicatie kan er voor zorgen dat log-data naar RAM wordt weggeschreven. Ieder uur (en als de Raspberry Pi op een normale wijze uitgezet wordt) dan worden de log-bestanden vanuit RAM naar de MicroSD kaart weggeschreven. Dit betekent 99,9% minder schrijfacties op de geheugenkaart!

Benodigdheden

Log-bestanden Raspbian

Haal de installatie van de GitHub-repository:

curl -Lo log2ram.tar.gz https://github.com/azlux/log2ram/archive/master.tar.gz
tar xf log2ram.tar.gz
cd log2ram-master

Ken de juiste rechten toe aan het script:

chmod +x install.sh

Start het installatie-scripts:

sudo ./install.sh

Verwijder de installatie-bestanden:

cd ..
rm -r log2ram-master

Herstart de Raspberry Pi:

sudo reboot

Standaard schrijft Log2Ram ieder uur de data naar de geheugenkaart. Mocht je van mening zijn dat dit te vaak is dan kun je dit aanpassen door het dagelijks weg te schrijven. Het cron-bestand verplaatsen we dan van uurlijks naar dagelijks:

sudo mv /etc/cron.hourly/log2ram /etc/cron.daily/log2ram
sudo reboot

Controleer na de reboot of alles goed gegaan is:

df -h

 

Tijdelijke bestanden Domoticz

De volgende stap is om de tijdelijke bestanden die Domoticz nodig heeft te verplaatsen naar RAM:

sudo mkdir /tmp/log
sudo cp -p /etc/fstab  /etc/fstab.save
sudo nano /etc/fstab

Voeg onderstaande regel toe:

tmpfs	        /tmp/log        tmpfs   nodev,nosuid,size=100M 0 0

Ik heb er voor gekozen om een 100 Mb RAM-drive aan te maken, maar 25 of 50 Mb moet doorgaans ook voldoende zijn.

Sla het bestand op en mount de RAM-drive:

sudo mount /tmp/log

Controleer of alles goed gegaan is:

df -h

Stop Domoticz en pas het /etc/init.d/domotic.sh bestand aan:

sudo /etc/init.d/domoticz.sh stop
sudo nano /etc/init.d/domoticz.sh

Zoek nu #DAEMON_ARGS="$DAEMON_ARGS -log /tmp/domoticz.txt" in het bestand. Wijzig deze regel naar DAEMON_ARGS="$DAEMON_ARGS -log /tmp/log/domoticz.log -loglevel=normal". Vergeet niet het #-teken weg te halen!

Voeg nu regel 6 t/m 9 toe, zoals in onderstaand voorbeeld:

#
# Function that starts the daemon/service
#
do_start()
{
       # edit to move SQLite temp files to RAM drive
       ln -sf /tmp/log/domoticz.db-shm /home/pi/domoticz
       ln -sf /tmp/log/domoticz.db-wal /home/pi/domoticz
       # end of edit
       # Return
       #   0 if daemon has been started
       #   1 if daemon was already running
       #   2 if daemon could not be started
       start-stop-daemon --chuid $USERNAME --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
               || return 1
       start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
               $DAEMON_ARGS \
               || return 2
}

Sla de wijzigingen op en sluit de editor.

Optioneel kun je ook de Z-wave log naar de RAM-drive verplaatsen:

sudo rm /home/pi/domoticz/Config/OZW_Log.txt
ln -sf /tmp/log/OZW_Log.txt /home/pi/domoticz/Config

Herstart Domoticz:

sudo /etc/init.d/domoticz.sh start

Het kan zijn dat er gevraagd wordt om een systemctl daemon-reload te doen:

sudo systemctl daemon-reload

Je zou nu alle relevante bestanden in de /tmp/log/ directory moeten zien… Hier is een voorbeeld:

ls /tmp/log -l

 

7 gedachten over “Voorkom een corrupte Micro SD-kaart in de Raspberry Pi

  • 25 februari 2019 om 22:22
    Permalink

    Ook deze toevoeging succesvol kunnen uitrollen op mijn pi. Dank!

    Beantwoorden
  • 5 april 2019 om 20:14
    Permalink

    Ik zie regelmatig (met de raspi check app) dat /tmp/log op 100% zit. Ik heb deze ingesteld op 100 Mb. Ik kan deze wel vergroten maar vraag me af of het goed is dat deze telkens vol zit? Domoticz vertoont geen problemen.

    Beantwoorden
    • 5 april 2019 om 15:44
      Permalink

      Rens, er staat ook een artikel online, waarin uitgelegd staat hoe je iedere dag het logbestand weg kunt schrijven, zodat het tijdelijke bestand weer leeg is, dan kom je nooit aan 100 Mb (of je moet heeeeel veel loggen).

      Beantwoorden
  • 26 juli 2019 om 12:06
    Permalink

    Super duidelijke tutorial mijn dank hiervoor.

    Beantwoorden
  • 13 oktober 2019 om 11:11
    Permalink

    Hmmmmmm,
    Krijg nu ieder uur de volgende error boodschap:

    Error: SQL Query(“VACUUM”) : database or disk is full

    Enig idee hoe dit is te verhelpen?

    Gr Harald

    Beantwoorden
    • 13 oktober 2019 om 20:16
      Permalink

      Waarschijnlijk is één van de bestanden die je naar de log2ram of tmpfs volume wilt schrijven te groot (of het volume te klein).

      Beantwoorden

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *