====== 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.