È possibile far funzionare SSD TRIM (scarto) su RAID software ext4 + LVM + in Linux?


18

Usiamo RAID1 + 0 con md su Linux (attualmente 2.6.37) per creare un dispositivo md, quindi usiamo LVM per fornire la gestione del volume sulla parte superiore del dispositivo, quindi usiamo ext4 come nostro filesystem sui gruppi di volumi LVM.

Con gli SSD come unità, vorremmo vedere i comandi TRIM propagarsi attraverso i layer (ext4 -> LVM -> md -> SSD) sui dispositivi.

Sembra che i kernel 2.6.3x recenti abbiano aggiunto molti nuovi supporti TRIM relativi a SSD, inclusa una maggiore copertura degli scenari di Device Mapper, ma non riusciamo ancora a farlo scorrere correttamente.

È ancora possibile? Se é cosi, come? In caso contrario, sono stati fatti progressi?



Risposte:


7

Impossibile, perché Linux Soft RAID non supporta questo (ancora?).

UPD. : Grazie a Wodin per avermelo fatto notare - secondo lkml.org/lkml/2012/3/11/261 questo funzionale è stato aggiunto recentemente proposto . proposto ! = accettato , però.


Puoi ancora negare questa risposta, ma questo non farebbe in modo che LSR supporti TRIM :)
poige


@Wodin, non riesco a trovare le modifiche proposte anche in 3.5. Non sembrano essere accettati.
poige,

14

A partire da 2.6.37, dovrebbe essere presente ( fonte ) . Il kernel non lo fa in background, il processo di eliminazione dei blocchi è attualmente progettato per essere eseguito su richiesta (cron script!). Il supporto di dm-crypt non esiste ancora.

Il 13 gennaio 2011 una patch è stata unita in dm-raid1.c che recita:

dm raid1: support discard

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

Non sono al 100%, ma penso che sia la finestra di unione per 2.6.38.

EXT4 ha aggiunto supporto qualche tempo fa, così come LVM. RAID è l'unica chiave che non ha supporto. A partire dal 13/01/2011, sembra che il supporto sia stato aggiunto. Cercalo in 2.6.38 o forse 2.6.39.


Il tempo è passato e il supporto TRIM è sicuramente incluso nel kernel 3.7 . Il commit per RAID10 recita :

Questo fa sì che md raid 10 supporti TRIM. Se un disco supporta lo scarto e un altro no, oppure uno ha discard_zero_data e un altro no, potrebbero esserci incoerenze tra i dati di tali dischi. Ma questo non dovrebbe importare, i dati scartati sono inutili. Ciò aggiungerà una copia extra nella ricostruzione però.


Ho visto quel thread e i relativi commit, ma come ho detto nella domanda - significa che passerà correttamente non solo LVM (Device Mapper) ma anche md (Software RAID)?
Don MacAskill,

1
Sembra promettente, ma la mia comprensione è che dmraid viene utilizzato principalmente per i cosiddetti controller RAID hardware 'fakeRAID'. Quello di cui sto parlando è un array mdadm RAID-1 (+0) solo più tipico del software con LVM in cima. AFAIK, questa configurazione non beneficia della nuova capacità di dmraid di gestire gli scarti. Giusto?
Don MacAskill,

1
@DonMacAskill Il file 'raid1.c' non ha alcun commit che fa riferimento a TRIM, FITRIM o 'dispose'. Quindi, sembra che mdadm - il supporto per la creazione di RAID non ci sia ancora.
sysadmin1138

@ sysadmin1138 Penso che intendi discard, come si chiama nel kernel di Linux. E quella patch sembra riferirsi a scartare.
Michael Hampton

1

Mdtrim potrebbe aver bisogno di più lavoro:

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

0

È possibile utilizzare il mio script MDTRIM ( https://github.com/Cyberax/mdtrim/ ) per TRIM lo spazio vuoto su RAID ext4 / 3 livello 1. Lo iniziamo periodicamente da cron e funziona benissimo per noi.

È possibile aggiungere supporto per altri livelli RAID, ma non ho tempo (o necessità) per questo.


0

Come suggerito qui È possibile utilizzare

lsblk -D

per verificare se i tuoi dispositivi a blocchi passano attraverso i comandi di eliminazione.

Si noti inoltre che la sezione dispositivi in lvm.conf contiene un'opzione issue_discards. Vedere

man 5 lvm.conf

per maggiori informazioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.