![Solaris 11 中的 AES-NI 加速 ZFS v31 加密](https://linux22.com/image/23402/Solaris%2011%20%E4%B8%AD%E7%9A%84%20AES-NI%20%E5%8A%A0%E9%80%9F%20ZFS%20v31%20%E5%8A%A0%E5%AF%86.png)
我不太确定这是问这个问题的合适地方,如果不是,请随意将其迁移到适合的地方。
我正在实验室机器上 ESXi 5.0 下的 Solaris 11.11.11 VM 中测试 ZFS v31 中的加密功能。在dd
11 磁盘 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