mardi 28 avril 2009

SQL Server et iSCSI

Introduction
Je suis face à une solution SQL serveur originale.
Le serveur Sql est installé sur une machine virtuelle (WMWare) et son espace de stockage est accessible via un lecteur iSCSI.
En gros, un périphérique iSCSI est un disque dur SCSI connecté au système d'exploitation via un réseau Ethernet (IP). Il permet le transfert d'information par block.
Pour plus d'information sur le iSCSI, voir cet article sur Wikipédia.

Dans le cas qui nous concerne, les disques iSCSI sont stockés dans un Vault iSCSI, matériel physique dédié à cet usage (je n'en connais malheureusement pas plus).

Les questions en suspend
Dans cette situation, je me pose un certain nombre de questions.
En effet, accéder à un disque via un "réseau" ne parait un peu périlleux... surtout s'il s'agit d'une DB de production (OLTP) de 13 Go.
Est-ce vraiment un choix approprié? Quid des temps de latence réseau? Du débit en lecture / écriture?
Que se passera t'il a la suite d'un évènement réseau (déconnexion, ralentissement du traffic, coupure), lorsque Sql Serveur ne pourra pas accéder à ses fichiers de donnée?

Que pense Microsoft de l'utilisation de iSCSI avec Sql Server?

Support iSCSI par Windows
Le support iSCSI est assuré par une couche logiciel "iSCSI initiator" (driver) disponible entre autre sur le site de Microsoft (Téléchargement ici).
 

Ce qu'en pense Microsoft
Et bien, selon l'article KB833770, Microsoft n'en pense pas du mal a condition que la solution apporte la garantie "guaranteed delivery to stable media" (voir KB967576) et "Alway On storage solution" (ici) pour SQL serveut.

Cependant, pour reprendre les termes de l'article, il convient d'être prudent.
Le temps de latence pour accéder au périphérique iSCSI doit être minimisé. Pour maximisé le débit du serveur SQL, il convient également qu'il soit (le serveur SQL) configuré pour maximisé l'utilisation du cache SQL.
Il est entre autre possible dans l'article "support for network database files in SQL Server" (KB304261) que Microsoft attend un périphérique certifié WHQL (Windows Hardware Quality Lab) pour stoquer les fichiers DB sur un NAS (donc égalment les périphériques iSCSI).

La liste des périphériques iSCSI certifié par microsoft est disponible sur le site Windows Server Catalog.


Le débit des disk iSCSI

En temps que néophyte, il est assez difficile d'imaginer qu'un disque iSCSI puisse être plus rapide qu'un disque SCSI attaché directement à la machine.
Selon notre administrateur, le débit iSCSI est beaucoup plus important principalement à cause de la carte Ethernet Gigabyte. Cela ne tient cependant pas compte des temps de latence réseau qui s'additionnent encore au temps d'acces disques.

Je reste néanmoins dubitatif devant une telle affirmation...


A la lecture de l'article "Fibre Channel and iSCSI Performance Comparison for DSS Workloads Using SQL Server 2005" de Microsoft (pdf), il apparait inutile de tester les performances d'un system iSCSI par rapport à des disques locaux. Cet article n'envisage aucune comparaison avec des disques locaux (comme s'ils ne pouvaient se révéler d'une quelconque importance dans cette architecture).

Un autre article parle également des performances de mySql sur différents type disques et entre autre un array iSCSI. Bien que le graphique soit relativement imprécis sur les échelles, les perfomances iSCSI valent au moins les performances SCSI d'un disque local. Tout comme l'article de Microsoft, l'utilisation d'un array iSCSI avec beaucoup de disques peut même présenter un avantage (question d'architecture).



Optimisation des DB sur disk iSCSI

L'article "Fibre Channel and iSCSI Performance Comparison for DSS Workloads Using SQL Server 2005" publié par Microsoft (pdf), fournit des informations utiles concernant l'architecture.
Entre autre, la TempDB est partagée sur plusieurs disques physiques afin de maximiser les performances.

Lectures annexes

Voici quelques reférences vers des articles intéressants. Certains d'entre eux ont déjà été mentionnés plutot dans cet article.
  • Fibre Channel and iSCSI Performance Comparison for DSS Workloads Using SQL Server 2005 from Microsoft (pdf, deja mentionné).
  • Using SQL Server 2005 in a Virtual Environment from Microsoft (doc)
  • Solutions for Highly Scalable Database Applications: An analysis of architectures and technologies (pdf)
  • SAN, NAS, and iSCSI (& SQL Server) article de vulgarisation de Yalfa

Aucun commentaire: