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.