LUKS 丢弃/TRIM:冲突的内核命令行选项

Tom*_*ale 6 dm-crypt luks cryptsetup kernel-parameters

我的各种方式之间的混淆LUKS/ dmcrypt/cryptsetup丢弃/ TRIM操作可以通过Linux的内核命令行来实现。

  1. 该dracut手册页:

    rd.luks.allow-discards

    允许在所有 LUKS 分区上使用丢弃 (TRIM) 请求。

  2. 该systemd-cryptsetup-generator手册页

    luks.options=, rd.luks.options=

    ... 如果只指定了没有 UUID 的选项列表,则它们适用于其他地方未指定的任何 UUID,并且 /etc/crypttab 中没有条目。...

    此处rd.luks.options=discard推荐该参数。

  3. 关于 LUKS 和 SSD的Arch wiki 部分 显示了第三个以冒号分隔的字段:

    cryptdevice=/dev/sdaX:root:allow-discards

问题:

  1. discard和 和有allow-discards什么区别?前者是强制性的,后者是可选的吗?
  2. 将luks.options=或rd.luks.options=申请给定cryptdevice=/dev/sda2(例如不是 UUID)?如果cryptdevice=给了一个 UUID,那算不算“在别处指定的”?
  3. 请问luks.options=或rd.luks.options=覆盖/添加/添加如果cryptsetup=已经给出了选择?
  4. rd.luks.allow-discards如果到处都需要 TRIM,那么使用似乎最简单的方法有什么缺点吗?

max*_*zig 2

这在一定程度上取决于您使用的发行版以及 dracut 在 initramfs 中包含哪些组件。

例如,该选项由encrypt hookcryptdevice=解释。因此,它仅与包含此挂钩的 initramfs 映像相关。

rd.luks.allow-discards和的缺点rd.luks.allow-discards=是它根本不起作用。这些选项的描述dracut.cmdline(7)不正确。我在 Fedora 26 下测试了它,它不起作用,甚至还有一个Fedora 19 的错误报告,其中讨论了记录行为和实际行为之间的偏差,并且由于无法修复而被关闭。

和更通用,因为您基本上可以在其中放置任何有效的 crypttab 选项,luks.options=例如。由于它们的解释不关心您不能期望这些选项之间有有用的交互。rd.luks.options=discardsystemd-cryptsetup-generatorcryptdevice=

请注意,仅对initramfs 映像文件中未luks.options=列出的设备有效。etc/crypttab

因此,要为启动期间打开的 dm-crypted 设备启用 dm-crypt 直通 SSD 修剪支持(也称为丢弃),您有 2 个选项:

  1. 添加rd.luks.options=discard到内核命令行并确保 initramfs 映像不包含etc/crypttab
  2. 将丢弃选项添加到相关条目中/etc/crypttab,并确保当前版本包含在 initramfs 映像中。

您可以用于lsinitrd /path/to/initramfs etc/crypttab检查 initramfs 映像、dracut -v -f /path/to/initramfs-image在更改后重新生成映像/etc以及dmsetup table查看加密设备是否实际上是使用丢弃选项打开的(相关条目应包含该字符串allow_discards)。