Ale*_*lcu 11 performance encryption ssd luks 12.10
我在 Sata 3 接口上的笔记本电脑(三星 840 Pro)中安装了一个 128 GB SSD。这台笔记本电脑还配备了 i5 3210m Ivy Bridge Intel 处理器和 8 GB 内存。
我安装了 Ubuntu 12.10,使用图形安装程序来获得全盘加密。我有点失望,因为我期待规格必须产生比我得到的更好的结果。
在查看此SSD 基准测试页面时,它声称我的处理器能够执行以下操作:
看看我得到的数字,我想我可能没有启用 AES-NI。但首先 ...
读取未加密的数据很快:
# hdparm -Tt /dev/sda1
/dev/sda1:
Timing cached reads: 14814 MB in 2.00 seconds = 7411.70 MB/sec
Timing buffered disk reads: 242 MB in 0.48 seconds = 502.75 MB/sec
Run Code Online (Sandbox Code Playgroud)
这实际上接近我 SSD 的“高达 530 MB/s”的规格,并且进行dd测试会产生与上述类似的结果。
使用 dm-crypt 写入加密数据也很快(否则使用 eCryptfs 写入性能很糟糕,低于 100 MB/s),数字接近 SSD 规范(我猜写入是缓冲的或其他东西):
# dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 2.93896 s, 365 MB/s
Run Code Online (Sandbox Code Playgroud)
然而,读取加密数据是另一回事:
# echo 3 > /proc/sys/vm/drop_caches
# dd if=tempfile of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 5.85956 s, 183 MB/s
Run Code Online (Sandbox Code Playgroud)
在撰写此消息时,我实际上很幸运地获得了 183 MB/s,因为这个数字会有所不同。通常它大约在 150 MB/s 左右,但我在新启动时也接近 300 MB/s,但随后性能逐渐下降到 200 MB/s 以下,而我没有启动任何应用程序。请注意,在进行此测试时,我没有其他进程进行 I/O(如 所示iotop)。
此外,这是hdparm产生更差结果的测试:
# hdparm -Tt /dev/mapper/sda2_crypt
/dev/mapper/sda2_crypt:
Timing cached reads: 14816 MB in 2.00 seconds = 7412.86 MB/sec
Timing buffered disk reads: 422 MB in 3.01 seconds = 140.11 MB/sec
Run Code Online (Sandbox Code Playgroud)
我还通过查看htop……不知道如何解释我所看到的内容来进行实验,因为 i5 处理器执行超线程,但是 4 个线程中有 2 个线程在测试期间使用率约为 73%,而另一个线程2 个线程未使用。事实上,如果我启动 2 个dd从 2 个不同文件读取的进程(以防止缓冲),那么iotop报告的总速度约为 400 MB/s。所以这绝对感觉像是受 CPU 限制。
我的失望来自于我的 i5 处理器支持AES-NI的事实。使用我在上面所做的相同测试,未加密数据的读取速度超过 500 MB/s。所以我们谈论的是加密分区至少慢 3 倍。
我真的不知道我的 dm-crypt 安装是否使用 AES-NI。这是输出lsmod:
# lsmod | grep aes
aesni_intel 51038 35
cryptd 20404 10 ghash_clmulni_intel,aesni_intel
aes_x86_64 17256 1 aesni_intel
Run Code Online (Sandbox Code Playgroud)
这是输出cryptsetup:
# cryptsetup status sda2_crypt
/dev/mapper/sda2_crypt is active and is in use.
type: LUKS1
cipher: aes-xts-plain64
keysize: 512 bits
device: /dev/sda2
offset: 4096 sectors
size: 249565184 sectors
mode: read/write
flags: discards
Run Code Online (Sandbox Code Playgroud)
那么,这是预期的吗?AES-NI 不应该比这更好吗?
另外,如何禁用 AES-NI 以查看是否有任何区别?也许我应该以某种方式启用它,但在我的搜索中没有找到任何提示。
谢谢,
您的三星 840 Pro 支持硬件 AES 加密。如果您的笔记本电脑 BIOS 支持 ATA 安全功能模式设置主密码和用户密码,那么您很幸运。
通过在 BIOS 中设置 ATA 主密码,然后对驱动器进行安全擦除,驱动器固件应生成新的随机 AES 密钥。安全擦除后,请确保您设置了良好的 ATA 主密码和用户密码。据我已经能够建立(见我在这里的帖子http://vxlabs.com/2012/12/22/ssds-with-usable-built-in-hardware-based-full-disk-encryption/)三星还使用您的 ATA 密码加密其 AES 密钥。
这将为您提供全速 AES 加密,无需软件。
小智 5
Ubuntu 中存在配置错误,导致 aesni_intel 模块没有足够早地加载,无法处理引导解锁设备的加密。我能够通过执行以下操作在我的机器上修复此问题:
sudo vim /etc/initramfs-tools/modules
Run Code Online (Sandbox Code Playgroud)
在最后一行下方,添加
# enable h/w accelerated encryption
cryptd
aes_x86_64
aesni_intel
Run Code Online (Sandbox Code Playgroud)
然后运行
sudo update-initramfs -u -k all
Run Code Online (Sandbox Code Playgroud)
重新启动,并享受。在此之后,在类似的 SSD 上,我看到 500MB/s 的读写速度,而 CPU 使用率可以忽略不计。
有关此错误的完整详细信息位于https://bugs.launchpad.net/ubuntu/+source/cryptsetup/+bug/908387/comments/7
| 归档时间: |
|
| 查看次数: |
11461 次 |
| 最近记录: |