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:
1 2 3 |
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:
1 |
chmod +x install.sh |
Start het installatie-scripts:
1 |
sudo ./install.sh |
Verwijder de installatie-bestanden:
1 2 |
cd .. rm -r log2ram-master |
Herstart de Raspberry Pi:
1 |
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:
1 2 |
sudo mv /etc/cron.hourly/log2ram /etc/cron.daily/log2ram sudo reboot |
Controleer na de reboot of alles goed gegaan is:
1 |
df -h |
Tijdelijke bestanden Domoticz
De volgende stap is om de tijdelijke bestanden die Domoticz nodig heeft te verplaatsen naar RAM:
1 2 3 |
sudo mkdir /tmp/log sudo cp -p /etc/fstab /etc/fstab.save sudo nano /etc/fstab |
Voeg onderstaande regel toe:
1 |
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:
1 |
sudo mount /tmp/log |
Controleer of alles goed gegaan is:
1 |
df -h |
Stop Domoticz en pas het /etc/init.d/domotic.sh bestand aan:
1 2 |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# # 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:
1 2 |
sudo rm /home/pi/domoticz/Config/OZW_Log.txt ln -sf /tmp/log/OZW_Log.txt /home/pi/domoticz/Config |
Herstart Domoticz:
1 |
sudo /etc/init.d/domoticz.sh start |
Het kan zijn dat er gevraagd wordt om een systemctl daemon-reload te doen:
1 |
sudo systemctl daemon-reload |
Je zou nu alle relevante bestanden in de /tmp/log/ directory moeten zien… Hier is een voorbeeld:
1 |
ls /tmp/log -l |