Я установил программный RAID5 для Linux на три жестких диска и хочу зашифровать его с помощью cryptsetup/LUKS. Мои тесты показали, что шифрование приводит к значительному снижению производительности, что я не могу объяснить.
RAID5 способен записывать 187 МБ / с [1] без шифрования. Благодаря шифрованию скорость записи снижается примерно до 40 МБ / с.
RAID имеет размер порции 512 КБ и битовую карту с намерением записи. Я использовал -c aes-xts-plain -s 512 --align-payload=2048
в качестве параметров для cryptsetup luksFormat
, поэтому полезная нагрузка должна быть выровнена по 2048 блокам по 512 байт (т.е. 1 МБ). cryptsetup luksDump
показывает смещение полезной нагрузки 4096. Поэтому я считаю, что выравнивание правильное и соответствует размеру фрагмента RAID.
Процессор не является узким местом, так как он имеет аппаратную поддержку AES (aesni_intel). Если я пишу на другой диск (SSD с LVM), который также зашифрован, у меня скорость записи составляет 150 МБ / с. top
показывает, что загрузка процессора действительно очень низкая, только RAID5 xor занимает 14%.
Я также попытался поместить файловую систему (ext4) непосредственно в незашифрованный RAID, чтобы проверить, не является ли расслоение проблемой. Файловая система несколько снижает производительность, как и ожидалось, но не так сильно (скорость записи меняется, но> 100 МБ / с).
Резюме:
Диски + RAID5: хорошо
Диски + RAID5 + ext4: хорошо
Диски + RAID5 + шифрование: плохо
SSD + шифрование + LVM + ext4: хорошо
Шифрование не влияет на производительность чтения, оно составляет 207 МБ / с без и 205 МБ / с с шифрованием (что также свидетельствует о том, что мощность процессора не является проблемой).
Что я могу сделать, чтобы улучшить производительность записи зашифрованного RAID?
[1] Все измерения скорости были выполнены с несколькими прогонами dd if=/dev/zero of=DEV bs=100M count=100
(то есть, записывая 10G в блоках по 100M).
Изменить: Если это помогает: я использую Ubuntu 11.04 64bit с Linux 2.6.38.
Edit2: производительность остается примерно такой же, если я передаю размер блока 4 КБ, 1 МБ или 10 МБ на dd
.