Ubuntu ha experimentado un error interno… enviar informe de errores. Ubuntu ha experimentado un error interno… enviar informe de errores. Ubuntu ha experimentado un error interno… enviar informe de errores. Ubuntu ha experimentado un error interno… enviar informe de errores.

Hasta 4 ventanitas con ese error me salieron ayer en la Ubuntu 16.04 de mi portátil Acer Aspire. Que si compiz, que si el applet de network manager, que si… y le dije, hijoeputa malparío, plata o plomo. Y le di plomo.

El caso es que he vuelto a la gran madre, a Debian, en este caso a Debian testing con Gnome.

Ahora que tengo un SSD en este portátil, en concreto un 850 EVO de Samsung, es normal que me preocupe por el tema TRIM, aunque en realidad estamos más preocupados con esto de lo que realmente hace falta. La vida útil de un SSD aún sin hacerle trucos es mucho más larga de lo que creemos, incluso nos podría enterrar a más de uno.

Pero bueno, ya que estamos aquí vamos a ver como pasarle el TRIM a nuestro SSD en Debian vía systemd.

Debian 8 y Debian testing (actual Stretch) que es en donde yo estoy, tienen fstrim.service y fstrim.timer disponibles en el sistema pero no están cargados en systemd de forma predeterminada.

Antes de nada, para asegurarnos que esto es así instalamos lo siguiente, que lo más normal es que ya lo tengamos instalado pero por si las moscas.

En una terminal con sudo o como root:

sudo apt install util-linux

Ahora vamos a copiar los dos servicios fstrim de antes a su sitio en systemd.

Con sudo o como root:

sudo cp /usr/share/doc/util-linux/examples/fstrim.service /etc/systemd/system
sudo cp /usr/share/doc/util-linux/examples/fstrim.timer /etc/systemd/system

Activamos el timer usando systemd:

sudo systemctl enable fstrim.timer

Desde este momento fstrim nos trimeará nuestro SSD una vez por semana, no es necesario que lo haga a diario.

Podemos comprobarlo entrando al timer.

yoyo@debian:~$ cat /etc/systemd/system/fstrim.timer
[Unit]
Description=Discard unused blocks once a week
Documentation=man:fstrim

[Timer]
OnCalendar=weekly
AccuracySec=1h
Persistent=true

[Install]
WantedBy=timers.target

Para asegurarnos también podemos comprobar si timer está activo. Como podéis apreciar, sin novedad en el frente.

yoyo@debian:~$ sudo systemctl status fstrim.timer
[sudo] password for yoyo: 
● fstrim.timer - Discard unused blocks once a week
   Loaded: loaded (/etc/systemd/system/fstrim.timer; enabled; vendor preset: enabled)
   Active: active (waiting) since Wed 2017-01-11 19:55:52 CET; 47min ago
     Docs: man:fstrim

ene 11 19:55:52 debian systemd[1]: Started Discard unused blocks once a week.

Y nada más, así tendríamos soporte TRIM en Debian vía systemd, algo que no le gustará a Linuxito xD

¿Y si queremos soporte TRIM en Debian pero sin tirar de systemd?

Pues se me ocurre a mi, y digo, se me ocurre a mi, que podría valer como lo hace Ubuntu, usando fstrim mediante cron. A fin de cuentas Debian y Ubuntu internamente son lo mismo o casi lo mismo ¿no?

Crearemos el archivo o fichero fstrim en /etc/cron.weekly/. Al igual que antes por systemd este también será para que lo ejecute semanalmente, tal y como viene en Ubuntu por defecto.

En mi caso estoy en Gnome y usaré gksu y gedit. En una terminal:

gksu gedit /etc/cron.weekly/fstrim

Emulando a un taringuero copiamos y pegamos lo siguiente, y guardamos cambios y cerramos.

#!/bin/sh
# trim all mounted file systems which support it
/sbin/fstrim --all || true

Le daremos permisos de ejecución al fichero creado.

Con sudo o como root:

sudo chmod +x /etc/cron.weekly/fstrim

Y ya está. Se supone que al igual que en Ubuntu deberá ejecutar el script fstrim de /sbin una vez a la semana.

Yo voy a probar ambos métodos para ver que tal, de hecho ya tengo puesto el de systemd, en un par de semanas pruebo el de vía cron por si tuviera algo que contar pero ya os digo, yo supongo que debe funcionar en Debian igual que en Ubuntu, si estoy equivocado dejadlo en los comentarios.

Por si no nos vemos luego, buenos días, buenas tardes y buenas noches.

Referencias | DigitalOcean