it-swarm-fr.com

Quelles sont les meilleures pratiques pour exécuter SQL Server dans une machine virtuelle?

Quelles sont les meilleures pratiques pour exécuter SQL Server dans une machine virtuelle? Mes activités de transaction en ligne sont très faibles, mais le traitement des données est important dans le but de fournir des données de rapport à plusieurs sites Web.

21
JerryOL

Comme avec les machines physiques IO est roi. Il y aura un IO hit de la virtualisation (combien d'un hit dépend de la technologie que vous choisissez), donc assurez-vous que vous ne faites rien qui puisse aggraver cela et nuire aux performances IO).

  • Toujours utilisé une taille fixe, pas des disques virtuels dynamiques, et assurez-vous que les lecteurs/baies sous-jacents sont suffisants. Les disques virtuels dynamiques sont moins performants que ceux de taille fixe.
  • Si les données dans les machines virtuelles ne sont pas essentielles à la mission, activez la fonction VM solutions pour mettre en cache les écritures (mentir efficacement au système d'exploitation invité lorsque les choses sont physiquement écrites sur le disque) pour des performances supplémentaires. est utile pour une machine de développement et de test où les données sont facilement remplacées, ou des répliques en lecture seule locales au maître qui peuvent être recréées en cas de problème, mais il est recommandé que ces options restent désactivées pour les systèmes de production et de sauvegarde car elles augmenter les risques de perte de données (ou pire, de corruption) si la machine s'éteint de manière inattendue.
  • Assurez-vous que chaque VM a suffisamment RAM qui lui est dédié de telle sorte que le jeu de travail normal de chaque base de données tient en mémoire avec une quantité d'espace suffisante pour éviter E/S inutiles. De plus, assurez-vous que l'hyperviseur ne paginera pas les machines virtuelles RAM à tout moment (par exemple, la plupart des produits VMWare peuvent le faire, ce qui vous permet d'exécuter un ensemble de machines virtuelles plus important que vous). sinon pourrait sur le même matériel, mais la dégradation des performances peut être massive - il existe une option pour régler ou désactiver ce comportement).
  • Si l'hôte utilise des matrices RAID5, envisagez de passer à RAID10. Cela réduira l'espace disponible mais supprimera les problèmes de performances d'écriture qui peuvent être apparents avec RAID5 (ou 6).
  • Pour les machines virtuelles susceptibles de voir beaucoup d'activité IO, envisagez de leur donner leur propre lecteur ou baie, ou faites-leur uniquement partager leur ou vos disques/baies avec des données qui voient faible activité.

Bien sûr, si l'ensemble de votre base de données (et tout le reste, le VM est en cours d'exécution) s'inscrit dans le RAM alloué au VM et il voit très peu d'activité d'écriture, IO les performances peuvent être beaucoup moins problématiques.

Edit: quelques points supplémentaires:

  • Si vous utilisez des disques virtuels, assurez-vous que le meilleur type de contrôleur est utilisé pour les performances. Certaines solutions de virtualisation offrent plusieurs types de contrôleurs virtuels pour une meilleure compatibilité avec les invités et vous pourriez en trouver moins efficaces que d'autres en raison des limitations de protocole dans la conception qu'elles émulent et des limitations des pilotes du système d'exploitation invité.
  • Si votre solution de virtualisation propose des pilotes spécifiques pour le contrôleur de lecteur virtuel, assurez-vous que votre système d'exploitation invité les utilise - ceux-ci peuvent accélérer le volume IO en réduisant le nombre de copies de mémoire à mémoire et d'hôte <-> hyperviseur <-> commutateurs de contexte invité impliqués dans certaines opérations.
  • Les deux points ci-dessus s'appliquent si vous utilisez un stockage réseau tel que de simples SMB ou iSCSI également: assurez-vous que vous utilisez le contrôleur de réseau virtuel le plus efficace proposé et que votre système d'exploitation invité utilise le pilote recommandé pour cela, sinon la latence et la bande passante peuvent être plus limitées que les besoins ne le sont par la couche de virtualisation.
18
David Spillett