====== 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\\
\\
===== STEP 1 – Creiamo il RAM Drive e montiamolo =====
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
===== STEP 2 – Spostare il log ed i file temporanei di Domoticz in RAM disk =====
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
}
===== STEP 3 – Spostare il log di openzwave in RAM drive (saltate il punto se non utilizzate zwave) =====
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
===== STEP 4 – RIAVVIARE DOMOTICZ =====
Riavviamo Domoticz eseguendo da putty
sudo systemctl restart domoticz.service
Se dopo il riavvio vi comunica che è necessario eseguire un systemctl daemon-reload, fatelo.