Optimiser les performances de votre service Elastic SAN

Cet article fournit des conseils généraux sur l’obtention de performances optimales avec un environnement qui utilise un Azure Elastic SAN.

Optimisations côté client

Recommandations générales (Machines virtuelles Linux et Windows)

  • Pour des performances optimales, déployez vos machines virtuelles et votre Elastic SAN dans la même zone et la même région.

  • Les E/S de stockage de machines virtuelles vers des volumes Elastic SAN utilisent la bande passante réseau des machines virtuelles. Par conséquent, les limites de débit de disque traditionnelles sur une machine virtuelle ne s’appliquent pas aux volumes Elastic SAN. Choisissez une machine virtuelle qui peut fournir une bande passante suffisante pour les E/S de production/machine virtuelle à machine virtuelle et les E/S iSCSI pour les volumes Elastic SAN attachés. En règle générale, vous devez utiliser des machines virtuelles Gen 5 (D/E/M) pour obtenir les meilleures performances.

  • Activez les « performances réseau accélérées » sur la machine virtuelle lors de sa création. Pour le faire via Azure PowerShell ou Azure CLI ou pour activer les performances réseau accélérées sur des machines virtuelles existantes, consultez Utiliser Azure PowerShell pour créer une machine virtuelle avec des performances réseau accélérées

Capture d’écran du flux de création de machine virtuelle, Activez la mise en réseau accélérée mis en surbrillance.

  • Vous devez utiliser 32 sessions par volume cible pour chaque volume pour atteindre ses limites maximales d’E/S par seconde et/ou de débit. Utilisez MPIO (Multipath E/S) sur le client pour gérer l’équilibrage de charge de ces multiples sessions sur chaque volume. Les scripts sont disponibles pour Windows, Linuxou sur la page Se connecter au volume de vos volumes dans le Portail Azure, qui utilise 32 sessions par défaut. L’initiateur Windows iSCSI a une limite maximale de 256 sessions. Si vous devez connecter plus de 8 volumes à une machine virtuelle Windows, réduisez le nombre de sessions à chaque volume en fonction de vos besoins.

MPIO

Windows

Utilisez les commandes suivantes pour mettre à jour vos paramètres :

# Enable multipath support for iSCSI devices
Enable-MSDSMAutomaticClaim -BusType iSCSI

# Set the default load balancing policy based on your requirements. In this example, we set it to round robin which should be optimal for most workloads.
mpclaim -L -M 2

# Set disk time out to 30 seconds
Set-MPIOSetting -NewDiskTimeout 30

Pour plus d’informations sur les cmdlets MPIO, consultez Référence MPIO.

Linux

Mettez à jour le fichier /etc/multipath.conf avec les éléments suivants :

defaults {
    user_friendly_names yes		# To create ‘mpathn’ names for multipath devices
    path_grouping_policy multibus	# To place all the paths in one priority group
    path_selector "round-robin 0"	# To use round robin algorithm to determine path for next I/O operation
    failback immediate			# For immediate failback to highest priority path group with active paths
    no_path_retry 1			# To disable I/O queueing after retrying once when all paths are down
}
devices {
  device {
    vendor "MSFT"
    product "Virtual HD"
  }
}

iSCSI

Windows

Mettez à jour les paramètres de registre ci-dessous pour l’initiateur iSCSI sur Windows.

  1. Ouvrez l’Éditeur du Registre :
  2. Sélectionnez Démarrer, tapez regedit dans la zone de recherche, puis appuyez sur Entrée.
  3. Accédez à l’emplacement suivant : [\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e97b-e325-11ce-bfc1-08002be10318}\0004 (Microsoft iSCSI Initiator)\Parameters]
  4. Mettez à jour les paramètres suivants. Faites un clic droit sur chaque paramètre et sélectionnez Modifier. Remplacez Base par décimal, mettez à jour la valeur et sélectionnez OK.
Description Paramètre et valeur
Définit les données maximales envoyées par l’initiateur dans un PDU iSCSI à la cible à 256 Ko MaxTransferLength=262144
Définit la charge utile SCSI maximale que l’initiateur négocie avec la cible à 256 Ko MaxBurstLength=262144
Définit le nombre maximal de données non sollicitées que l’initiateur peut envoyer dans un PDU iSCSI à une cible à 256 Ko FirstBurstLength=262144
Définit la quantité maximale de données que l’initiateur peut recevoir dans un PDU iSCSI en provenance de la cible à 256 Ko MaxRecvDataSegmentLength=262144
Désactive le contrôle de flux R2T InitialR2T=0
Active les données immédiates ImmediateData=1
Définit la valeur du délai d’expiration pour les requêtes WMI sur 30 secondes WMIRequestTimeout = 30 secondes
Définit la valeur du délai d’expiration pour le temps d’arrêt de la liaison sur 30 secondes LinkDownTime = 30 secondes

