Перейти к содержимому
Калькуляторы

Кто как шифрует диски в 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 Мб в сек на чтение и запись ) ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В общем 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 очень сильно нагружает процессор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Изменено пользователем Aliech

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

посмторите в сторону hw решений. http://en.wikipedia.org/wiki/Hardware-based_full_disk_encryption

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

 

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

Изменено пользователем Aliech

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А почему вы игнорируете рекомендации использовать процессор с 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, ядро естественно свежее, модули шифрования с поддержкой аппаратного ускорения

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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 растёт на всех ядрах, когда на старом ядре, только на одном...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В новых ядрах добавили многопоточность в 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.