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

Don*_*ill 20 linux raid lvm ssd trim

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

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

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

这还有可能吗?如果是这样,如何?如果没有,是否有任何进展?

sys*_*138 14

从 2.6.37 开始,它应该存在 ( source )。内核不会在后台执行此操作,块丢弃过程当前设计为按需运行(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.
Run Code Online (Sandbox Code Playgroud)

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

EXT4 不久前添加了支持,LVM 也是如此。RAID 是没有支持的一键。截至 2011 年 1 月 13 日,似乎已添加支持。在 2.6.38 或 2.6.39 中寻找它。


时间过去了,TRIM 支持肯定包含在 3.7 内核中RAID10提交内容如下

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


poi*_*ige 8

更新。2020-06-17

回顾 2020 年的提交历史:

2 年后有关于md(LSR) 的承诺,其中之一:

— 基本上在我之前编辑答案后的几个月内,Linux 内核就能够在设置中支持块丢弃。


以前版本的答案:

更新。2012-07-17 更新 :感谢Wodin让我知道-根据lkml.org/lkml/2012/3/11/261这个功能已经加入提出了最近。建议!=接受,不过。

更新。2011-02-01 不可能,因为 Linux Soft RAID 不支持这个(还?)。

  • 现在确实如此。https://lkml.org/lkml/2012/3/11/261 (3认同)