J'ai configuré un RAID5 logiciel Linux sur trois disques durs et je veux le crypter avec cryptsetup/LUKS. Mes tests ont montré que le cryptage entraîne une baisse massive des performances que je ne peux pas expliquer.
Le RAID5 est capable d'écrire 187 MB/s [1] sans cryptage. Avec le cryptage en plus, la vitesse d'écriture descend à environ 40 Mo/s.
Le RAID a une taille de 512K et un bitmap d'intention d'écriture. J'ai utilisé -c aes-xts-plain -s 512 --align-payload=2048
comme paramètres pour cryptsetup luksFormat
La charge utile doit donc être alignée sur 2048 blocs de 512 octets (soit 1 Mo). cryptsetup luksDump
montre un décalage de la charge utile de 4096. Je pense donc que l'alignement est correct et correspond à la taille des morceaux du RAID.
Le CPU n'est pas le goulot d'étranglement, car il a un support matériel pour AES (aesni_intel). Si j'écris sur un autre disque (un SSD avec LVM) qui est également crypté, j'ai une vitesse d'écriture de 150 Mo/s. top
montre que l'utilisation du CPU est effectivement très faible, seul le xor du RAID5 prend 14%.
J'ai également essayé de mettre un système de fichiers (ext4) directement sur le RAID non crypté pour voir si la superposition est un problème. Le système de fichiers diminue un peu les performances comme prévu, mais de loin pas tant que ça (vitesse d'écriture variable, mais > 100 MB/s).
Résumé :
Disques + RAID5 : bon
Disques + RAID5 + ext4 : bon
Disques + RAID5 + cryptage : mauvais
SSD + cryptage + LVM + ext4 : bon
La performance de lecture n'est pas affectée par le cryptage, elle est de 207 MB/s sans et 205 MB/s avec cryptage (ce qui montre également que la puissance du CPU n'est pas le problème).
Que puis-je faire pour améliorer les performances d'écriture du RAID crypté ?
[1] Toutes les mesures de vitesse ont été effectuées avec plusieurs séries d'essais. dd if=/dev/zero of=DEV bs=100M count=100
(c'est-à-dire l'écriture de 10G par blocs de 100M).
Editar: Si cela peut vous aider : J'utilise Ubuntu 11.04 64bit avec Linux 2.6.38.
Edit2 : Les performances restent à peu près les mêmes si je passe une taille de bloc de 4KB, 1MB ou 10MB à dd
.