¿Cómo habilitar TRIM?

189

Sé que el kernel de Linux admite TRIM a partir de la versión 2.6.33, por lo que debería haber soporte TRIM en ubuntu.

¿TRIM está habilitado de forma predeterminada o necesito cambiar algunas configuraciones o instalar software adicional para que funcione? ¿Si es así, cómo?

Uli
fuente
Acabo de seguir estas instrucciones en webupd8, que ofrece algunas opciones realmente buenas :-) webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html Probé la opción de recorte automático como se describe anteriormente en "Automatic TRIM" pero descubrí que configurar un cron diario funcionaba mucho mejor con mi configuración.
bmbaker

Respuestas:

197

Ubuntu 14.10 en adelante

En Ubuntu 14.10 y 15.04, TRIMming ocurre automáticamente cada semana en todos los SSD compatibles con fstrim.

$ tail -n1 /etc/cron.weekly/fstrim 
/sbin/fstrim --all || true

Desde 15.04 Ubuntu usa systemd y su temporizador ( man systemd.timer, Arch wiki )

systemctl list-timers
systemctl status fstrim.timer

Ubuntu 14.04

A partir de Ubuntu 14.04, el ajuste TRIM programado está habilitado de forma predeterminada para los SSD Intel, SAMSUNG, OCZ, Patriot y Sandisk. Si tiene otra marca, puede deshabilitar la verificación del proveedor ejecutando el siguiente comando:

sed -i 's/exec fstrim-all/exec fstrim-all --no-model-check/g' /etc/cron.weekly/fstrim

(o simplemente edite el archivo /etc/cron.weekly/fstrimy agregue --no-model-check)

Ubuntu 13.10 y versiones anteriores

Hay tres formas de realizar TRIM, manual, programada y automática:

Recorte manual

En Ubuntu esto se puede realizar con fstrim:

sudo fstrim /

sin embargo, no es necesario cuando TRIM automático o programado están habilitados, como se detalla en las secciones a continuación.

Nota: Para Ubuntu 11.04 y sistemas anteriores, fstrim no está disponible por lo que tiene que utilizar wiper.shsuministrado con hdparmen/usr/share/doc/hdparm/contrib/wiper.sh.gz

Recorte programado (recomendado)

Este es el método recomendado actualmente y está planificado para activarse por defecto para Ubuntu 14.04 . Aquí se explica cómo activarlo manualmente en versiones anteriores de ubuntu (11.10 a 13.10):

Cree un archivo de script de trabajo CRON semanal:

gksudo gedit /etc/cron.weekly/fstrim

Pegue el siguiente código en el archivo, luego guarde y cierre el archivo:

#! /bin/sh  

# By default we assume only / is on an SSD. 
# You can add more SSD mount points, separated by spaces.
# Make sure all mount points are within the quotes. For example:
# SSD_MOUNT_POINTS='/ /boot /home /media/my_other_ssd'  

SSD_MOUNT_POINTS='/'  

for mount_point in $SSD_MOUNT_POINTS
do  
    fstrim $mount_point  
done

Tenga en cuenta que lo anterior supone que solo su sistema de archivos raíz /está ubicado en un SSD. Si tiene más puntos de montaje que residen en uno o más SSD, agréguelos SSD_MOUNT_POINTScomo se explica en el código.

Haga que el script sea ejecutable:

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

Y finalmente pruébalo:

sudo /etc/cron.weekly/fstrim

Si no ve errores, su trabajo cron debería estar funcionando bien.

Recorte automático (obsoleto, lento)

El ajuste automático se admite desde Ubuntu 10.10 (kernel 2.6.33) con el sistema de archivos EXT4. Sin embargo, el envío de comandos TRIM al SSD en tiempo real, después de cada eliminación, se ha reconocido que hace que la eliminación sea mucho más lenta de lo habitual en algunas unidades. Por lo tanto, se recomienda un TRIM programado semanalmente a través de un trabajo cron (descrito anteriormente).

Para habilitar TRIM automático en una unidad o partición, deben montarse con la discardopción en fstab. Primero haga una copia de seguridad de su fstab y luego ábralo para editarlo:

sudo cp /etc/fstab ~/fstab-backup
gksudo gedit /etc/fstab

Agregue discarda la entrada de opciones fstab (separadas por comas) para la unidad SSD o cada partición.

UUID=00000000-0000-0000-0000-000000000000  /  ext4  discard,errors=remount-ro  0  1

Cierre y guarde fstab, luego reinicie y TRIM automático ahora debería estar funcionando.

Prueba de ajuste automático

Para probar si TRIM está funcionando, emita los siguientes comandos ( fuente ):

cd  / # Replace with SSD file system
sudo dd if=/dev/urandom of=tempfile count=100 bs=512k oflag=direct
sudo hdparm --fibmap tempfile

Desde la salida, copie el número debajo begin_LBAy verifique el nombre del dispositivo de su SSD: System->Administration->Disk Utilitypor ejemplo , sda, sdb, sdc ...

Ejecute lo siguiente pero reemplace [ADDRESS](begin_LBA) y sdX(nombre del dispositivo SSD) con los detalles obtenidos anteriormente.

sudo hdparm --read-sector [ADDRESS] /dev/sdX 

la salida debe ser una larga cadena de caracteres para esos sectores

sudo rm tempfile
sync

Repita el hdparmcomando desde arriba:

