Медленный SSD + dm-crypt с шифрованием Luks в Ubuntu 12.10

10

В моем ноутбуке (Samsung 840 Pro) установлен интерфейс SSD 128 ГБ. Этот ноутбук также имеет процессор Intel i5 3210m Ivy Bridge и 8 ГБ оперативной памяти.

Я установил Ubuntu 12.10, используя графический установщик, чтобы получить полное шифрование диска. Я отчасти разочарован, потому что я ожидал, что спецификации должны дать лучшие результаты, чем то, что я получаю.

Глядя на эту страницу тестирования производительности SSD, он утверждает, что мой процессор может делать:

  • ~ 500 МБ / с: с AES-NI
  • ~ 200 МБ / с: без 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 МБ / с», и выполнение ddтеста дает результаты, аналогичные приведенным выше.

Запись зашифрованных данных также выполняется быстро с помощью dm-crypt (в противном случае с eCryptfs производительность записи является ужасной, ниже 100 МБ / с), числа близки к спецификации 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 МБ / с, потому что это число варьируется. Обычно это где-то около 150 МБ / с, но при новой загрузке я также приблизился к 300 МБ / с, но затем производительность постепенно падает до 200 МБ / с без запуска каких-либо приложений. Обратите внимание, что при проведении этого теста у меня нет других процессов, которые делают ввод / вывод (как видно с 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 выполняет Hyper-Threading, но в 2 потоках из 4, где во время теста используется примерно 73%, в то время как другие 2 темы, где остались неиспользованными. Действительно, если я запускаю 2 процесса, которые читают ddиз 2 разных файлов (чтобы предотвратить буферизацию), то iotopв общей сложности выдается около 400 МБ / с. Так что это определенно похоже на то, что оно связано с процессором

Мое разочарование связано с тем, что мой процессор i5 способен на AES-NI . Незашифрованные данные читаются со скоростью более 500 МБ / с, используя те же тесты, которые я делал выше. Итак, мы говорим о том, что зашифрованный раздел работает как минимум в 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, чтобы увидеть, есть ли разница? И, возможно, мне стоит как-то включить его, но я не нашел никаких подсказок в своих поисках.

Спасибо,

Александру Недельку
источник

Ответы:

6

Ваш Samsung 840 Pro поддерживает аппаратное шифрование AES. Если BIOS вашего ноутбука поддерживает основной режим и пароль пользователя для режима безопасности ATA, вам повезло.

Установив мастер-пароль ATA в BIOS, а затем выполнив безопасное удаление диска, микропрограмма привода должна сгенерировать новые случайные ключи AES. После безопасного удаления убедитесь, что вы установили хорошие мастер-пароли ATA и пароли пользователей. Насколько мне удалось установить (см. Мой пост здесь http://vxlabs.com/2012/12/22/ssds-with-usable-built-in-hardware-based-full-disk-encryption/ ) Samsung также шифрует свои ключи AES вашим паролем ATA.

Это обеспечит полную скорость шифрования AES, программное обеспечение не требуется.

Чарл Бота
источник
5

В 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

перезагрузись и наслаждайся. После этого на аналогичном твердотельном накопителе я видел 500 МБ / с чтения и записи с незначительным использованием процессора.

Полная информация об этой ошибке находится по адресу https://bugs.launchpad.net/ubuntu/+source/cryptsetup/+bug/908387/comments/7.

Девин Лейн
источник