我尝试准备一个 nvme 进行加密,所以我首先遵循这个帖子就这样。
但是dd的速度真的很慢(不到100mb/s)。我看到有一个新选项可以在内核 5.9 上加速 dm-crypt(请参阅这个帖子),但在更新我的内核之前,我想知道使用 nvme-cli 格式零工具是否相当于 /dev/zero 来准备磁盘:https://manpages.debian.org/testing/nvme-cli/nvme-write-zeroes.1.en.html
在 luks2 格式之前准备磁盘的实际(非常非常慢)命令:
cryptsetup plainOpen --key-file /dev/urandom /dev/nvme0n1p2 ecrypt
dd if=/dev/zero of=/dev/mapper/ecrypt bs=1M status=progress
cryptsetup plainClose
更新 :
使用 dmcrypt 2.3.4 进入内核 5.12,我使用这个新的性能选项:
cryptsetup plainOpen --perf-no_read_workqueue --perf-no_write_workqueue --key-file /dev/urandom /dev/nvme0n1p2 ecrypt
dmsetup table
说选项已正确激活:
ecrypt: 0 1999358607 crypt aes-cbc-essiv:sha256 0000000000000000000000000000000000000000000000000000000000000000 0 259:2 0 2 no_read_workqueue no_write_workqueue
我还验证了 AES 已使用 cpuid 激活:
cpuid | grep -i aes | sort | uniq
AES instruction = true
VAES instructions = false
我有同样的问题,dd 以 900mb/s 写入零,然后慢慢降低到 45mb/s ...
答案1
找到答案了,使用 oflag=direct 效果好多了,从 45 Mb/s 跳到 536 Mb/s :)
dd if=/dev/zero of=/dev/mapper/ecrypt oflag=direct bs=1M status=progress
感谢这两篇文章: