FONTI:
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
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
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)
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)
Se sono verificati i due punti sopra significa che RamLog è attivo e funzionante.
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:
Troveremo che lo swap è stato disabilitato.
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
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 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