¿Es posible hacer que SSD TRIM (descarte) funcione en ext4 + LVM + RAID de software en Linux?

18

Usamos RAID1 + 0 con md en Linux (actualmente 2.6.37) para crear un dispositivo md, luego usamos LVM para proporcionar administración de volumen en la parte superior del dispositivo, y luego usamos ext4 como nuestro sistema de archivos en los grupos de volúmenes LVM.

Con los SSD como unidades, nos gustaría ver que los comandos TRIM se propagan a través de las capas (ext4 -> LVM -> md -> SSD) a los dispositivos.

Parece que los núcleos recientes 2.6.3x han agregado una gran cantidad de nuevo soporte TRIM relacionado con SSD, incluida mucha más cobertura de los escenarios de Device Mapper, pero parece que todavía no podemos lograr que funcione en cascada correctamente.

¿Es esto posible todavía? ¿Si es así, cómo? Si no, ¿se está haciendo algún progreso?

Don MacAskill
fuente

Respuestas:

7

No es posible, porque Linux Soft RAID no es compatible con esto (¿todavía?).

UPD Gracias a Wodin por permitirme conocer - de acuerdo a lkml.org/lkml/2012/3/11/261 esta funcionalidad se ha añadido propuesto recientemente. propuesto ! = aceptado , sin embargo.

poige
fuente
Usted puede todavía menos esta respuesta, pero esto no haría LSR TRIM apoyo :)
poige
3
Lo hace ahora lkml.org/lkml/2012/3/11/261
Wodin
@Wodin, no puedo encontrar los cambios propuestos incluso en 3.5. No parecen ser aceptados.
poige
14

A partir de 2.6.37, debe estar presente ( fuente ) . El núcleo no lo hace en segundo plano, el proceso de descarte de bloque está actualmente diseñado para ejecutarse bajo demanda (secuencia de comandos cron). La compatibilidad con Dm-crypt aún no existe.

El 13 de enero de 2011 se fusionó un parche en dm-raid1.c que dice:

dm raid1: support discard

Enable discard support in the DM mirror target.
Also change an existing use of 'bvec' to 'addr' in the union.

No estoy al 100%, pero creo que esa es la ventana de fusión para 2.6.38.

EXT4 agregó soporte hace un tiempo, al igual que LVM. RAID es la clave que no tiene soporte. A partir del 13/01/2011, parece que se ha agregado soporte. Búscalo en 2.6.38 o tal vez 2.6.39.


Ha pasado el tiempo y el soporte TRIM definitivamente está incluido en el kernel 3.7 . El commit para RAID10 dice :

Esto hace que md raid 10 soporte TRIM. Si un disco admite descarte y otro no, o uno tiene discard_zero_data y otro no, puede haber inconsistencia entre los datos de dichos discos. Pero esto no debería importar, los datos descartados son inútiles. Sin embargo, esto agregará una copia adicional en la reconstrucción.

sysadmin1138
fuente
Vio ese hilo y las confirmaciones relacionadas, pero como dije en la pregunta, ¿significa esto que pasará correctamente no solo a través de LVM (Device Mapper) sino también md (RAID de software)?
Don MacAskill
1
Esto suena prometedor, pero entiendo que dmraid se usa principalmente para los llamados controladores RAID de hardware 'fakeRAID'. De lo que estoy hablando es de una matriz más típica de mdadm RAID-1 (+0) solo de software con LVM en la parte superior. AFAIK, esa configuración no se beneficia de la nueva capacidad de dmraid para manejar los descartes. ¿Derecho?
Don MacAskill
1
@DonMacAskill El archivo 'raid1.c' no tiene confirmaciones que hagan referencia a TRIM, FITRIM o 'dispose'. Por lo tanto, parece mdadm: crear soporte RAID aún no está allí después de todo.
sysadmin1138
@ sysadmin1138 Creo que quieres decir discard, que es lo que se llama dentro del kernel de Linux. Y ese parche parece referirse al descarte.
Michael Hampton
1

Mdtrim puede necesitar más trabajo:

Cyberax-mdtrim-0a40e8d# ./mdtrim.py -m /dev/md4 -s /home
Scratch directory is /home, trimmer file size is 0 GB 790 MB
Found slave sdc2 on /dev/sdc with MD offset 0 and partition offset 249856
Creating trimmer file
252,2: device not found in /dev
Traceback (most recent call last):
  File "./mdtrim.py", line 120, in <module>
    if lines[2].find("assuming %d byte sectors" % sector_size) == -1:
IndexError: list index out of range
Eros
fuente
0

Puede usar mi script MDTRIM ( https://github.com/Cyberax/mdtrim/ ) para RECORTAR el espacio vacío en RAID ext4 / 3 de nivel 1. Lo iniciamos periódicamente desde cron y funciona muy bien para nosotros.

Es posible agregar soporte para otros niveles RAID, pero no tengo tiempo (o necesidad) para eso.

Cyberax
fuente
0

Como se sugiere aquí , puede usar

lsblk -D

para verificar si sus dispositivos de bloque pasan por los comandos de descarte.

También tenga en cuenta que la sección dispositivos en lvm.conf contiene una opción issue_discards. Ver

man 5 lvm.conf

para más información.

sebastianwagner
fuente