Linux y discos duros SSD

Hasta la fecha, no había podido disfrutar de la velocidad de los discos de estado solido SSD, pero esto de haberme incorporado al mundo de los ordenadores portátiles a costa de abandonar mi equipo de sobremesa (que lo destinaré a otros menesteres), es lo que tiene.

Lo cierto es que ya son varios los artículos consecuencia de este cambio de dispositivo, como puede ser “Nvidia, Ubuntu y Bumblebee“. Sin embargo, esto me ha dejado preocupado, dado que si no hubiera leído el artículo en Ubunlog no habría caído en este asunto, seguro. En el caso del dispositivo gráfico era algo mas que cantado, pero ¿aquí?

¿Que es TRIM?

TRIM permite que un sistema operativo informe a una unidad de estado sólido que bloques de datos no están en uso y pueden ser borrados.

Esto tiene especial importancia en el caso de los discos de estado sólido, dado que, tal y como indican en synaptic fault, las memorias flash de tipo NAND que componen los SSD no pueden sobreescribir datos existentes. Es decir, que antes de escribir datos nuevos sobre datos existentes, es necesario borrar los existentes. A esto hay que añadir que mientras que la unidad mínima de borrado es un bloque, la unidad de escritura mínima es una página (un bloque son 64 páginas).

Linux y discos duros SSD

Con esto, es evidente que conforme pasa el tiempo, el disco SSD se irá fragmentando, y disminuirá el rendimiento, porque para poder escribir datos nuevos, tendrá que reagrupar las páginas en un bloque, para lo que las copiará a una memoria intermedia, borrar el bloque y copiar las páginas.

Cuando se borra un archivo, lo que hace el sistema operativo es marcarlo como borrado dentro del sistema de archivos, pero sin comunicarlo al disco duro. TRIM se encarga de este trabajo, decirle a la memoria de estado sólido que está borrado, simplemente.

Activar TRIM en Ubuntu

Si tienes /home en el disco SSD, y está encriptada, te recomiendo que le des una intensa lectura a “Como activar correctamente TRIM para tu SSD en Linux: fstrim, lvm y dm-crypt“, puesto que es necesario activarlo en todas las capas.

En mi caso, /home lo tengo en una disco duro convencional, aunque cifrado, mientras que la raíz, /, está en el disco SSD, con lo que realizar la puesta en funcionamiento es mucho mas sencillo.

Existen distintos métodos para activar el soporte en el sistema de ficheros,

  • Añadir la opción discard en las opciones de montaje de /etc/fstab. Esto tiene el inconveniente de que cada vez que borramos un archivo, el sistema operativo le notifica al disco SSD que el espacio ocupado ya no está en uso,y consecuentemente el disco realizará una desfragmentación (copiará las páginas ocupadas por el archivo en otros bloques para poder borrar bloques) y borrado de dichos bloques, lo que evidentemente llevará un tiempo y reducirá la respuesta del disco.
  • Otra solución es realizar esta operación de forma periódica, (una vez al día por ejemplo). Con esto, por una parte mantenemos la respuesta del disco al no estar realizando borrados y desfragmentaciones continuas, y por otro mantenemos informado al disco duro de lo que vamos borrando. Pero además esta opción presenta ventajas adicionales, y es que en el caso de no haber activado correctamente TRIM en alguna capa recibiremos un mensaje de error, y en caso de un borrado por error podremos recuperar el archivo, cosa que en caso de realizar TRIM no será posible.

Si queremos realizar una operación TRIM diaria, podemos utilizar un script como el siguiente:

/etc/cron.daily/dofstrim


#!/bin/sh
for mount in /; do
    fstrim $mount
done

Esto en mi caso donde tengo / en el disco SSD

Indicar que fstrim y TRIM solo funcionan en sistemas de ficheros btrfs ext3 ext4 gfs2 jfs ocfs2 xfs. Y por último, y según la configuración por la que hayas optado, es posible que haya que regenerar el initramfs con update-initramfs -u (Debian y derivados) o dracut -f (Redhat y derivados) y reiniciar después de efectuar cambios los cambios en la configuración de LVM o dm-crypt.

Conclusión

Gracias por un lado al artículo de Ubunlog y WebUpd8, que me puso sobre aviso, y por otro lado al excelente artículo de Synaptic fault, he comprendido y solucionado este problema. Pero, siempre me cabe la duda de ¿que hubiera pasado de no haberlo leído?¿Esto no puede estar solucionado de forma automática al colocar un disco duro SSD?¿En otros Sistemas Operativos también nos encontraremos con este tipo de problemas?¿Como está solucionado este problema?¿Esto no debería contemplarlo por defecto Linux?

Como he indicado en la introducción, es algo que realmente me ha dejado preocupado, hasta la fecha solo me había preocupado por la tarjeta gráfica, y todo lo había achacado a un asunto de software libre/software privativo, pero en este caso, no se trata de esto, por que no está resuelto, ¿y se deja al usuario?.

 

Más información: Ubunlog | Wikipedia | WebUpd8 | Synaptic fault | Leanuxeros.com

 Fuente: atareao

 

Nota,

las imágenes y el script son de Synaptic fault, así como gran parte de la información que aquí se recoge. Recomiendo encarecidamente su lectura, así como una visita al sitio, en el que encontraras artículos altamente recomendables.

¿Quién está en línea?

Hay 2678 invitados y ningún miembro en línea