Log2Ram, o cómo alargar un poco más la vida de tu SD

Sección Unicamente para Tutoriales y Guías
Responder
Avatar de Usuario
cpa
Pi Beta
Pi Beta
Mensajes: 159
Registrado: 10 Mar 2017, 23:18
Agradecido: 0
Agradecimiento recibido: 1 vez

Hace tiempo ya hablamos en algún hilo sobre el sistema de archivos F2FS como el primer método a seguir para alargar la vida de nuestra SD. Recordemos que el F2FS es un sistema de ficheros circular que evita el estar grabando y borrando siempre los mismos sectores físicos de nuestra SD, lo que haría deteriorarla prematuramente...

Pues bien, hoy os traigo otro pasito más para alargar aún más si cabe la vida de nuestras SD. Se trata de migrar el fichero /var/log (lugar donde van a parar todos los logs de los demonios y programas) hacia memoria. Está claro que la Pi no es que ande muy sobrada de memoria, pero sí que podemos robarle 40 ó 50Mb. tranquilamente para este menester... Los logs se escriben muchas veces en pocos segundos, y el hacer esto nos evitará escribir en la tarjeta durante mucho tiempo, lo cual es ideal...

Para ello, vamos a usar un scripting llamado "Log2Ram" de azlux.
Los pasos son bastante simples...

==> ESTE MANUAL DE INSTALACIÓN ES VÁLIDO PARA RASPBIAN BASADO EN JESSIE, Y OTRAS DISTROS BASADAS EN LA DEBIAN CON RAMA JESSIE

1º) Nos conectamos a la pi en modo terminal (por ssh, o directamente en la pi abriendo una consola).
2º) En el directorio que nos parezca (yo lo he puesto en /home/pi/dev) vamos a realizar un clonado del repositorio de Log2Ram, para ello hacemos:

Código: Seleccionar todo

git clone https://github.com/azlux/log2ram.git
3º) Se nos habrá creado una carpeta donde nos encontrábamos llamada "log2ram". Entramos en ella:

Código: Seleccionar todo

cd log2ram
4º) Ahora vamos a editar el fichero log2ram.conf. Podéis usar el editor que más rabia os de. En el ejemplo vamos a usar el Nano, que es el que más habitualmente se usa y viene de facto en Raspbian:

Código: Seleccionar todo

nano log2ram.conf
El contenido de este fichero simplemente es el siguiente:

Código: Seleccionar todo

# Configuration file for Log2Ram (https://github.com/azlux/log2ram) under MIT license.
# This configuration file is read by the log2ram service
# Size for the ram folder, it's define the size the log folder will reserve into the RAM. If it's not enough, log2ram will not be able to use ram. Check you /var/log size folde

SIZE=40M

# This variable can be set to true if you prefer "rsync" than "cp". I use the command cp -u and rsync -X, so I don't copy the all folder every time for optimization.
# You can choose which one you want. Be sure rsync is installed if you use it.

USE_RSYNC=true
Pues bien, en la opción de RSYNC vamos a poner true, porque rsync es mucho más eficaz que cp y ya viene también de facto en Raspbian, así que vamos a aprovecharnos de ello. También podemos moficar aquí el tamaño del disco virtual donde van a ir a parar los logs, pero creo que con 40Mb. tenemos más que suficiente!!!.

5º) Ahora, antes de instalar, igual convendría hacer una limpieza de nuestra carpeta de logs. También es una rutina que debemos de hacer de cuando en cuando, para evitar llenar con ficheros no necesarios nuestro disco ram. Ver más abajo el apartado de ===> LIMPIEZA DE LOGS

6º) Vamos a darle permisos de escritura al fichero de instalación, para ello simplemente hacemos un:

Código: Seleccionar todo

chmod +x install.sh
7º) Y finalmente instalamos...

Código: Seleccionar todo