Dans les configurations de cluster, assurez-vous que les noms d’initiateur iSCSI sont uniques sur tous les nœuds qui partagent des volumes. Dans Windows, vous pouvez les mettre à jour via l’application Initiateur iSCSI.

  1. Sélectionnez Démarrer, recherchez l’initiateur iSCSI dans la zone de recherche. Cela ouvre l’initiateur iSCSI.

  2. Sélectionnez Configuration pour afficher le nom de l’initiateur actuel.

    Capture d’écran de la configuration de l’initiateur iSCSI sous Windows.

  3. Pour le modifier, sélectionnez Modifier, entrez le nouveau nom de l’initiateur, puis sélectionnez OK.

    Capture d’écran de la mise à jour du nom de l’initiateur iSCSI sous Windows.

Linux

Mettez à jour les paramètres suivants avec les valeurs recommandées dans le fichier config iSCSI global (iscsid.conf, généralement trouvé dans le répertoire /etc/iscsi) sur le client avant d’y connecter des volumes. Quand un volume est connecté, un nœud est créé, ainsi qu’un fichier config spécifique à ce nœud (par exemple sur Ubuntu, vous le trouverez dans le répertoire /etc/iscsi/nodes/$volume_iqn/portal_hostname,$port) qui hérite des paramètres du fichier config global. Si vous avez déjà connecté un ou plusieurs volumes au client avant de mettre à jour le fichier config global, mettez à jour le fichier config global spécifique au nœud pour chaque volume directement ou en utilisant la commande suivante :

sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n $iscsi_setting_name -v $setting_value

Where

  • $volume_iqn : IQN de volume Elastic SAN
  • $portal_hostname : nom d’hôte de portail du volume Elastic SAN
  • $port : 3260
  • $iscsi_setting_name : paramètre de chaque paramètre répertorié ci-dessous
  • $setting_value : valeur recommandée pour chaque paramètre ci-dessous
Description Paramètre et valeur
# Définir le nombre maximal de données envoyées par l’initiateur dans un PDU iSCSI à la cible à 256 Ko node.conn[0].iscsi. MaxXmitDataSegmentLength = 262144
# Définir la charge utile SCSI maximale que l’initiateur négocie avec la cible sur 256 Ko node.session.iscsi.MaxBurstLength = 262144
# Définir le nombre maximal de données non sollicitées que l’initiateur peut envoyer dans un PDU iSCSI à une cible à 256 Ko node.session.iscsi.FirstBurstLength = 262144
# Définir le nombre maximal de données que l’initiateur peut recevoir dans un PDU iSCSI en provenance de la cible à 256 Ko node.conn[0].iscsi. MaxRecvDataSegmentLength = 262144
# Désactiver le contrôle de flux R2T node.session.iscsi.InitialR2T = Non
# Activer les données immédiates node.session.iscsi.ImmediateData = Oui
# Définir la valeur du délai d’expiration pour les requêtes WMI node.conn[0].timeo.login_timeout = 30

node.conn[0].timeo.logout_timeout = 15
# Activer la vérification de synthèse CRC pour l’en-tête et les données node.conn[0].iscsi. HeaderDigest = CRC32C

node.conn[0].iscsi. DataDigest = CRC32C

Dans les configurations de cluster, vérifiez que les noms d’initiateur iSCSI sont uniques sur tous les nœuds qui partagent des volumes. Dans Linux, vous pouvez modifier /etc/iscsi/initiatorname.iscsi pour qu’il mette à jour le nom de l’initiateur. Capture d’écran mettant à jour le nom de l’initiateur iSCSI sous Linux.

Optimisations Elastic SAN

Avant de déployer un Elastic SAN, la détermination de sa taille optimale est nécessaire pour obtenir l’équilibre approprié des performances pour vos charges de travail et vos coûts. Procédez comme suit pour déterminer le meilleur dimensionnement pour vous :

Avec votre solution de stockage existante, sélectionnez un intervalle de temps (jour/semaine/trimestre) pour suivre les performances. Le meilleur intervalle de temps est un bon instantané de vos applications/charges de travail. Au cours de cette période, enregistrez le nombre maximal d’E/S par seconde et le débit combinés pour toutes les charges de travail. Si vous utilisez un intervalle supérieur à une minute ou si l’une de vos charges de travail a des goulots d’étranglement avec votre configuration actuelle, envisagez d’ajouter plus de capacité de base à votre déploiement Elastic SAN. Vous devez laisser une marge lors de la détermination de votre capacité de base, afin de tenir compte de la croissance. Le reste du stockage de votre Elastic SAN doit utiliser une capacité supplémentaire pour économiser des coûts.

Pour plus d’informations sur les performances, consultez Elastic SAN et performances des machines virtuelles.