Ich bin nicht ganz sicher, ob dies der richtige Ort für diese Frage ist. Wenn nicht, können Sie sie gerne dorthin verschieben, wo sie hinpasst.
Ich teste die Verschlüsselungsfunktion in ZFS v31 in einer Solaris 11.11.11 VM unter ESXi 5.0 auf meinem Laborrechner. Ich erhalte schreckliche Ergebnisse, wenn ich meinen verschlüsselten Ordner auf dd
einem RAIDZ3 mit 11 Festplatten teste.
dd-Benchmark:
# 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
Das bedeutet:
Write: 90.94 MB/s
Read: 52.366 MB/s
Bei 100 % CPU-Auslastung.
Ohne Verschlüsselung dagegen erreiche ich Schreibgeschwindigkeiten von fast 700 MB/s und Lesegeschwindigkeiten von etwa 900 MB/s.
Wie isainfo -v
gezeigt wird AES an die VM weitergegeben.
# 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
Ja, ich weiß, was Sie denken. Ich sollte es auf Bare Metal ausprobieren – und das habe ich tatsächlich getan. Ich erziele dieselben Ergebnisse, wenn ich Bare Metal ausführe. Der Grund, warum ich überhaupt erwähne, dass es sich um eine VM handelt, ist, dass AES-NI tatsächlich funktioniert und mir mit TrueCrypt in meiner 64-Bit-VM unter Windows 7 unter ESXi 5.0 mit den exakt gleichen Spezifikationen für die virtuelle Maschine fast die volle Geschwindigkeit bietet.
VM-Spezifikationen:
- CPU: 2 Kerne (Intel Xeon E3-1235 @ 3,2 GHz)
- Speicher: 8 GB
- SAS-Controller (über Vt-d und PCI-Passthrough): 2x IBM M1015 (mit IT-Firmware geflasht)
- Festplatte: 11x 2TB Samsung F4EG (über IBM M1015)
Wo soll ich mit der Fehlerbehebung beginnen? Hat jemand erfolgreich die AES-NI-beschleunigte Verschlüsselung in Solaris 11 verwendet? Wenn ja, wie ist Ihr Setup und mussten Sie etwas Besonderes tun?
Antwort1
AES-NI wird standardmäßig verwendet und es ist keine Konfiguration erforderlich. ZFS verwendet die Schnittstellen des Solaris Kernel Cryptographic Framework. Ein ganz einfacher DTrace-Befehl zeigt Ihnen also, ob die Funktionen aufgerufen wurden, die die Intel aesenc-Anweisungen verwenden:
#!/usr/sbin/dtrace -Fs
fbt::aes_encrypt_intel:entry
{
}
fbt::aes_encrypt_intel:return
{
}
Beachten Sie, dass wir, wenn wir die Verschlüsselung für ZFS aktivieren, auch die Prüfsumme automatisch auf sha256-mac umstellen. Ein fairerer Vergleich wäre also mit einem ZFS-Datensatz, der checksum=sha256 statt checksum=on (was Fletcher4 ist) hat.
Antwort2
Ich denke, Darren hat Ihre Frage beantwortet, aber Ihre Ergebnisse könnten auch durch ZFS und das OS-Caching verfälscht werden. Obwohl die Verwendung dd
immer noch nützlich sein kann, wäre es sinnvoller, etwas wie filebench
(pkg benchmark/filebench unter Solaris 11) zu verwenden.