我目前正在尝试使用 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 软件包)。
因此,您最好的选择可能是升级到更新的发行版。