Ubuntu 12.10でLuks暗号化を使用したSSD + dm-cryptが遅い


9

128 GB SSDをラップトップ(Samsung 840 Pro)のSata 3インターフェイスにインストールしました。このラップトップには、i5 3210m Ivy Bridge Intelプロセッサと8 GBのRAMも搭載されています。

グラフィカルインストーラーを使用してUbuntu 12.10をインストールし、フルディスク暗号化を取得しました。期待以上の結果が得られるはずのスペックを期待していたので、少しがっかりしました。

このSSDベンチマークのページを見ていると、私のプロセッサーは次のことができると主張しています:

  • 〜500 MB /秒:AES-NI
  • 〜200 MB /秒:AES-NIなし

取得した数値を見ると、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

これは実際には私のSSDの「最大530 MB / s」の仕様に近く、ddテストを実行すると上記と同様の結果が得られます。

暗号化されたデータの書き込みもdm-cryptで高速です(そうでない場合、eCryptfsの書き込みパフォーマンスはひどいもので、100 MB /秒未満です)、数値は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

ただし、暗号化されたデータの読み取りは別の話です。

# 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

このメッセージを書いている間、実際には183 MB /秒を取得できて幸運でした。この数値はさまざまだからです。通常は約150 MB /秒ですが、新しいブートでも300 MB /秒に近づきましたが、アプリを起動しなくても、パフォーマンスは徐々に200 MB /秒に低下します。このテストの実行中は、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

またhtop、i5プロセッサはハイパースレッディングを実行するため、見たものを解釈する方法がわからないが、テスト中に使用率の約73%に達する4つのスレッドのうち2つは、未使用のままにされた2つのスレッド。実際、dd(バッファリングを防ぐために)2つの異なるファイルから読み取る2つのプロセスを開始するiotopと、合計で約400 MB /秒と報告されます。つまり、これは間違いなくCPUに依存しているように感じられます。

私の失望は、私のi5プロセッサーがAES-NIに対応しているという事実から来ています。暗号化されていないデータは、上記と同じテストを使用して500 MB /秒以上で読み取られています。つまり、暗号化されたパーティションは少なくとも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

これが出力です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

それで、これは予想されますか?AES-NIはこれ以上に改善すべきではないでしょうか?

また、AES-NIを無効にして違いがあるかどうかを確認するにはどうすればよいですか?そして、どういうわけかそれを有効にする必要があるかもしれませんが、検索でヒントが見つかりませんでした。

おかげで、

回答:


5

Samsung 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/を参照)また、SamsungはAESキーをATAパスワードで暗号化します。

これにより、フルスピードのAES暗号化が得られ、ソフトウェアは必要ありません。


4

Ubuntuの設定に誤りがあるため、ブートロックされていないデバイスの暗号を処理するためにaesni_intelモジュールが早く読み込まれません。私は自分のマシンでこれを修正することができました:

sudo vim /etc/initramfs-tools/modules

最後の行の下に、

# enable h/w accelerated encryption
cryptd
aes_x86_64
aesni_intel

次に実行します

sudo update-initramfs -u -k all

再起動してお楽しみください。この後、同様のSSDで、CPU使用率が無視できる500MB /秒の読み取りと書き込みが発生しました。

このバグの詳細は、https://bugs.launchpad.net/ubuntu/+source/cryptsetup/+bug/908387/comments/7にあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.