sudo ./install.sh
(no os olvidéis el "./" delante del install.sh

Una vez concluida la instalación (no tarda ni dos segundos) nos pedirá reiniciar.

Código: Seleccionar todo

sudo reboot
Una vez que haya reiniciado, podemos ver si nuestro log2ram está funcionando. un simple comando nos ayudará a verlo:

Código: Seleccionar todo

df -h
El comando nos devolverá algo así como:

Código: Seleccionar todo

S.ficheros     Tamaño Usados  Disp Uso% Montado en
/dev/root         30G   4,6G   24G  17% /
devtmpfs         458M      0  458M   0% /dev
tmpfs            462M      0  462M   0% /dev/shm
tmpfs            462M   6,6M  456M   2% /run
tmpfs            5,0M   4,0K  5,0M   1% /run/lock
tmpfs            462M      0  462M   0% /sys/fs/cgroup
/dev/mmcblk0p1    63M    21M   42M  34% /boot
log2ram           40M    13M   28M  31% /var/log
tmpfs             93M      0   93M   0% /run/user/999
tmpfs             93M      0   93M   0% /run/user/1000
Nos tenemos que fijar en la línea log2ram. En mi caso, la he creado de 40Mb, de los cuales 13Mb. los tengo ocupados y aún me quedan 28Mb. disponibles.

Por otro lado, si nos vamos a /var y hacemos un ls, veremos que ahora tenemos dos directorios de log..., uno llamado "log", y otro llamado "log.hdd". El directorio "log" es realmente el disco ram, y el log.hdd apunta a la tarjeta SD. También podríamos hacerlo apuntar a un disco duro externo si nos apeteciera (si alguien está interesado que pregunte).

Por defecto log2ram copiará los logs de la memoria ram a la tarjeta SD cada hora. Si esto os parece excesivo, se puede aumentar el tiempo. Yo lo he puesto cada día (es decir, cada 24 horas). Para ello basta con poner el siguiente comando:

Código: Seleccionar todo

sudo mv /etc/cron.hourly/log2ram /etc/cron.daily/
==> LIMPIEZA DE LOS LOG's
Si vamos a la carpeta de los logs con un:

Código: Seleccionar todo

cd /var/log
y visualizamos los ficheros, veremos que tenemos, por un lado ficheros sin extensión (que son los logs actuales), luego otros ficheros con extensión (.1, .2, .x) que son los logs "rotados"* de días anteriores, y por otro lado tenemos uno ficheros terminados en .gz que también son logs antiguos y comprimidos.

Normalmente sólo vamos a necesitar los logs actuales, y como mucho los que terminan en .1 si queremos tener un mínimo histórico. Los otros los podemos borrar o mover a otra ubicación (bien a un disco externo, o a la SD si os apetece).

Así, por tanto, si queremos borrarlos podríamos hacer un:

Código: Seleccionar todo

sudo rm -R *.gz
y si queremos moverlos a otra ubicación haríamos:

Código: Seleccionar todo

sudo mv *.gz <destino>
donde "<destino> será la ubicación donde queramos llevar estos logs.
Nota: Si borramos en la carpeta /log, en la siguiente sincronización del log también se borrarán de log.hdd, por tanto, si queremos mantener copia del histórico tenemos que mover los ficheros al sitio donde decidamos...

Espero que os sea útil, y si tenéis cualquier duda, no vaciléis en consultar!!!

*Rotados: Hay un servicio llamado "logrotate" que lo que hace es cambiar el log actual donde van los mensajes de una aplicación o demonio por uno nuevo, guardando el anterior comprimido o sin comprimir, en otro fichero aparte.
Avatar de Usuario
Kike
Administrador
Administrador
Mensajes: 2311
Registrado: 13 May 2016, 18:53
Ubicación: Islas Baleares - Menorca
Agradecido: 47 veces
Agradecimiento recibido: 175 veces
Contactar:

Muchísimas gracias @cpa y @Drakkar , cada día me sorprende más la de cosas que me quedan por aprender :mrgreen:

Cada día mas orgulloso de esta comunidad y el aprendizaje que estoy dando gracias a esto.
¡Un abrazo!
Si lo puedes soñar, lo puedes hacer
Avatar de Usuario
LaCuota
Pi Alpha
Pi Alpha
Mensajes: 21
Registrado: 29 Jun 2016, 12:30
Agradecido: 0
Agradecimiento recibido: 0

Gracias! listo y funcionando perfecto.
solracinet
Pi Alpha
Pi Alpha
Mensajes: 19
Registrado: 26 Ago 2016, 09:56
Agradecido: 0
Agradecimiento recibido: 0

A probar, junto con f2fs!
Graciad

Envoyé de mon HUAWEI MT7-L09 en utilisant Tapatalk
Avatar de Usuario
Prody
Pi Alpha
Pi Alpha
Mensajes: 12
Registrado: 24 Jun 2017, 19:36
Agradecido: 0
Agradecimiento recibido: 0

Listo y funcionando a la primera!

Bravo! :mrgreen:
tec133
Pi Newbie
Pi Newbie
Mensajes: 3
Registrado: 26 May 2017, 11:56
Agradecido: 0
Agradecimiento recibido: 0

Pedazo tutorial, clarito y funcionando a la primera.

Muchas gracias
citripio
Pi Alpha
Pi Alpha
Mensajes: 34
Registrado: 21 Feb 2018, 18:19
Agradecido: 0
Agradecimiento recibido: 0

Pregunta, como puedo volver a que los logs sean cada pocas horas? Tengo ahora mismo tras un dia el espacio al 100%


Y para des instalar?
Alkimi
Pi Beta
Pi Beta
Mensajes: 108
Registrado: 21 Oct 2017, 19:14
Agradecido: 0
Agradecimiento recibido: 0

mis conocimientos de linux andan un poco oxidados, pero en lugar de moverlos a la ram no seria mas inteligente montar un enlace de /var/logs hacia /dev/null (creo que era asi) y asi directamente cuando escribe el log lo manda al agujero negro y ni siquiera escribe en la SD ni malgasta memoria. eso si se perderian por completo los logs pero se gana en no perder memoria ni sobre escribir sectores de la SD
Avatar de Usuario
egrueda
Pi God
Pi God
Mensajes: 3426
Registrado: 10 Feb 2017, 19:31
Agradecido: 7 veces
Agradecimiento recibido: 269 veces

Alkimi escribió: 17 Abr 2018, 22:02 mis conocimientos de linux andan un poco oxidados, pero en lugar de moverlos a la ram no seria mas inteligente montar un enlace de /var/logs hacia /dev/null (creo que era asi) y asi directamente cuando escribe el log lo manda al agujero negro y ni siquiera escribe en la SD ni malgasta memoria. eso si se perderian por completo los logs pero se gana en no perder memoria ni sobre escribir sectores de la SD
No, no sería más inteligente en absoluto.
No estamos hablando de perder los logs, sino de que no se escriban en la microsd para ahorrara operaciones de escritura.
Los logs son sumamente importantes. podrás reducirlos pero sería temerario no tenerlos.
Alkimi
Pi Beta
Pi Beta
Mensajes: 108
Registrado: 21 Oct 2017, 19:14
Agradecido: 0
Agradecimiento recibido: 0

bueno mi idea seria en plan "ya que todo funciona de manera estable" y no se va a tocar mas, tomo la opcion mas radical y efectiva.

Bien es cierto que los log es una fuente importante de informacion cuando algo falla pero cuando ya esta todo afinado y estable si se puede tomar esta medida.
Avatar de Usuario
egrueda
Pi God
Pi God
Mensajes: 3426
Registrado: 10 Feb 2017, 19:31
Agradecido: 7 veces
Agradecimiento recibido: 269 veces

Antes de eso puedes detener el servicio syslogd o incluso usar un rsyslog en otro servidor almque enviarle los logs, como hacen mucho teléfonos IP, webcams y aparatos similares.
El sistema *necesita* los logos. No es para que tú veas lo que pasa, es que algunos sistemas necesitan acceder a sus propios liga para funcionar.
No se debe destruir el sistema de registro de Linux, porque no solo no te aporta nada positivo sino que además es contraproducente.
Por muy afinado y estable que esté no justifica la mutilación del sistema. Y menos aún cuando es un sistema afinado y estable.
Responder