J'ai un serveur datant de 2005 (deux Xeons de 3 GHz, contrôleur RAID/SCSI LSI53C1030T avec 256 Mo de cache, 8 Go de RAM) et je le réutilise pour des tâches légères de stockage de VM.
La première tentative a été de placer 4x300GB dans un RAID5 matériel, puis d'installer LVM et iSCSI d'Openfiler par-dessus. Cela a donné des vitesses de lecture très irrégulières (20MB/sec à 2GB/sec, mais c'est probablement dû à la mise en cache), et une vitesse d'écriture horrible mais constante de 8MB/sec. Tous ces résultats ont été mesurés à la fois avec un dd local et un transfert de gros fichiers sur le réseau, et les deux ont donné des résultats similaires.
Après de nombreuses lectures, j'ai découvert que le contrôleur LSI susmentionné n'est pas idéal pour le RAID matériel, j'ai donc désactivé la fonctionnalité RAID sur le canal avec les disques 4x300GB, j'ai créé la matrice RAID avec le RAID logiciel mdadm, et j'ai mis LVM par-dessus. J'ai fait d'autres tests, et les résultats se sont améliorés (20MB/sec en écriture), mais c'est toujours aussi horrible. J'ai passé une autre journée à aligner les partitions, à optimiser les tailles de chunk, de stripe-width, de stride, à jouer avec les options ext4, les différentes options de journalisation, etc, sans beaucoup d'amélioration observable.
Une autre expérience que j'ai réalisée a consisté à exécuter hdparm -tT
sur /dev/md0 vs /dev/mapper/vg0-lv0 (qui était simplement un mappage de l'ensemble du md0) et j'ai obtenu un ralentissement de 2 fois en passant par le LVM. J'ai lu que LVM peut introduire quelques pénalités de vitesse, mais réduire la vitesse de moitié n'est pas acceptable.
Comme tout cela n'avait aucun sens, je suis revenu aux fondamentaux, j'ai créé une seule partition sur un seul disque, pas de LVM, pas de RAID, juste un bon vieux SCSI320 et j'ai fait quelques tests dessus. J'ai obtenu ~75MB/sec en lecture et ~55MB/sec en écriture avec plusieurs exécutions et plusieurs programmes.
Si un disque peut lire à 75MB/sec et écrire à 55MB/sec, pourquoi le RAID5 (matériel ou logiciel !) de 3 disques obtient-il des vitesses aussi horribles ? Qu'est-ce qui ne va pas ? Que dois-je essayer d'autre ?
MISE À JOUR 1 : En continuant mes expériences, j'ai remarqué qu'un des disques ne voulait parfois pas être partitionné ; parted et fdisk refusaient simplement d'écrire les partitions sur le disque. J'ai donc essayé les mêmes commandes sur tous les autres disques pour m'assurer qu'il ne s'agissait pas d'un problème systémique. J'ai donc lancé smartctl
et tout s'est bien passé. dmesg
a été la seule source d'indication qu'il pouvait y avoir un problème avec le lecteur, bien qu'avec des messages plutôt cryptiques et pas particulièrement utiles. Par pure curiosité, j'ai sorti le disque, redémarré et refait tout ce que j'ai fait jusqu'à présent pour un RAID5 logiciel sans LVM mais avec ext4. Au premier essai, j'ai obtenu 200MB/sec en lecture, et 120MB/sec en écriture, sur une matrice de cinq disques (j'ai trouvé deux disques de 300GB supplémentaires entre-temps) en testant avec dd le dumping de fichiers de 4,2GB par blocs de 64kB sur la nouvelle partition. Apparemment, le disque, même s'il n'était pas complètement mort, n'était pas particulièrement coopératif, et une fois sorti de l'équation, tout fonctionnait BEAUCOUP mieux.
Je me sens plus sain maintenant, 8MB/sec ne me semblait pas correct, quel que soit le niveau de RAID.
Demain : tests avec LVM et peut-être retour au RAID matériel.