RamLog per Raspbian Jessie/Stretch

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:

/usr/bin/ramlog
#!/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:

/etc/systemd/system/ramlog.service
[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:

/etc/fstab
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

  • ramlog_jessie.txt
  • Ultima modifica: 2018/08/23 11:12
  • da flane