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

相關內容