使用 dd 和 nvme 来准备加密的慢 /dev/zero 格式,有 nvme 特定工具吗?

使用 dd 和 nvme 来准备加密的慢 /dev/zero 格式,有 nvme 特定工具吗?

我尝试准备一个 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

感谢这两篇文章:

相关内容