====== RamLog per Raspbian Jessie/Stretch ====== **FONTI:** * [[https://habrahabr.ru/post/272279/|Ramlog sulle distribuzioni con systemd]] * [[https://www.flurweg.net/raspberry-pi2-debian-server-image-2015-09-01-ca-200mb/|Raspberry Pi2 Debian Jessie]] * [[http://blog.nunosenica.com/reduce-write-operations-to-sd-card-with-raspbian/|Reduce write operations to SD card with Raspbian]] **NON USARE QUESTA PROCEDURA CON LA DISTRO RASPBIAN WHEEZY** funziona solo ed esclusivamente con la distro Raspbian Jessie/Stretch Con Raspbian Jessie non è possibile installare RamLog, in quanto Jessie a differenza di Wheezy utilizza systemd e Ramlog non è attualmente compatibile con systemd.\\ E' però possibile ricreare il funzionamento di Ramlog anche su Raspbian Jessie, creando un servizio che compie le medesime operazioni di Ramlog. Quanto indicato nella presente pagina è **già incluso nell'immagine SolarJessie** e non è pertanto necessario eseguire quanto segue ===== Installare RamLog ===== 1) Da terminale creiamo il servizio ramlog (/usr/bin/ramlog): sudo nano /usr/bin/ramlog ed incolliamo il seguente codice: #!/bin/sh . /lib/lsb/init-functions start() { log_begin_msg "RAMLOG: Read files from disk.." tar xfz /var/ram_log.tar.gz -C / log_end_msg 0 } stop() { log_begin_msg "RAMLOG: Write files to disk.." tar cfz /var/ram_log.tar.gz --directory=/ var/log/ log_end_msg 0 } case "$1" in start) start ;; stop) stop ;; flush) stop ;; *) echo "Usage: $0 {start|stop|flush}" exit 1 esac CTRL+O per salvare e CTRL+X per uscire Diamo ora i corretti permessi al file: sudo chmod a+x /usr/bin/ramlog 2) Creiamo una voce per systemd (/etc/systemd/system/ramlog.service): Da terminale sudo nano /etc/systemd/system/ramlog.service ed incolliamo il seguente codice: [Unit] Description=Ramlog After=local-fs.target Before=cron.service syslog.service [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/ramlog start ExecStop=/usr/bin/ramlog stop [Install] WantedBy=multi-user.target CTRL+O per salvare e CTRL+X per uscire 3) aggiungiamo a cron il comando da eseguire ogni giorno a mezzanotte ed 1 minuto sudo nano /etc/crontab e aggiungiamo la seguente riga alla fine 1 0 * * * root /usr/bin/ramlog flush >/dev/null 2>&1 CTRL+O per salvare e CTRL+X per uscire 4) modifichiamo fstab per creare ramdisk della cartella /var/log/ sudo nano /etc/fstab ed incolliamo la riga: tmpfs /var/log tmpfs nodev,nosuid 0 0 CTRL+O per salvare e CTRL+X per uscire 5) installiamo il servizio eseguendo da terminale insserv systemctl enable ramlog.service 6) avviamo quindi il servizio eseguendo sempre da terminale systemctl start ramlog.service 7) riavviamo il raspberry sudo reboot Ora dovrebbe venire creato il ramdisk della cartella /var/log Per **disabilitare RAMLog** se necessario: systemctl disable ramlog.service ===== Verifica funzionalità RamLog ===== Per verificare che Ramlog sia attivo, puoi comunque fare quanto segue: 1) controllare se nella cartella /var/ si trova un file compresso dal nome ram_log.tar.gz con la data dell'ultimo riavvio/spegnimento del raspberry, oppure dell'ultima periodicità del comando inserito in cron (di default prevista alle 00:01 di ogni giorno) {{ :wiki:ramlog_jessie_1.jpg?nolink |}} Questo è il file che verrà scompattato e copiato nella cartella in memoria temporanea /var/log al riavvio del raspberry Viene creato al primo avvio del servizio ramlog oppure con la periodicità impostata in cron 2) eseguire da Putty il seguente comando: df e controllare che la cartella /var/log sia del tipo tmpfs cioè una memoria temporanea (ramdisk) {{ :wiki:ramlog_jessie_2.jpg?nolink |}} Se sono verificati i due punti sopra significa che RamLog è attivo e funzionante. ===== Disabilitare il file swapping ===== Una ulteriore protezione per evitare la corruzione della scheda SD è di disabilitare lo swapping Il Raspberry usa dphys-swapfile per controllare lo swapping. Questo crea dinamicamente una partizione di swap. Utilizzeremo questo tool per disabilitare lo swap. Eseguire i seguenti comandi da terminale per disabilitare lo swap: sudo systemctl disable dphys-swapfile Questa soluzione non è però permanente ed al riavvio il raspberry continuerebbe a creare lo swap file. Per rendere permeanente la modifica è necessario rimuovere il pacchetto dphys-swapfile sudo apt-get remove dphys-swapfile Infine riavviamo il raspberry sudo reboot Fatto ciò potremo eseguire il commando free -m per verificare l’uso della memoria: {{ :wiki:ramlog_swap.png?nolink |}} Troveremo che lo swap è stato disabilitato. ===== Spostare il file log di lftp ===== Se utilizzate il backup ftp con il comando lftp, ad ogni esecuzione lftp creerà un file di log nella cartella Se volete spostare la destinazione di tale file nella cartella /var/log/lftp in modo che si trovi in ramdisk e non vengano effettute scritture sulla sd sarà necessario editare il file /etc/lftp.conf ed aggiungere alla fine le righe: ## LOG FILE set xfer:log true set xfer:log-file /var/log/lftp/transfer_log Sarà inoltre necessario ceare la cartella /var/log/lftp con il comando mkdir /var/log/lftp Se invece volete proprio disabilitare il log: ## LOG FILE set xfer:log false ===== Spostare la cartella /tmp in ramdisk (tmpfs) ===== Per impostazione predefinita Raspbian è già configurato per montare diverse cartelle in tmpfs, /dev/shm, /run, /sys/fs/cgroup, ma alcune applicazioni usano la cartella /tmp per creare i file temporanei. E' eventualmente possibile spostare anche questa cartella in ramdisk. Attenzione che in questo modo i file che si trovano in /tmp diventeranno temporanei e non permanenti, cioè andranno persi in caso di riavvio. systemctl enable tmp.mount Con Raspbian Stretch il comando sopra non funziona più a causa di [[http://metadata.ftp-master.debian.org/changelogs/main/s/systemd/unstable_changelog|systemd 220-6 6]].\\ E' necessario spostare il file tmp.mount da /usr/share/systemd/ a /etc/systemd/system/ con il comando sudo mv /usr/share/systemd/tmp.mount /etc/systemd/system/ e, dopo un riavvio, controllare con il comando sudo df -k | grep tmpfs l'effettivo spostamento della cartella /tmp in tmpfs