Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

We use RAID1+0 with md on Linux (currently 2.6.37) to create an md device, then use LVM to provide volume management on top of the device, and then use ext4 as our filesystem on the LVM volume groups.

With SSDs as the drives, we'd like to see the TRIM commands propagate through the layers (ext4 -> LVM -> md -> SSD) to the devices.

It looks like recent 2.6.3x kernels have had a lot of new SSD-related TRIM support added, including lots more coverage of Device Mapper scenarios, but we still can't seem to get it to cascade down properly.

Is this possible yet? If so, how? If not, is any progress being made?

share|improve this question
    
See updated serverfault.com/a/229486/67675 :) –  poige Apr 7 '12 at 3:30
    
and serverfault.com/questions/227918/… –  poige Jul 11 '12 at 1:13

5 Answers 5

up vote 7 down vote accepted

Not possible, cause Linux Soft RAID doesn't support this (yet?).

UPD.: Thanks to Wodin for letting me know — according to lkml.org/lkml/2012/3/11/261 this functional has been addedproposed recently. proposed != accepted, though.

share|improve this answer
    
You can still minus this answer, but this wouldn't make LSR support TRIM :) –  poige Feb 2 '11 at 2:26
2  
It does now. lkml.org/lkml/2012/3/11/261 –  Wodin Apr 6 '12 at 23:29
    
@Wodin, thanks. –  poige Apr 7 '12 at 3:24
    
@Wodin, I can't find the proposed changes even in 3.5. They don't seem to be accepted. –  poige Jul 11 '12 at 1:10

As of 2.6.37, it should be present (source). The kernel doesn't do it in the background, the block discard process is currently designed to be run on demand (cron script!). Dm-crypt support doesn't exist yet.

On January 13th, 2011 a patch was merged into dm-raid1.c that reads:

dm raid1: support discard

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

I'm not 100%, but I think that's the merge-window for 2.6.38.

EXT4 added support a while ago, as did LVM. RAID is the one key that doesn't have support. As of 1/13/2011, it appears support has been added. Look for it in 2.6.38 or maybe 2.6.39.


Time has passed and TRIM support is definitely included in the 3.7 kernel. The commit for RAID10 reads:

This makes md raid 10 support TRIM. If one disk supports discard and another not, or one has discard_zero_data and another not, there could be inconsistent between data from such disks. But this should not matter, discarded data is useless. This will add extra copy in rebuild though.

share|improve this answer
    
Saw that thread, and the related commits, but like I said in the question - does this mean it'll properly pass through not only LVM (Device Mapper) but also md (Software RAID)? –  Don MacAskill Jan 30 '11 at 7:01
1  
This sounds promising, but my understanding is that dmraid is primarily used for so-called 'fakeRAID' hardware RAID controllers. What I'm talking about is a more typical software-only mdadm RAID-1 (+0) array(s) with LVM on top. AFAIK, that setup doesn't benefit from dmraid's new-found ability to handle discards. Right? –  Don MacAskill Feb 1 '11 at 21:59
1  
@DonMacAskill The 'raid1.c' file doesn't have any commits referencing TRIM, FITRIM, or 'dispose'. So, looks like mdadm --create RAID support isn't there yet after all. –  sysadmin1138 Feb 1 '11 at 22:25
    
@sysadmin1138 I think you mean discard, which is what it's called within the Linux kernel. And that patch does seem to refer to discard. –  Michael Hampton Aug 30 '12 at 20:10

As suggested here You can use

lsblk -D

in order to check if your blockdevices pass through the discard commands.

Also note that the section devices in lvm.conf contains an option issue_discards. See

man 5 lvm.conf

for more info.

share|improve this answer

Mdtrim may need more working:

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
share|improve this answer

You can use my MDTRIM script ( https://github.com/Cyberax/mdtrim/ ) to TRIM empty space on ext4/3 level-1 RAIDs. We start it periodically from cron and it works great for us.

Adding support for other RAID levels is possible, but I don't have time (or need) for that.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.