Я установил программное обеспечение Linux RAID5 на трех жестких дисках и хочу зашифровать его с помощью cryptsetup/LUKS. Мои тесты показали, что шифрование приводит к массовому снижению производительности, которое я не могу объяснить.
RAID5 способен записывать 187 МБ / с [1] без шифрования. С шифрованием поверх него, скорость записи до 40 МБ/с.
RAID имеет размер блока 512K и битовую карту намерения записи. Я использовал -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: good
Диски + RAID5 + ext4: good
Диски + RAID5 + шифрование: bad
SSD + шифрование + LVM + ext4: хорошо
скорость чтения не влияет шифрование, это 207 МБ / с без и 205 Мб/с с шифрованием (также показывая, что мощность процессора не является проблемой).
что я могу сделать, чтобы улучшить производительность записи зашифрованного RAID?
[1] Все измерения скорости проводились с несколькими запусками dd if=/dev/zero of=DEV bs=100M count=100
(т. е. запись 10G в блоках 100M).
Edit: если это помогает:
Я использую Ubuntu 11.04 64bit с Linux 2.6.38.
Edit2: производительность остается примерно то же самое, если я передаю блок размером 4 КБ, 1 Мб или 10 МБ dd
.