Jump to content
Калькуляторы

Кто как шифрует диски в linux ? низкая скорость шифрованных raid

Здравствуйте ! Есть необходимость в криптованном RAID 5 из 3х 2Тб дисков.

 

Сначала собрал в линуксе софтовый RAID 5, скоростью остался очень доволен ( порядка 170-190 Мб в сек ).

Поверх него делал truecrypt, LUKS и просто чз cryptsetup разделы и получал скорость не более 20-30 Мб в сек...

 

Вычитал в гугле что процесс kcryptd однопоточный и из за этого может быть низкая скорость.

 

Удалил первоначальный RAID 5 и сделал чз LUKS 3 шифрованных контейнера.....

Получил 3 процесса kcryptd. Начал собирать RAID 5 из этих контейнеров и получаю скорость сборки 30 Мб в сек....

 

UPD (echo 32768 > /sys/block/md5/md/stripe_cache_size дало увеличение скорости на 20Мб в сек , текущая скорость resync 50-55 Мб в сек )

 

Вопрос - реально ли сделать шифрованный RAID 5 с нормальной скоростью (хотя бы 100 Мб в сек на чтение и запись ) ?

Share this post


Link to post
Share on other sites

Все зависит имхо от типа шифрования, битности ядра (64 ессно лучше) и поддерживаемых инструкций (AES-NI например).

Share this post


Link to post
Share on other sites

В общем resync завершился.

dd if=/dev/md5 of=/dev/null bs=512K count=4096
4096+0 records in
4096+0 records out
2147483648 bytes (2.1 GB) copied, 19.8668 s, 108 MB/s

 

dd if=/dev/zero of=/dev/md5 bs=512k count=4096
4096+0 records in
4096+0 records out
2147483648 bytes (2.1 GB) copied, 24.1219 s, 89.0 MB/s

 

Каждый процесс kcryptd нагружает каждое ядро на 100% .

Так что проблемма низкой скорости шифрованных дисков в 1)kcryptd не многопоточный 2)kcryptd очень сильно нагружает процессор.

Share this post


Link to post
Share on other sites

Мне кажется, или кол-во обращений к md устройству меньше, чем обращений к физ. дискам, так как рейд их ещё служебной инфой грузит?

Тогда почему же не делать шифрование md устройства?

Edited by Aliech

Share this post


Link to post
Share on other sites

Мне кажется, или кол-во обращений к md устройству меньше, чем обращений к физ. дискам, так как рейд их ещё служебной инфой грузит?

Тогда почему же не делать шифрование md устройства?

 

помоему ТС с этого и начал

Share this post


Link to post
Share on other sites

Так если процессора не хватает, может надо побыстрей проц поставить? ) X3330, только что посмотрел, как раз около 100М и выдает без какого-то либо тюнинга и с древним ядром...

 

Как вариант можно использовать менее ресурсоемкий шифр, вроде блоуфиша.

Share this post


Link to post
Share on other sites

Процессора хватает....

Quad-Core AMD Opteron Processor 2376 (2.3 Ghz)


Tasks: 229 total,   1 running, 228 sleeping,   0 stopped,   0 zombie
Cpu0  :  0.0%us, 28.6%sy,  0.0%ni, 71.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  0.0%us, 22.3%sy,  0.0%ni, 71.9%id,  0.0%wa,  0.0%hi,  5.8%si,  0.0%st
Cpu2  :  0.3%us, 26.5%sy,  0.0%ni, 73.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.0%us, 25.6%sy,  0.0%ni, 74.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8190896k total,  8021300k used,   169596k free,    35120k buffers
Swap:        0k total,        0k used,        0k free,  7527140k cached

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
6224 root      20   0     0    0    0 S 27.2  0.0  55:19.80 kcryptd
6264 root      20   0     0    0    0 S 26.8  0.0  55:30.38 kcryptd
6244 root      20   0     0    0    0 S 26.5  0.0  55:23.21 kcryptd
6271 root      20   0     0    0    0 S 15.9  0.0  30:16.54 md5_raid5

Share this post


Link to post
Share on other sites

Мне кажется, или кол-во обращений к md устройству меньше, чем обращений к физ. дискам, так как рейд их ещё служебной инфой грузит?

Тогда почему же не делать шифрование md устройства?

 

помоему ТС с этого и начал

 

Да, только не написано пробовал ли он увеличить буфер в этом случае. Только во втором.

Share this post


Link to post
Share on other sites

Да пробовал. В первом случае ( когда шифрование поверх RAID ) скорость RAID отличная, а вот скорость шифрованного контейнера очень низкая.

Сейчас вот, 3 LUKS контейнера обьеденые в RAID 5 + ext4 дают скорость чтения 80 Мб в сек, и записи 60 Мб в сек.

