禁用加密分区上的允许丢弃

禁用加密分区上的允许丢弃

我有以下分区表:

NAME            
nvme0n1         
├─nvme0n1p1           part  /boot
└─nvme0n1p2           part
  └─crypt             crypt
    ├─crypt-swap      lvm   [SWAP]
    ├─crypt-root      lvm   /
    └─crypt-home      lvm   /home

由于驱动器是 SSD,我想执行修剪命令以提高磁盘本身的性能/使用寿命。

特别是,我想启用定期 TRIM。

由于第二个分区(即nvme0n1p2)已加密,出于安全考虑,TRIM 将被禁止(https://wiki.archlinux.org/title/Dm-crypt/Specialties#Discard/TRIM_support_for_solid_state_drives_(SSD))。

但是,可以通过encrypt在打开时进行配置来在加密分区上启用 TRIM。

当我的分区在内核启动时打开时,我修改了内核参数(即allow-discards):

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

请注意,分区命名和卷名称在上面的代码片段中不相关。)。

通过这样做,我确实能够成功地在磁盘上运行 TRIM 命令:

# cryptsetup luksDump /dev/nvme0n1p2 | grep Flags
Flags:   allow-discards

和:

# fstrim ...
/home: [..] trimmed on ...
/: [..] trimmed on

到目前为止,一切都很好。


当我尝试恢复到原始状态时,问题出现了。

我已经删除了内核参数allow-discards,但Flags在分区上仍然显示allow-discards并且fstrim命令成功完成其工作。

  • 这怎么可能?
  • 如何恢复加密分区上的拒绝丢弃?

答案1

事实证明,LUK2可以在标头中永久存储元数据。

可以allow-discards使用以下命令启用并存储在分区本身中(无需任何进一步的配置 - 例如内核参数):

cryptsetup --allow-discards --persistent refresh root

显然,我过去发出了这个命令来启用丢弃选项。

可以通过以下方式删除该标志:

cryptsetup --persistent refresh root

https://man7.org/linux/man-pages/man8/cryptsetup.8.html

在没有任何可选参数的情况下刷新设备将使用默认设置(与设备类型相关)刷新设备。

相关内容