Linux的“ allow-discards”和“ root_trim”参数到底做了什么?


10

当前在线上有许多与SSD相关的说明,您应该在GRUB_CMDLINE_LINUX中添加allow- discardsroot_trim = yes。我还没有找到一个说明为什么要这样做的方法,也就是说,这些参数到底要做什么(如果有的话!)。关于此的文档在哪里?关于这两个参数的用途,它怎么说?

根据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月)没有这些选项。


也许看看webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html没有给出解释,而是一个快速的过程……
alci 2013年

1
就像我说的那样,net充满了说明,没有任何解释。我是在解释,而不是程序。
Jani Uusitalo

Answers:


6

据我了解,boot参数root_trim=yes是Gentoo特有的。在其中genkernel有一个脚本,用于查找参数并--allow-discards使用cryptsetup 设置选项(请参见git仓库)。此外,我发现许多关于Ubuntu或Debian用户的报告,说没有root_trim参数就可以运行。我也没有在Ubuntus update-initramfs脚本中找到任何行。

因此,总而言之,它不是引导参数,而是的一个参数cryptsetup。的文档--allow-discards可以在cryptsetup(8)的联机帮助页中找到:

--allow-discards
允许对设备使用丢弃(TRIM)请求。此选项仅与createluksOpenloopaesOpen有关

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

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

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

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

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

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


因此,如果未插入文件系统,则不需要这两个选项?如果只有两个选项,那么为什么要使用两个选项呢?
Jani Uusitalo

感谢您指出更新后的答案中内核参数和mount / devicemapper选项之间的关系。这次+1。:)
gertvdijk

这个答案开始看起来不错。我还在dm-crypt的当前文档中找到了allow_discards ;一切似乎都暗示它不是内核参数,而是dm-crypt device-mapper目标的一个选项。我仍在尝试找出是否可以在linux命令行上传递它们。那会解释到处都是鹦鹉的指令,否则可能只是错误信息。
Jani Uusitalo

1
@JaniUusitalo对我来说,使它成为(全局)内核参数真的没有任何意义。1)您确实要指定此文件系统/设备特定的文件,而不是系统范围的文件; 2)mount / fstab选项已经允许您这样做; 3)在引导时(在initramfs挂载/为读/写之前),您'不太可能需要此功能。
gertvdijk

4
允许丢弃的内核参数设置可能是一种Archism:显然是在Arch中,您使用(例如)“ cryptdevice = / dev / mapper / root:root:allow-discards” 向GRUB通知了加密的根。Ubuntu用户发现此问题的原因可能是Arch的Wiki被Ubuntu Wiki的EncryptedFilesystems称为“最佳参考”
Jani Uusitalo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.