可以让SSD TRIM(丢弃)在Linux中的ext4 + LVM +软件RAID上工作吗?


18

我们在Linux(当前为2.6.37)上将RAID1 + 0与md一起使用来创建md设备,然后使用LVM在设备顶部提供卷管理,然后将ext4用作LVM卷组上的文件系统。

使用SSD作为驱动器,我们希望看到TRIM命令通过层(ext4-> LVM-> md-> SSD)传播到设备。

看起来最近的2.6.3x内核已经添加了许多新的与SSD相关的TRIM支持,包括对Device Mapper方案的更多覆盖,但是我们似乎仍然无法正确地将其级联下来。

这可能吗?如果是这样,怎么办?如果没有,有什么进展吗?



Answers:



14

从2.6.37开始,它应该存在(。内核不在后台执行此操作,块丢弃过程当前设计为按需运行(cron脚本!)。DM-crypt支持尚不存在。

在2011年1月13日,一个补丁被合并到dm-raid1.c中,内容为:

dm raid1: support discard

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

我不是100%,但是我认为这是2.6.38的合并窗口。

EXT4和LVM一样都增加了支持。RAID是不支持的一键。截至2011年1月13日,似乎已添加了支持。在2.6.38或2.6.39中寻找它。


时间已经过去,并且3.7内核中确实包含了 TRIM支持。RAID10提交为

这使md raid 10支持TRIM。如果一个磁盘支持丢弃而另一个磁盘不支持,或者一个磁盘具有discard_zero_data而另一个不支持,则来自此类磁盘的数据之间可能会不一致。但这没关系,丢弃的数据是无用的。但是,这将在重建中添加额外的副本。


看到了该线程以及相关的提交,但是就像我在问题中所说的那样–是否意味着它不仅可以正确地通过LVM(设备映射器)而且可以通过md(软件RAID)?
Don MacAskill

1
这听起来很有希望,但是我的理解是dmraid主要用于所谓的“ fakeRAID”硬件RAID控制器。我要说的是最典型的纯软件mdadm RAID-1(+0)阵列,顶部是LVM。AFAIK,该设置不会受益于dmraid新增的处理丢弃物的功能。对?
Don MacAskill

1
@DonMacAskill'raid1.c'文件没有任何引用TRIM,FITRIM或'dispose'的提交。因此,看起来mdadm-毕竟还没有创建RAID支持。
sysadmin1138

@ sysadmin1138我想您的意思是discard,这就是Linux内核中所说的。该补丁似乎确实是指丢弃。
迈克尔·汉普顿

1

Mdtrim可能需要更多工作:

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

您可以使用我的MDTRIM脚本(https://github.com/Cyber​​ax/mdtrim/)在ext4 / 3 1级RAID上清空TRIM空空间。我们会定期从cron启动它,对我们来说非常有用。

可以添加对其他RAID级别的支持,但是我没有时间(或不需要)。


0

如此处建议您可以使用

lsblk -D

为了检查您的块设备是否通过丢弃命令。

另外请注意,部分设备lvm.conf包含一个选项issue_discards。看到

man 5 lvm.conf

有关更多信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.