Solaris 11 中的 AES-NI 加速 ZFS v31 加密

Solaris 11 中的 AES-NI 加速 ZFS v31 加密

我不太确定这是问这个问题的合适地方,如果不是,请随意将其迁移到适合的地方。

我正在实验室机器上 ESXi 5.0 下的 Solaris 11.11.11 VM 中测试 ZFS v31 中的加密功能。在dd11 磁盘 RAIDZ3 上测试加密文件夹时,我得到了糟糕的结果。

dd 基准:

# time dd if=/dev/zero of=/mypool/storage/dd.tst bs=1024000 count=10000
10000+0 records in
10000+0 records out

real    1m52.604s
user    0m0.010s
sys     0m2.715s
# time dd if=/mypool/storage/dd.tst of=/dev/null bs=1024000
10000+0 records in
10000+0 records out

real    3m15.547s
user    0m0.015s
sys     0m4.768s

翻译过来就是:

Write: 90.94 MB/s
Read: 52.366 MB/s

同时使用 100% CPU。

相比之下,在没有加密的情况下,写入速度几乎为 700 MB/秒,读取速度约为 900 MB/秒。

如图isainfo -v所示,aes 被传递到 VM。

# isainfo -v
64-bit amd64 applications
        xsave pclmulqdq aes sse4.2 sse4.1 ssse3 popcnt tscp cx16 sse3 sse2 sse
        fxsr mmx cmov amd_sysc cx8 tsc fpu
32-bit i386 applications
        xsave pclmulqdq aes sse4.2 sse4.1 ssse3 popcnt tscp ahf cx16 sse3 sse2
        sse fxsr mmx cmov sep cx8 tsc fpu

是的,我知道你在想什么。我应该尝试一下裸机 - 我确实这么做了。我在裸机上运行时得到了相同的结果。我什至提到它在虚拟机中的原因是因为 AES-NI 实际上可以工作,并且使用与虚拟机完全相同的规格在 ESXi 5.0 下的 Windows 7 64 位虚拟机中几乎可以全速使用 TrueCrypt。

虚拟机规格:

  • CPU:2核(Intel Xeon E3-1235 @ 3.2GHz)
  • 内存:8GB
  • SAS 控制器(通过 Vt-d 和 PCI 直通):2x IBM M1015(闪存 IT 固件)
  • HDD:11x 2TB Samsung F4EG(通过 IBM M1015)

我应该从哪里开始排除故障?有没有人在 Solaris 11 中成功使用 AES-NI 加速加密 - 如果是这样,您的设置如何,您是否需要做任何特殊的事情?

答案1

默认使用 AES-NI,无需配置。 ZFS 使用 Solaris 内核加密框架接口。因此,DTrace 的一个非常简单的位将告诉您是否调用了使用 Intel aesenc 指令的函数:

#!/usr/sbin/dtrace -Fs
fbt::aes_encrypt_intel:entry
{
}

fbt::aes_encrypt_intel:return
{
}

请注意,当我们为 ZFS 启用加密时,我们还会自动将校验和切换为 sha256-mac。因此,更公平的比较是针对 checksum=sha256 而不是 checksum=on(即 fletcher4)的 ZFS 数据集。

答案2

我认为 Darren 回答了您的问题,但您的结果也可能受到 ZFS 和操作系统缓存的影响。尽管使用仍然有用,但使用类似(Solaris 11 下的 pkg benchmark/filebench)dd之类的东西会更有用。filebench

相关内容