Optimización de sistemas de ficheros para SSD

En esta práctica del módulo de Sistemas Operativos Monopuesto, profundizaremos en la optimización avanzada de unidades de estado sólido (SSD). Aprenderemos a comprobar si el comando TRIM está habilitado y configurado correctamente en el sistema operativo (tanto en Windows como en GNU/Linux) para garantizar un rendimiento óptimo de escritura y prolongar la vida útil de las celdas de memoria flash.

Objetivo:

Verificar el estado del comando TRIM mediante herramientas nativas del sistema operativo, configurar su ejecución periódica y comprender su impacto en la prevención de la degradación de rendimiento en los SSD.

Escenario:

  • Un equipo con una unidad de estado sólido (SSD) instalada.
  • Acceso a la consola de comandos con privilegios de administrador o superusuario (sudo).

Instrucciones:

Opción A: Entorno Windows (Verificación de TRIM con PowerShell)

  1. Comprobación del estado de TRIM:
    • Abre PowerShell con privilegios de administrador.
    • Ejecuta el siguiente comando para verificar si el soporte TRIM está habilitado (DisableDeleteNotify debe tener un valor de 0):
      fsutil behavior query DisableDeleteNotify
    • Si el valor devuelto es 0, significa que TRIM está activado y operativo. Si devuelve 1, puedes habilitarlo ejecutando: fsutil behavior set DisableDeleteNotify 0
  2. Optimización manual de la unidad (Desfragmentación y optimización):
    • En Windows, los SSD no se desfragmentan de forma tradicional; en su lugar, se ejecutan comandos de reasignación TRIM. Puedes comprobar el estado y optimizar los discos ejecutando la herramienta gráfica Desfragmentar y optimizar unidades o mediante PowerShell con: Optimize-Volume -DriveLetter C -ReTrim -Verbose

Opción B: Entorno GNU/Linux (Verificación de TRIM y fstrim)

  1. Comprobación del soporte TRIM en el kernel y discos:
    • Abre una terminal con privilegios de superusuario.
    • Ejecuta el siguiente comando para comprobar si el kernel reconoce la capacidad de eliminación de bloques (discard) en tus discos:
      lsblk --discard
    • Revisa las columnas DISC-GRAN (granularity) y DISC-MAX (maximum): si muestran valores superiores a 0 bytes, el SSD y el controlador soportan TRIM de forma nativa.
  2. Ejecución manual y automatización de fstrim:
    • Puedes lanzar una operación de TRIM manual en todo el sistema de archivos montado ejecutando:
      sudo fstrim -v /
    • Para asegurar un mantenimiento periódico automático, en la mayoría de distribuciones modernas de Linux se activa un servicio en segundo plano del gestor de tareas systemd. Comprueba su estado ejecutando:
      sudo systemctl status fstrim.timer

Verificación

  1. Comprueba mediante los comandos indicados que el soporte TRIM está activo en tu sistema operativo.
  2. Verifica que la ejecución manual de fstrim o la optimización en Windows finaliza correctamente sin errores.
  3. Confirma que las tareas periódicas o servicios de optimización automática se encuentran habilitados.

Preguntas de reflexión:

  1. ¿Por qué es perjudicial desfragmentar un disco SSD utilizando los métodos tradicionales diseñados originalmente para discos mecánicos (HDD)?
  2. ¿Cómo interviene el comando TRIM en el proceso interno de recolección de basura (*Garbage Collection*) que realiza el controlador del SSD?
  3. ¿Qué diferencia operativa existe entre el modo de montaje con la opción discard en /etc/fstab frente a la ejecución periódica programada mediante fstrim.timer en GNU/Linux?
Haz clic aquí para ver la solución orientativa

1. ¿Por qué es perjudicial desfragmentar un disco SSD utilizando métodos tradicionales de HDD?

Los discos mecánicos necesitan desfragmentar para agrupar los datos contiguamente y evitar saltos físicos del cabezal. En cambio, un SSD accede a cualquier celda de memoria flash de forma instantánea sin importar su ubicación física, por lo que la desfragmentación tradicional es completamente innecesaria.

Además, realizar una desfragmentación clásica somete al SSD a miles de operaciones innecesarias de lectura y reescritura masiva de bloques, consumiendo inútilmente los ciclos de vida útiles de las celdas flash.


2. ¿Cómo interviene TRIM en la recolección de basura (*Garbage Collection*) del SSD?

Cuando el sistema operativo borra un archivo, por defecto solo marca el espacio como lógicamente libre en la tabla de archivos. El controlador del SSD no sabe qué celdas físicas ya no tienen datos útiles.

El comando TRIM avisa al controlador en tiempo real o por lotes sobre qué bloques ya no se usan. De este modo, la controladora del SSD puede realizar el proceso de Garbage Collection (limpiar y borrar celdas por completo en segundo plano) anticipadamente, evitando que el SSD tenga que hacer un ciclo lento de lectura-borrado-escritura justo en el momento en que se le va a exigir guardar datos nuevos.


3. ¿Qué diferencia operativa existe entre montar con discard y programar fstrim.timer?

La opción de montaje discard (TRIM en tiempo real) envía la orden TRIM al disco de forma síncrona e inmediata cada vez que se borra un archivo, lo que puede generar pequeñas penalizaciones de rendimiento en operaciones intensivas de E/S.

Por el contrario, el uso de fstrim.timer ejecuta un análisis periódico por lotes (habitualmente una vez por semana) que limpia de golpe todos los bloques liberados durante ese periodo en segundo plano, siendo el método recomendado y más eficiente en la actualidad.