x540-T2

Ajout d’une carte réseau 10 gbps dans mon hyperviseur

C’est la deuxième partie de mon plan de montée en débit de mon réseau local. En effet, si je veux profiter du 10 gbps dans mon réseau local, il m’est nécessaire d’équiper mon hyperviseur d’une carte réseau adéquate, car il contient mon pare-feu, qui est en cœur de réseau. Il serait donc inutile d’installer des commutateurs 10 gbps si le trafic interne, à 100% firewallé, est limité à 1 gbps par mon pare-feu. Il va donc falloir procéder à l’ajout d’une carte 10 gbps dans mon hyperviseur.

Il y a par contre un petit défi : mon hyperviseur n’a plus de slot pci-express de taille suffisante disponible.

En effet, les deux slots de grande taille (deux 16x câblés en 8x) sont occupés par mes deux cartes RAID 3ware 9650SE 4LPML. Lesquelles cartes peuvent piloter 4 disques chacune, et j’ai 6 disques à gérer (3 volumes RAID1).

Changement des cartes contrôleur RAID

L’idée était de remplacer deux cartes pouvant piloter 4 disques chacune, par une seule carte pouvant en gérer 8; ceci avec la contrainte de reprendre tels quels mes trois volumes RAID1.

La logique m’a alors dicté de me mettre à la recherche d’une carte type 3ware 9650SE 8LPML. En effet, cette carte est la même que celles que j’ai déjà, avec un deuxième connecteur minisas SFF-8087, lui ajoutant le support de 4 disques supplémentaires. Le reste étant en tout point identique aux cartes que j’ai déjà, j’étais sûr de la compatibilité.

Lors de ma quête sur plusieurs sites de matériel d’occasion ou d’enchères, j’ai constaté qu’il était possible d’acheter au même prix qu’une 9650SE-8LPML une carte de gamme supérieure et de génération plus récente, chez le même constructeur : la 3ware 9750-8i. Comme son nom l’indique, elle peut piloter 8 disques, et elle dispose de plusieurs avantages par rapport à la 9650 : la taille du cache est double, elle sait piloter du disque SAS en plus des disques SATA, et enfin elle supporte la norme SAS/SATA 6 gbps (contre 3 gbps pour la 9650). Alléchant.

J’ai alors entrepris de chercher si cette carte proposait une compatibilité ascendante avec mes cartes existantes, et je suis tombé sur une page relatant les questions similaires que se posait quelqu’un, et les tests de compatibilité effectués par d’autres personnes (merci au passage à tous ces gens). Résultats : la compatibilité semble totale, dans un sens comme dans l’autre. J’ai donc pris le risque, et je suis parti sur cette solution.

3ware 9750-8i
Le contrôleur RAID LSI/3ware 9750-8i, ici avec son unité de batterie protégeant la mémoire cache.

Et ça marche 🙂

Mes trois volumes RAID ont été repris tels quels, dont le volume bootable sans que je fasse une quelconque manipulation quelque part. J’ai branché, j’ai allumé, ça a booté.

Il en est de même avec l’outil graphique de gestion RAID, 3dm2 qui a pris en charge sans configuration particulière le nouveau contrôleur.

Le seul point qui a coincé a concerné mon NAS virtuel: celui-ci attaque un de mes volumes RAID en RDM, et le chemin du périphérique a changé avec le changement de contrôleur; il a juste fallu mettre à jour le chemin du volume dans la configuration de la machine virtuelle.

Quatre de mes 6 disques sont SATA3, et ont ainsi enfin pu libérer leur potentiel bridé par les 9650 qui ne sont que SATA2, mais franchement à l’usage, je n’ai pas senti de différence particulière du point de vue des performances, mais ce n’était pas spécialement le but. Le principal est que ça fonctionne, et au minimum aussi bien qu’avant; ça sera peut-être un peu mieux même dans certains cas, on verra dans le temps.

A noter tout de même que la sauvegarde de l’ensemble de mes VMs dure à peu près 25 minutes de moins qu’avant (4h48 au lieu de 5h13); c’est toujours ça de pris.

