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
- 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.
- Ouvrez l’Éditeur du Registre :
- Sélectionnez Démarrer, tapez regedit dans la zone de recherche, puis appuyez sur Entrée.
- Accédez à l’emplacement suivant : [\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e97b-e325-11ce-bfc1-08002be10318}\0004 (Microsoft iSCSI Initiator)\Parameters]
- 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.
Sélectionnez Démarrer, recherchez l’initiateur iSCSI dans la zone de recherche. Cela ouvre l’initiateur iSCSI.
Sélectionnez Configuration pour afficher le nom de l’initiateur actuel.
Pour le modifier, sélectionnez Modifier, entrez le nouveau nom de l’initiateur, puis sélectionnez OK.
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.
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.