禁用 Ubuntu 全磁盘加密的读/写工作队列

禁用 Ubuntu 全磁盘加密的读/写工作队列

我目前正在尝试使用 Ubuntu (20.04.5 LTS) 设置多个设备,并且驱动器必须加密,因此我在安装过程中使用了 LUKS。 (我在此过程中选中了“在新的 Ubuntu 安装中使用 LVM”+“加密新的 Ubuntu 安装以确保安全”)

然而,加密驱动器要慢得多(如预期),但我读本文no_read_workqueue 关于使用两个标志and no_write_workqueue(最后一段)加速 dm-crypt I/O 操作的可能性。仅供参考:我使用的是 NVMe SSD。该补丁已合并到 Linux 内核 5.9 及更高版本中,我有 5.14,所以它应该可供我使用。我如何才能默认启用此功能?

我已经/etc/crypttab通过添加标志更改了文件:

nvme0123abcdef-etc UUID=123abcdef-etc none luks,discard,no-write-workqueue,no-read-workqueue

这根本没有改变速度。

我尝试设置默认标志:

cryptsetup --perf-no_read_workqueue --perf-no_write_workqueue --persistent refresh root

然后我会得到一个错误:--perf-no_read_workqueue: unknown option

cryptsetup luksDump /dev/sdaX | grep Flags此外,当我使用-> (这显示“无”)或dmsetup table-> (这显示allow_discards)时,不会显示标志

仅供参考:我使用此维基页面来获取信息:https://wiki.archlinux.org/title/Dm-crypt/Specialties

答案1

我对 Debian 11 也有同样的想法。

修改/etc/crypttab后需要运行

sudo update-initramfs -k all -u

更新启动配置。如果此命令显示警告,则表明您的系统不支持这些选项。 Debian 11 就是这种情况(但支持运行时更改)。

您可以使用以下命令检查当前标志:

sudo dmsetup table nvme0n1p3_crypt --showkeys
0 3515592704 crypt aes-xts-plain64 :64:logon:cryptsetup:asdf-asdf-asdf-asdf 0 259:3 32768 1 allow_discards

您可以使用以下命令在运行时更改选项:

sudo cryptsetup refresh  nvme0n1p3_crypt --perf-no_read_workqueue  --perf-no_write_workqueue --allow-discards

不幸的是,它迫使您再次输入磁盘加密密钥,这使得自动化变得困难。

然而,这些选择似乎并非没有缺点。在我的系统(Ryzen 2700 + WD SN570 2TB)上,顺序写入性能下降了 25%,而随机 I/O 性能提高了 30%。

答案2

问题很可能是您的cryptsetup包太旧了。版本 2.3.4 中添加了对这些性能标志的支持(请参阅发行说明),但Ubuntu 20.04仅提供2.2.2版本(参见Ubuntu 软件包)。

因此,您最好的选择可能是升级到更新的发行版。

相关内容