SPOSTARE I FILE DI LOG E TEMPORANEI DI DOMOTICZ IN RAM DRIVE

FONTE: https://www.domoticz.com/wiki/Moving_Log_and_Temporary_Files_To_a_RAM_Drive

Vediamo ora come sia possibile spostare i file scritti più frequentemente da Domoticz su un'unità RAM drive per ridurre l'usura della scheda SD.

Questo articolo si concentrerà sul registro dei log di Domoticz e su alcuni file temporanei, nonché sul log di openzwave (se utilizzato), che sposteremo in un'unità RAM drive montata come nuova directory in /tmp/domoticz ed il log in /var/log.

Per quanto riguarda la dimensione del RAM Disk, viene utilizzato 20MB che dovrebbe essere sufficiente considerando la dimensione abituale dei file temporanei domoticz e openzwave, ma potrebbe essere necessario aggiustare la dimensione in più o in meno in base alle particolari esigenze. Per quanto riguarda Domoticz, oltre al file log, ci sono due file che possono essere spostati in RAM disk:

/home/pi/domoticz/domoticz.db-wal
/home/pi/domoticz/domoticz.db-shm


Questi sono i file temporanei di SQLite creati quando Domoticz viene lanciato e che vengono cancellati quando Domoticz viene arrestato.
Il file domoticz.db-shm è un file relativamente grande (di solito più grande del file di database Domoticz) e viene scritto sulla sd ogni volta che un dato viene modificato in Domoticz, a volte può succedere anche molte volte al minuto, compromettendo in poco tempo la scheda SD.
Sarebbe possibile configurare Domoticz per modificare la posizione di questi file, ma per semplicità, è possibile creare dei semplici collegamenti simbolici con il punto di montaggio in RAM disk.
Siccome questi collegamenti vengano eliminati all'arresto di Domoticz, l’unica soluzione è quella di modificare lo script di avvio domoticz.sh in modeo che questi collegamenti vengno ricreati ogni volta che Domoticz viene avviato.

Si suppone inoltre che tu sia utente “pi” e che Domoticz sia installato in /home/pi/domoticz

Creiamo il mount point:

sudo mkdir /tmp/domoticz

Facciamo una copia di sicurezza del file di sistema prima di modificarlo:

sudo cp -p /etc/fstab  /etc/fstab.save

Editiamo il file /etc/fstab:

sudo nano /etc/fstab

e aggiungiamo la seguente riga alla fine:

tmpfs /tmp/domoticz tmpfs nodev,nosuid,size=20M 0 0

CTRL+O e CTRL+X per salvare e uscire, e montiamo il RAM disk:

sudo mount /tmp/domoticz

Verifichiamo che tutto sia stato eseguito correttamente

df -h

Si dovrebbe ora vedere una riga simile alla seguente:

tmpfs               20M    0  20M  0% /tmp/domoticz

Andiamo a configurare il log di Domoticz affinchè venga scritto in /var/log (e quindi in già ramdisk con l’immagine SolarJessie) e affinchè logrotate vada a limitare lo spazio occupato.

Loggarsi come utente pi con Putty
Fermiamo Domoticz:

sudo systemctl stop domoticz.service

ed andiamo ad editare il file domoticz.sh

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

Cercate la linea seguente che inizia con DAEMON_ARGS :

#DAEMON_ARGS="$DAEMON_ARGS -log /tmp/domoticz.txt"

E modificatela come di seguito

DAEMON_ARGS="$DAEMON_ARGS -log /var/log/domoticz.log -loglevel 1" 

Attenzione a rimuovere anche il # iniziale se volete che il log venga creato
Il parametro -loglevel 1 può naturalmente essere omesso o modificato secondo le vostre esigenze.
Rimuovendo il commento iniziale (#) abilitate il log di Domoticz. Questa operazione non è indispensabile ma è utile nella prima fase di installazione e configurazione del sistema per controllare che non vi siano errori. Poi può sempre essere disabilitato reinserendo il commento # ad inizio riga.

Andiamo ora a trovare la parte seguente ed inserire alcune righe in modo che all’avvio di Domoticz i file temporanei di SQLite vengano creati nel RAM disk aggiungendo le righe comprese fra i commenti “edit to move …” e “end of edit”:

#
# Function that starts the daemon/service
#
do_start()
{
       # edit to move SQLite temp files to RAM drive
       ln -sf /tmp/domoticz/domoticz.db-shm /home/pi/domoticz
       ln -sf /tmp/domoticz/domoticz.db-wal /home/pi/domoticz
       ln -sf /tmp/domoticz/domocookie.txt /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
}

CTRL+O e CTRL+X per salvare e uscire.

Andiamo ora ad impostare logrotate per limitare lo spazio occupato dal log di Domoticz:
Creiamo un file chiamato domoticz in /etc/logrotate.d

sudo nano /etc/logrotate.d/domoticz

ed inserite nel file quanto segue e salvate

/var/log/domoticz.log 
{ 
rotate 4 
weekly 
missingok 
notifempty 
delaycompress 
compress 
postrotate 
if [ -f /var/run/domoticz.pid ]; then 
/etc/init.d/domoticz.sh restart > /dev/null 
fi 
endscript 
}

Da notare che se si esegue questa operazione si perdono i log di openwave in caso di riavvio del sistema.
Il motivo per cui è comunque importante spostare in Ram disk anche questi log è perchè nel caso in cui alcuni dispositivi zwave abbiano dei problemi, openwave registra una moltitudine di log eseguendo quindi molte scritture sulla scheda SD
Con Domoticz fermo eseguite:

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

Riavviamo Domoticz eseguendo da putty

sudo systemctl restart domoticz.service

Se dopo il riavvio vi comunica che è necessario eseguire un systemctl daemon-reload, fatelo.

  • domoticz_log_ramdrive.txt
  • Ultima modifica: 2020/03/24 11:57
  • da flane