Maintenant qu’il y a un slot disponible, on peut passer au vif du sujet.

Ajout d’une carte réseau 10 gbps

J’étais à la recherche d’une carte réseau 10 gbps de classe serveur, parce que l’idée initiale était d’utiliser des fonctions de déchargement matériel de certains éléments de la pile réseau, pour soulager au maximum la CPU de mon hyperviseur. L’utilisation de celle-ci est déjà conséquent lorsque ses VMs subissent du trafic à 1 gbps, donc je craignais un peu pour le 10 gbps.

Par ailleurs, je souhaitais avoir une carte avec deux interfaces 10 gbps : une pour utiliser tout de suite, et une autre disponible pour le cas où j’aurais des projets de style stockage SAN/iSCSI ou autre; si l’envie me prenait.

Bien sûr, je cherchais tout ça sur le marché de l’occasion, dans des générations déjà assez anciennes. Pour des raisons de coût tout d’abord, mais également pour que ça ne dénote pas avec le reste de mon hardware qui est plutôt old-school.

J’ai lu quelques retours d’utilisateurs de proxmox (le produit de virtualisation que j’utilise, à base de qemu/kvm) qui remontaient utiliser avec succès des fonctions de déchargement matériel telles que le TCP segmentation offloading (la segmentation TCP consomme beaucoup de charge CPU si non gérée matériellement par la carte réseau) avec le module noyau igbx, qui pilote les cartes 10 gbps à base de puce intel. Par ailleurs de nombreux utilisateurs semblent satisfaits de ce type de carte, aussi je me suis tourné vers ce type de carte.

Ainsi, j’ai eu la chance de trouver à vil prix une carte réseau intel X540-T2 originale qui a trouvé place dans le slot PCI-express fraîchement libéré.

x540-T2

J’insiste sur le mot « originale », car il semble qu’il existe de nombreuses cartes équipées du même jeu de puces intel, mais non fabriquées pour intel et donc probablement en dessous de leur standard de qualité (même si la plupart des témoignages que j’ai vu n’étaient pas du tout négatifs).

x540-T2 dos
Le dos de la carte intel X540-T2, avec son autocollant yottamark, attestant son originalité.

Une fois la carte montée, j’ai tout simplement ajouté l’une de ses interfaces dans l’agrégat 802.3ad existant servant de pont pour mes machines virtuelles, et piqué le câble d’une des autres interfaces de l’agrégat pour tester : c’est passé comme une lettre à la poste.

configuration interface
L’interface 10 gbps enp2s0f0 ajoutée à l’agrégat existant bond0, lui-même enrôlé dans le pont vmbr0 offrant le réseau vers l’extérieur à mes machines virtuelles.

Bien sûr actuellement la vitesse maxi d’une seule interface de cet agrégat est 1 gbps, car le commutateur n’a pas d’interface 10 gbps, mais ça viendra.

Voilà mon hyperviseur mis à jour, et la seconde partie du plan de montée en débit de mon réseau local est terminée, sans accroc (j’adore)

La seule ombre au tableau vient de pfsense, le système motorisant mon pare-feu en cœur de réseau. J’ai remarqué une baisse significative des performances réseau quand j’ai activé les fonctions de déchargement hardware : je n’arrivais plus à saturer l’interface 1 gbps, alors que sans ces fonctions, je sature bien le lien. Après recherches, d’après la documentation pfsense, la prise en charge actuelle par freeBSD (qui sert de base à pfsense) des cartes réseau virtuelles virtIO utilisées par proxmox/qemu/kvm ne supporte pas les fonctions de déchargement TCP.

C’est un peu dommage car je risque d’être (fortement) limité par la CPU de mon hyperviseur quand je vais passer aux 10 gbps. En effet, dans le cas présent, un trafic à 1 gbps traversant mon pare-feu (et donc 2 interfaces virtuelles) consomme à peu près 40% de la CPU. Donc ça risque de ne pas être triste (ou plutôt si) quand je vais multiplier par 10 la vitesse de l’interface.

On verra bien d’ici là, peut-être que la prise en charge du TSO pour le driver virtIO de freeBSD sera meilleure.

o/

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *