Les contrôleurs de stockage

Selon les constructeurs et les modèles, vous pourrez choisir le type (fibre optique FC, iSCSI, 512 Mo de mémoire cache jusqu’à plusieurs Go) et le nombre de contrôleurs. La configuration la plus simple d’une baie ne dispose que d’un seul contrôleur tandis que les baies haute disponibilité embarquent deux contrôleurs. Ces contrôleurs peuvent être configurés en mode actif/actif ou actif/passif. Le choix de la configuration peut impacter les performances et la disponibilité des données. Nous allons analyser ces configurations et dans quel cas de figure il convient de les mettre en œuvre.

Configuration Actif/Passif

En mode actif/passif, les deux contrôleurs fonctionnent en mode redondant avec un cache mis en miroir. Si un contrôleur tombe en panne, le cache du contrôleur est commuté automatiquement. Chaque contrôleur dispose de ses propres LUN, un contrôleur est défini comme primaire et l’autre  comme secondaire pour accéder aux LUNs. Mais la baie de stockage ne donne pas accès à un LUN par le biais de chemins alternatifs. La baie doit changer l’appartenance (ownership) entre les contrôleurs pour emprunter des chemins alternatifs, ce qui peut dégrader fortement les performances.

Dans cette configuration, l’accès aux LUNs s’effectue via le contrôleur (Ctrl) A, et le contrôleur B entrera en fonction uniquement si le contrôleur A ne fonctionne plus. Si un port du contrôleur A est défaillant, l’accès se fera par un autre commutateur et/ou par un autre port mais pas via le contrôleur B.

Configuration Actif/Actif

En mode actif/actif, les deux contrôleurs fonctionnent en parallèle délivrant ainsi des performances de haut niveau. Néanmoins en cas de panne, les flux ne sont plus traités que par un seul contrôleur, et les performances peuvent être impactées de façon importante. Il est donc important de mettre en œuvre des technologies telles que le Multipathing (utilisation de plusieurs liens physiques), Load Balancing (répartition de charge), etc….

La configuration du cache impacte également les performances, il convient de bien le configurer, nous aborderons ce sujet au chapitre B.3. A noter que dans cette configuration les LUNs sont visibles par n’importe quel contrôleur.

Afin de mettre en œuvre le Multipathing, il convient d’équiper votre serveur d’une carte FC (Fiber Channel – fibre optique) double ports ou de deux cartes distinctes. Sauf pour certains cas particuliers, il n’est pas recommandé d’attacher un volume à un port d’un contrôleur, car en cas de problème de celui-ci, l’accès aux données sera impossible.

Dans un stockage de type Fiber Channel, les ports d’interconnexions agissent comme un commutateur interne à des fins de redondance. Lorsque la disponibilité des données prime sur la performance, il convient d’activer l’interconnexion de ports afin de relier « virtuellement » les deux contrôleurs et le serveur aura accès aux volumes par le biais de n’importe quel contrôleur et permettre ainsi de s’affranchir de l’acquisition de commutateur FC externe.

Si l’un des deux contrôleurs venait à faillir, l’interconnexion de ports (Host Port Interconnect) permet l’accès continu aux données sans intervention. Cette configuration doit être activée si vous désirez faire du Direct Attachment (attachement direct, sans passer par un commutateur FC additionnel, au maximum 2 hôtes par baie). Bien entendu, cette fonction n’existe pas dans les baies disposant d’un seul contrôleur.

Dans le cas où l’interconnexion de ports n’est pas activée, les données appartiennent à l’un des contrôleurs, selon la configuration et permet une configuration de type point à point. Cette configuration résulte typiquement d’une topologie double contrôleur qui sont connectés à un ou plusieurs commutateurs Fiber Channel

Dans cette configuration, le serveur connait tous les chemins de chaque LUN et s’assure qu’il est capable de les atteindre. Vous pouvez atteindre un LUN depuis n’importe quel HBA et les deux contrôleurs accèdent simultanément à cette LUN.

L’importance de la mémoire cache

La mémoire cache (antémémoire) est bien entendu un élément important dans le choix de vos contrôleurs mais sa configuration doit être judicieuse. Je vous recommande, selon les usages les plus courants, de choisir un contrôleur doté d’un cache embarquant beaucoup de mémoire. Voici les différents paramètres de gestion de cache le plus souvent rencontrés:

  • Write Trough (antémémoire à écriture directe): En choisissant ce paramétrage de gestion de cache, les données présentes dans le cache sont immédiatement écrites vers les disques durs. Son usage le destine principalement à des bases de données ou des applications nécessitant un état de consistance applicative (application consistent) à tout moment.
  • Write Back (antémémoire à écriture différée) : Avec ce paramétrage, les données présentes dans la cache sont écrites de façon différée vers les disques durs. Les données en lecture sont délivrées par le cache (qui est beaucoup plus rapide qu’une pile RAID) et les données en écriture (bien plus lentes qu’en lecture) sont ainsi différées, vous permettant ainsi d’obtenir les meilleures performances.  Il est essentiel de  coupler  à votre contrôleur une batterie, appelée BBU (Battery Backup Unit), afin de se prémunir d’une perte de données suite à une défaillance électrique. Cette batterie assurera le rôle d’envoyer les données présentes en cache vers la pile RAID, sans cette batterie, vous perdez le contenu des données (par exemple 2 Go si votre contrôleur embarque 2 Go de mémoire cache).
  • Ahead Cache Settings (antémémoire à lecture anticipée): il s’agit d’une fonctionnalité permettant d’anticiper les lectures sur le stockage.  Ce mode de gestion de cache peut être très intéressant, mais malheureusement, il est incapable de « prédire » par avance les données qui vont être lues. Ce mode convient donc principalement aux accès séquentiels conséquents tels que le streaming vidéo ou l’accès à des fichiers de taille importante par exemple. La capture d’écran ci-dessous provient de l’interface d’administration d’une baie qui analyse l’efficacité du paramètre. Certains contrôleurs proposent une option appelée Adaptive, qui permet de commuter en fonction des accès (séquentiels ou aléatoires), d’un mode de cache anticipé à normal.

Je vous recommande l’usage du cache en mode Write Back qui améliore énormément les performances si vous disposez d’une batterie sur votre contrôleur, bien sûr. Selon certains constructeurs, pour obtenir des snapshots consistants, le mode Write Through est obligatoire car selon eux, un snapshot ne peut pas être consistant si des données sont présentes dans la mémoire du cache au moment du snapshot.

Néanmoins, il est impératif de sécuriser votre infrastructure en l’associant à des onduleurs intelligents capables d’éteindre proprement vos serveurs et vos baies de stockage afin de « vider » (flush) les données qui sont présentes dans le cache.

Certaines baies sont capables d’analyser l’efficacité de la mémoire cache anticipée. Dans la capture suivante, l’analyse nous informe que 10% des requêtes peuvent être anticipées pour une efficacité globale de 5%.

Réglage du cache

en fonction du niveau de RAID

RAID de type 0 – 1 – 10

RAID de type 5 – 6

Réglage du cache

Write Trough: accès séquentiel

Write Back: accès aléatoire

Write Back