sudo hdparm --read-sector [ADDRESS] /dev/sdX 

Si solo obtiene ceros, la función TRIM automática está funcionando. Sin embargo, si después de eliminar el archivo los sectores aún no están vacíos, espere un momento y vuelva a ejecutar el comando.

Uli
fuente
55
Probando que TRIM no funcione realmente así: serverfault.com/a/401506/60525
chrishiestand
1
@Uli Por favor, alguien me ayude. No parece funcionar para mí. Tengo 4 particiones en mi SSD / /boot /usry /opty he utilizado otro disco duro para mi /home. Voy cd / #sdcy continúo con las instrucciones, pero nunca obtengo ceros. ¡Gracias por adelantado!
BugShotGG
1
@lightrush: ¡Gran edición! Gracias por mantener la respuesta actualizada.
Uli
1
Es posible que desee agregar un syncdespués del ddcomando, ya que al menos en mi sistema el archivo temporal no se crea de inmediato, por lo que hdparm no informa nada.
Andreas J.
2
systemd maneja esto ahora. sudo systemctl status fstrim.timer
globos
28

Tenga en cuenta que si está utilizando el cifrado, las soluciones publicadas aquí hasta ahora no lo ayudarán, porque también debe habilitar el soporte TRIM en la capa de cifrado. Esto se puede hacer con las versiones de kernel 3.1+ y cryptsetup versiones 1.4+, las cuales están incluidas en Ubuntu 12.04.

Encuentre mi guía sobre cómo configurar TRIM para particiones cifradas LUKS aquí


Cómo activar TRIM en particiones cifradas LUKS en Ubuntu y Debian


Este tutorial paso a paso le permitirá aprovechar la tecnología TRIM para sus particiones SSD encriptadas para cryptsetup 1.4 o superior y kernel 3.1 o superior. Esto lleva a una experiencia SSD sin problemas porque

"TRIM permite que el SSD maneje los gastos generales de recolección de basura, lo que de otra manera reduciría significativamente las futuras operaciones de escritura en los bloques involucrados, de antemano".

Configuración de ejemplo

Portátil con SSD como unidad única, Linux instalado en una sola partición raíz LVM ext4 con partición de intercambio LVM, ambas sobre partición lógica encriptada LUKS.

SSD: / dev / sda

sudo fdisk -l /dev/sda
/dev/sda1               # boot partition (83) (unencrypted, ext4)
/dev/sda2               # extended partition
/dev/sda5               # logical partition (83) with LUKS encryption

ls /dev/mapper
/dev/mapper/sda5_crypt         # encrypted LUKS device in physical /dev/sda5 partition
/dev/mapper/volumegroup-root   # rootpartition sda5_crypt
/dev/mapper/volumegroup-swap   # swap partition sda5_crypt

Cómo

  1. Haga una copia de seguridad de todos sus datos. Estás jugando con tu sistema de archivos, por lo que tener una copia de seguridad es simplemente una buena idea.
  2. Asegúrese de tener las versiones necesarias de kernel y cryptsetup (3.1 y 1.4, por ejemplo, en Ubuntu 12.04, tenga cuidado, al momento de escribir 12.04 todavía es beta).
  3. Agregue el parámetro de descarte a las opciones del sistema de archivos de los volúmenes LVM cifrados en su archivo / etc / fstab. Esto hace que el sistema de archivos de su partición LVM sea consciente de que desea usar TRIM.

    /dev/mapper/volumegroup-root    /   ext4 discard,noatime,nodiratime,errors=remount-ro    0    1
    
  4. Sin embargo, el último paso no es suficiente. Mientras LUKS no sepa que desea utilizar TRIM, bloqueará de manera efectiva todas las operaciones de TRIM provenientes del sistema de archivos de la partición LVM, por razones de seguridad. Agregue el parámetro de descarte a las opciones de dispositivo de cifrado en / etc / crypttab para hacer que LUKS acepte el comportamiento de descarte de la partición LVM.

    sda5_crypt UUID=e364d03f-[...]6cd7e none luks,discard
    
  5. Reconstruye tus initramfs. Las opciones de crypttab se almacenan allí y se usan en el arranque.

    sudo update-initramfs -c -k all
    
  6. Reiniciar.

  7. Compruebe si TRIM ahora está activo.

    sudo dmsetup table /dev/mapper/sda5_crypt --showkeys
    
  8. Si el último comando muestra un resultado como este (1 allow_discards al final), ya está todo listo.

    0  77656056  crypt  aes-cbc-essiv:sha256  abc[...]c7a0c  0  8:5  2056  1  allow_discards
    

Resultado

TRIM está activado. ¡Disfruta de tu SSD sin complicaciones!

nem75
fuente
@Marco Ceppi ¿alguna razón específica para la edición, algo que pasé por alto?
nem75
Simplemente ordenando la rebaja y eliminando la línea de "firma" (se supone que recibirá comentarios a través de comentarios y votaciones en el sitio.
Marco Ceppi
77
La guía debe incluirse aquí en caso de que el sitio / página no esté disponible.
Cas
Además de que esta es efectivamente una respuesta de solo enlace, no está funcionando en absoluto. La mayoría de ustedes usará LVM con LUKS, que no es capaz de propagar TRIM en 12.04. Vea esta respuesta para más información.
gertvdijk
1
Después de seguir estas instrucciones, ¿aún es necesario configurar un trabajo cron para recortar el disco en 14.04?
ajn