我对各种方式感到困惑LUKS
//dmcrypt
cryptsetup
我对通过 Linux 内核命令行启用 //discard/TRIM 操作的
-
rd.luks.allow-discards
允许在所有 LUKS 分区上使用丢弃 (TRIM) 请求。
这
systemd-cryptsetup-generator
联机帮助页luks.options=, rd.luks.options=
...如果仅指定了没有 UUID 的选项列表,则它们适用于其他地方未指定的任何 UUID,并且在 /etc/crypttab 中没有条目。 ...
论据
rd.luks.options=discard
建议这里。这Arch wiki 有关 LUKS 和 SSD 的部分 显示第三个以冒号分隔的字段:
cryptdevice=/dev/sdaX:root:allow-discards
问题:
discard
和 和有什么区别allow-discards
?前者是强制的,后者是可选的吗?- 是否会
luks.options=
或rd.luks.options=
应用给定的cryptdevice=/dev/sda2
(例如不是 UUID)?如果cryptdevice=
给定一个 UUID,这是否算作“在其他地方指定”呢? - 如果已经给出了选项,
luks.options=
是否会rd.luks.options=
覆盖/追加/前置?cryptsetup=
rd.luks.allow-discards
如果到处都需要 TRIM,那么使用看起来最简单的方法有什么缺点吗?
答案1
这在一定程度上取决于您使用的发行版以及 dracut 在 initramfs 中包含哪些组件。
例如,该cryptdevice=
选项被解释为加密钩子。因此,它仅与包含此挂钩的 initramfs 映像相关。
rd.luks.allow-discards
和的缺点rd.luks.allow-discards=
是它根本不起作用。这些选项的描述dracut.cmdline(7)
不正确。我在 Fedora 26 下测试了它,它不起作用,甚至还有一个Fedora 19 的错误报告其中讨论了记录行为与实际行为之间的偏差,并因无法修复而关闭。
和更通用luks.options=
,rd.luks.options=
因为您基本上可以在其中放置任何有效的 crypttab 选项,例如discard
。由于它们的解释systemd-cryptsetup-generator
不关心cryptdevice=
您不能期望这些选项之间有有用的交互。
请注意,luks.options=
仅对以下设备有效不是在 initramfs 映像文件中列出etc/crypttab
。
因此,要为启动期间打开的 dm-crypted 设备启用 dm-crypt 直通 SSD 修剪支持(也称为丢弃),您有 2 个选项:
- 添加
rd.luks.options=discard
到内核命令行并确保 initramfs 映像不包含etc/crypttab
- 将丢弃选项添加到相关条目中,
/etc/crypttab
并确保当前版本包含在 initramfs 映像中。
您可以用于lsinitrd /path/to/initramfs etc/crypttab
检查 initramfs 映像、dracut -v -f /path/to/initramfs-image
在更改后重新生成映像/etc
以及dmsetup table
查看加密设备是否实际上是使用丢弃选项打开的(相关条目应包含该字符串allow_discards
)。
答案2
Necro回答问题:discard和allow-discards有什么区别?
AFAIK:DISCARD 是通过“mount”命令读取的,因此可以将其放在 fstab 和 crypttab 上,如下所示山选项
ALLOW-DISCARDS 由“cryptsetup”命令读取,因此它在 fstab 或 cripttab 文件中没有位置。还有更多,但亲爱的读者,这有待您去发现。