[linux-lvm] Does LVM RAID1 have TRIM support?

Jarkko Oranen oranenj at iki.fi
Thu Sep 4 11:06:40 UTC 2014


On Tue, 2014-09-02 at 16:49 -0500, Brassow Jonathan wrote:
> On Aug 24, 2014, at 11:08 AM, Jarkko Oranen wrote:
> 
> > Hello
> > 
> > Yesterday I experimented a bit with my RAID configuration on a pair of
> > SSDs, and it seems that LVM's native RAID does not have TRIM support...
> > At least, when I try to run fstrim manually, it complains even though
> > issue_discards is enabled. Plain LVs on top of an MD RAID PV do work, of
> > course.
> > 
> > Am I perhaps missing some configuration, or do RAID1 logical volumes
> > simply not have support for TRIM yet? I'm running a fairly recent kernel
> > (3.15.8) and lvm version says this:
> > 
> >  LVM version:     2.02.106(2) (2014-04-10)
> >  Library version: 1.02.85 (2014-04-10)
> >  Driver version:  4.27.0
> 
> TRIM is not yet supported in LVM RAID.  However, if MD has a solid TRIM implementation, it should be simple to enable it for LVM.  (This is because the MD kernel modules are used to perform RAID for LVM.  There is only a thin wrapper layer (linux/drivers/md/dm-raid.c) in device-mapper used to set-up the device.)

Thanks for the reply! Unfortunately, "simple" is relative. I have no
experience with kernel hacking at all (or even much C programming,
though I can read it), but I took a look at the code anyway to try to
pinpoint the place that tells userspace the ioctl isn't supported. 

>From my cursory browsing of the code I couldn't really tell how it
works, but for the most part it seemed like it *should* just work... It
does work just fine for linear volumes, and md/dm-linear.c doesn't seem
to do anything special to enable discard/FITRIM support, while discard
is specifically marked as supported in the md/linear.c and md/raid*.c
files if the underlying device supports it.

However, in dm.c there's the dm_blk_ioctl function which says the
following:
        /* We only support devices that have a single target */
        if (dm_table_get_num_targets(map) != 1)
                goto out;

Intuitively it looks like this could prevent a raid1 target from working
as it apparently consists of rmeta and rimage subcomponents, but I
couldn't determine for certain if my intuition is correct. I did some
testing, and discards work just fine on a linear volume spanning two
different partitions, while they fail on a "RAID" mirror of two similar
partitions. Clearly, two devices in a mapping are not a problem.

> 
> > As an aside, can anyone point me to documentation or other resources
> > about the pros and cons of LVM native RAID1 setup (which I understand
> > uses MD RAID internally?) vs. MD RAID PV + LVM. It seems I might be able
> > to save some SSD space and only mirror the LVs I actually need to keep
> > safe from crashes.
> 
> I don't know if there is a specific list to point to out there, but I can give you a couple pros/cons.
> PRO:
> - use one volume manager instead of two
> - LVM is better suited to creating devices of varying sizes - leaving spare capacity for snapshots, etc
> 
> CONS:
> - no trim support with RAID through LVM (although, I'm not sure of the state in MD)
> - no reshaping (changing from one RAID type to another) capability in LVM RAID.
> 
>  brassow
> 
> _______________________________________________
> linux-lvm mailing list
> linux-lvm at redhat.com
> https://www.redhat.com/mailman/listinfo/linux-lvm
> read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/





More information about the linux-lvm mailing list