benchmark truecrypt показывает скорость шифрования AES 140 Мб в сек и загружает 1 ядро. Думаю проблемма в том что алгоритмы шифрования однопоточные.

Share this post


Link to post
Share on other sites

Используя AES-NI можно сильно увеличить скорость шифрования.

Share this post


Link to post
Share on other sites

Может кто подскажет более быстрый метот шифрования, который поддерживает LUKS ?

Share this post


Link to post
Share on other sites

Да пробовал. В первом случае ( когда шифрование поверх RAID ) скорость RAID отличная, а вот скорость шифрованного контейнера очень низкая.

Сейчас вот, 3 LUKS контейнера обьеденые в RAID 5 + ext4 дают скорость чтения 80 Мб в сек, и записи 60 Мб в сек.

benchmark truecrypt показывает скорость шифрования AES 140 Мб в сек и загружает 1 ядро. Думаю проблемма в том что алгоритмы шифрования однопоточные.

 

Ну тогда я не уверен, что можно сделать лучше, чем есть таким путём. ОК... А если увеличить кол-во дисков? Или выбрать алгоритм с меньшим кол-вом служебной инфы. Например raid10. Четыре потока на выходе... Больше дисков - больше потоков.

Edited by Aliech

Share this post


Link to post
Share on other sites

Я так понимаю раид 10 на 4-х дисках с шифрацией каждого диска - шифроваться будет 2 раза одно и тоже ? диски то - зеркала. тогда шифровать надо в промежутке между 0 и 1. но только 2 потока.

Вообще в условии задачи диска 3 :)

Share this post


Link to post
Share on other sites

:-) Еще вариант добавить скорости - добавить еще 1 процессор (материнка позоляет) и добавить дисков....прибавка на каждый диск будет примерно 30-35 Мб

Share this post


Link to post
Share on other sites

А почему вы игнорируете рекомендации использовать процессор с AES инструкциями

 

processor : 0

vendor_id : GenuineIntel

cpu family : 6

model : 42

model name : Intel® Xeon® CPU E31220 @ 3.10GHz

stepping : 7

microcode : 0x28

cpu MHz : 1674.000

cache size : 8192 KB

physical id : 0

siblings : 4

core id : 0

cpu cores : 4

apicid : 0

initial apicid : 0

fpu : yes

fpu_exception : yes

cpuid level : 13

wp : yes

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid

bogomips : 6199.99

clflush size : 64

cache_alignment : 64

address sizes : 36 bits physical, 48 bits virtual

 

без RAID около 100Mb/sec, ядро естественно свежее, модули шифрования с поддержкой аппаратного ускорения

Share this post


Link to post
Share on other sites

К сожалению возможности заменить процессор нет. Да и под Socket F с поддержкой AES-NI ничего нет.

Share this post


Link to post
Share on other sites

ОК, у вас есть четыре ядра. Нужно больше дисков, и, может быть, случится счастье. Только собирать нужно не raid10, а четыре пары шифрованных md (mirror) в stripe.

Share this post


Link to post
Share on other sites

loop-AES Даёт намного лучшую скорость (может на 5-10% меньше raw чтения/записи), но io-wait увеличивается в 2 раза и размазывается по 2м ядрам....

 

Total DISK READ: 87.21 M/s | Total DISK WRITE: 27.50 K/s
 TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
20043 be/0 root        6.37 M/s    0.00 B/s  0.00 %  1.55 % [loop0]
20080 be/4 root       80.72 M/s    0.00 B/s  0.00 %  0.00 % dd if=/dev/loop0 of=/dev/null bs=1M count=4096

 

Сделал так:

losetup -e aes /dev/loop0 /dev/sdc1

 

Еще заметил что сильно вырос iowait на kernel-3.12 по сравнению с 2.6.32-358.23.2.el6.centos.plus.x86_64 при использовании dm-crypt. IO-WAIT растёт на всех ядрах, когда на старом ядре, только на одном...

Share this post


Link to post
Share on other sites

В новых ядрах добавили многопоточность в dm-crypt и сделали только хуже.

При чтении с шифрованного раздела всё почти хорошо.Грузит одно ядро, и 60 - 80% жрёт IOWAIT. Idle = 0; ( но загружено одно ядро, остальные свободны)

dd if=/dev/mapper/truecrypt1  of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 17.603 s, 61.0 MB/s

 

При записи основным потребителем процессора является kworker. Все процессоры загружены 100% (60 - 80% жрёт IOWAIT)

dd of=/dev/mapper/truecrypt1  if=/dev/zero bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 43.7984 s, 24.5 MB/s

Share this post


Link to post
Share on other sites

Процессора хватает....

Quad-Core AMD Opteron™ Processor 2376 (2.3 Ghz)

не умеет он aes-ni. возьмите какой-то нормальный cpu, а не 5-летней давности :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this