Linux 参数“allow-discards”和“root_trim”到底起什么作用?

Linux 参数“allow-discards”和“root_trim”到底起什么作用?

目前网上有很多与 SSD 相关的说明都说你应该添加允许丢弃root_trim=yes到你的 GRUB_CMDLINE_LINUX。我还没有找到一个为什么你应该这样做,即这些参数到底起什么作用(如果有的话!)。关于这个的文档在哪里?它是如何描述这两个参数的用途的?

根据Cryptsetup 1.4.0 发行说明

自内核 3.1 起,dm-crypt 设备可选择(非默认)支持块丢弃 (TRIM) 命令。如果要启用此操作,则必须在每次激活时使用 --allow-discards 手动启用它

cryptsetup luksOpen --allow-discards /dev/sdb test_disk 

但是当传递给内核(通过 GRUB_CMDLINE_LINUX)时是否相同?

编辑: Kernel.org 的内核参数列表没有(至少目前,2013 年 1 月)这两个选项。

答案1

据我所知,启动参数root_trim=yes是 Gentoo 特有的。其中genkernel有一个脚本,它查找参数并--allow-discards使用 cryptsetup 设置选项(请参阅其git 存储库)。此外,我发现许多 Ubuntu 或 Debian 用户的报告称,它无需参数即可运行。我还在 Ubuntu脚本root_trim中找不到任何行。update-initramfs

总而言之启动参数,但更多的是 的参数cryptsetup。 的文档--allow-discards可以在 的手册页中找到cryptsetup(8)

--允许丢弃
允许对设备使用丢弃 (TRIM) 请求。此选项仅适用于创造luksOpen或者环路打开

警告:启用此选项前请仔细评估特定的安全风险。例如,如果稍后可以在设备上轻松找到丢弃的块,则允许在加密设备上丢弃可能会导致有关密文设备的信息(文件系统类型、已用空间等)泄露。

需要内核版本 3.1 或更高版本。对于较旧的版本,此选项将被忽略。

基于此关于 TRIM 和 dm-crypt 的博客,TRIM 是上层(例如文件系统)通知设备哪些扇区不再使用(不再包含有效数据)并且设备不需要保留该数据内容的操作。

在 Linux 术语中,此操作称为丢弃。在 SCSI 世界中,它被称为 UNMAP 命令。

丢弃操作可以用于两个目的:精简配置(通知数据区域可以返回到分配池)和 SSD 操作优化。

丢弃对于 SSD 优化最为有用,因为内部架构使用的块比扇区大,并且必须先擦除块才能执行写入操作。有关不需要保留数据的扇区的信息非常有用,因为文件系统能够更有效地组织块,从而最大限度地减少数据碎片,同时延长磁盘寿命。

相关内容