使用软件 md-raid 在 SSD 上实现 Linux fstrim

ned*_*edm 15 linux ssd software-raid

我目前正在构建一个新的 Ubuntu 13.04 服务器,在一个 RAID 镜像中有 2 个 256GB SSD 来运行 MariaDB 实例。我们通常将LVM 置于 md raid 1 阵列之上的 dm-crypt 加密之上,但之前未在此设置中使用 SSD。

我的问题是,由于我们将使用较新的 (3.8) 内核,因此按照我的理解,它应该允许将 fstrim 直接应用于 raid 卷。我现在可以简单地依靠它fstrim -v /通过 cron 作业正常工作,就像没有进行突袭一样吗?即使 LVM 位于raid 卷之上也是如此吗?我们计划使用驱动器上的硬件加密,因此我们不需要 dm-crypt。

注意:我知道有几个类似的问题涉及向后移植更新的内核版本和使用 md 卷实现丢弃 - 我特别询问是否fstrim适用于 md-raid 而无需在较新的内核中进一步修改。

更新:只是想跟进并发布这工作正常。现在有一份工作在cron.daily是运行fstrim上//boot它的工作完美。此外,事实证明 SSD (Samsung 840 Pros) 上的硬件加密似乎需要 TPM 支持,而我们没有,因此我们确实配置了软件加密,如链接所示。通过添加( not to ) 中discard的选项和的 devices 部分,即使通过 LVM、加密和 RAID 层,fstrim 也能正常工作。 有关在具有 LVM 和加密的 SSD 上配置修剪/丢弃的更多信息,请访问此处。/etc/crypttab/etc/fstabissue_discards = 1/etc/lvm/lvm.conf

Mic*_*ton 12

大约一年前,mdraid RAID 1 和 10 对 TRIM 支持的补丁增加了。

您可以通过使用discard选项(启用自动 TRIM)挂载文件系统来测试内核的支持。如果它受支持,您将在 syslog 中看到一条消息或dmesg如下所示:

EXT4-fs (md1): re-mounted. Opts: discard,data=ordered
Run Code Online (Sandbox Code Playgroud)

否则你会得到这个:

EXT4-fs warning (device md1): ext4_issue_discard:2619: discard not supported, disabling
Run Code Online (Sandbox Code Playgroud)

您无需重新启动即可查看它是否正常工作:

mount /dir -o remount
Run Code Online (Sandbox Code Playgroud)

  • 如果您不打算进行自动修剪,请记住之后更改安装选项。:) (3认同)
  • @MichaelHampton 不幸的是,这不是真的。例如,使用内核 3.2,在 MD(soft) RAID1 上的 LVM 上带有 ext4,(重新)挂载带有丢弃的 ext4 不会报告错误,但也不会工作(因为 3.2.x 内核中的 MD RAID1 不支持传递修剪命令)。所以唯一确定的方法是[测试它](https://clusterbuffer.wordpress.com/2011/10/02/how-do-you-know-trim-is-working-with-your-ssd-在您的系统中/) (3认同)
  • 作为记录,2012 年 10 月 11 日添加了对 RAID1 的 TRIM 支持,请参见此处 http://lkml.indiana.edu/hypermail/linux/kernel/1203.1/01772.html 所以内核 3.4 不支持它,但 3.8 支持(不知道 3.5/3.6/3.7) (2认同)