Pour un rendu optimal, activez JavaScript

Bonnes pratiques vSphere ESXi avec DataCore SANsymphony

 ·  ☕ 7 min de lecture  ·  🦆 Jeremy

Lors de la mise en place d’un stockage DataCore il est nécessaire de s’assurer de la configuration d’un certain nombre de paramètres. Ceci est vrai à la fois pour les architectures iSCSI et FC.

Vous trouverez le détail exhaustif des bonnes pratiques sur le site du support DataCore, ici le lien vers le document PDF : VMware ESXi Configuration Guide

L’objectif de cet article est de résumer ces informations et donner quelques astuces de mise en place.

Les paramétrages qui sont décrits dans cet article, et plus particulierement les règles de multipathing, sont à appliquer avant de servir des volumes aux ESXi. Si vous souhaitez les modifier à posteriori, il faut se référer au Configuration Guide de DataCore.

Paramètres ESXi

Trois paramètres nécessitent notre attention côté ESXi:

  • Le paramètre avancé Disk.DiskMaxIoSize
  • La configuration des VAAI
  • DalyedACK dans le cadre d’une configuration iSCSI

Advanced Setting : Disk.DiskMaxIoSize

Il correspond à la taille d’un I/O transmis au stockage, par défaut il est positionné à 32767 Ko, DataCore recommande 512 Ko.

C’est le dernier des paramètres avancés à modifier qui subsiste dans les bonnes pratiques DataCore. Plus besoin de modifier les paramètres tel que UseLunReset ou CRTimeoutDuringBoot (ah nostalgie de SANmelody, enfin pas trop non plus :))

Modification via PowerCLI

Dans mon exemple :

Vérification de l’état du paramètre pour tous les hôtes d’un Cluster (remplacer “Cluster” par le nom de votre Cluster):

1
PS> Get-Cluster Cluster | Get-VMHost | Select-Object @{Name="ESXi";Expression={$_.Name}}, @{Name="DiskMaxIoSize";Expression={$_ | Get-AdvancedSetting -Name "Disk.DiskMaxIoSize" | Select-Object -ExpandProperty Value}}

Passage du paramètre à 512:

1
PS> Get-Cluster Cluster | Get-VMHost | Foreach-Object {$_ | Get-AdvancedSetting -Name "Disk.DiskMaxIoSize" | Set-AdvancedSetting -Value 512 -Confirm:$false}

Modification via interface Web

Il est également possible de modifier la valeur via l’interface HTML5 (ou Flex) du vCenter, voir en direct sur un ESXi.

Accès aux paramètres avancés:

Modification du paramètre:

Configuration VAAI : ATS for VMFS Heartbeat

Je ne vais volontairement pas m’attarder sur les VAAI, je ferai surement un article dédié sur le sujet.

Un changement a eu lieu à partir de vSphere 5.5U2 et 6.0 sur la façon de gérer les VMFS Heartbeat, maitenant ATS est utilisé à la place des commandes SCSI Read/Write standard.

ATS for VMFS Heartbeat n’est pas supporté avec DataCore, il convient donc de le désactiver:

Il est indiqué VMFS5 mais ce paramètre est également valable pour VMFS6, source : https://kb.vmware.com/s/article/2113956

Le paramètre peut également être paramétré pour l’ensemble d’un Cluster via PowerCli!

Vérification de l’état du paramètre pour tous les hôtes d’un Cluster:

1
PS> Get-Cluster Cluster | Get-VMHost | Select-Object @{Name="ESXi";Expression={$_.Name}}, @{Name="ATS Heartbeat";Expression={$_ | Get-AdvancedSetting -Name "VMFS3.UseATSForHBOnVMFS5" | Select-Object -ExpandProperty Value}}

Puis, si nécessaire, modification de la valeur pour l’ensemble du Cluster:

1
PS> Get-Cluster Cluster | Get-VMHost | Foreach-Object {$_ | Get-AdvancedSetting -Name "VMFS3.UseATSForHBOnVMFS5" | Set-AdvancedSetting -Value 0 -Confirm:$false}

Désactivation de DelayedACK

Dans le cas de configuration iSCSI, DataCore recommande la désactivation de DelayedACK:

Via PowerShell on peut vérifier l’état de ce paramètre sur l’ensemble du Cluster:

1
PS> Get-Cluster Cluster | Get-VMHost | Select-Object @{Name="ESXi";Expression={$_.Name}}, @{Name="DelayedAck";Expression={$_ | Get-VMHostHba | Where-Object Model -match "Software" | Foreach-Object {$_.ExtensionData.AdvancedOptions | Where-Object Key -eq "DelayedAck" | Select-Object -ExpandProperty Value}}}

Modification de la valeur à false pour tous les hôtes d’un Cluster:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#This section will get host information needed  
$HostView = Get-VMHost nameofesxhost | Get-View  
$HostStorageSystemID = $HostView.configmanager.StorageSystem  
$HostiSCSISoftwareAdapterHBAID = ($HostView.config.storagedevice.HostBusAdapter | where {$_.Model -match "iSCSI Software"}).device  
  
#This section sets the option you want.  
$options = New-Object VMWare.Vim.HostInternetScsiHbaParamValue[] (1)  
  
$options[0] = New-Object VMware.Vim.HostInternetScsiHbaParamValue  
$options[0].key = "DelayedAck"  
$options[0].value = $false  

#This section applies the options above to the host you got the information from.  
$HostStorageSystem = Get-View -ID $HostStorageSystemID  
$HostStorageSystem.UpdateInternetScsiAdvancedOptions($HostiSCSISoftwareAdapterHBAID, $null, $options)

Multipathing

La gestion des règles de multipathing est toujours un élément important lors du paramétrage du stockage avec vSphere.
Deux sources d’informations sont à prendre en compte :

  • La Hardware Compatibility List de VMware (HCL)
  • Le VMware ESXi Configuration Guide de DataCore

Il existe trois règles de Multipathing par défaut sur un ESXi (PSP):

  • Fixed
  • Round Robin
  • Most Recently Used

HCL VMware

Côté HCL VMware, on retrouve deux infos intéressantes :


Premièrement le support pour les volumes présentés via des hosts configurés en ALUA (Asymmetrical Logical Unit Access) uniquement, et du support de deux politiques de Mutlipathing à savoir le Round Robin et le Fixed. Pas de support de MRU

ESXi Configuration Guide

Dans le Configuration Guide de DataCore pour ESXi, on retrouve dans un premier temps les versions supportées avec et sans ALUA:

Concernant la règle de multipathing à utiliser, le document ne s’avance pas sur un mode en particulier “DataCore does not recommend to use a particular PSP. Choose the PSP that is appropriate for your configuration."

Cependant MRU (Most Recently Used) est indiqué comme n’étant pas testé, (de plus il n’apparait pas dans la HCL VMware) :

Plus important encore, MRU en association avec ALUA n’est pas supporté ! “For MRU, Hosts must not have the ALUA setting enabled in the SANsymphony console."

En conclusion, et pour résumer : pas de MRU dans vos configurations DataCore/ESXi !

Fixed était l’option plébicitée avec les anciennes versions de DataCore (SANmelody), surtout dans des configurations iSCSI.
Depuis SANsymphony 9.x, les configurations ESXi sont de plus en plus souvent avec Round Robin. Cette dernière, avec ALUA, apporte une simplification de la configuration côté ESXi, plus besoin de précisier un chemin préféré. Je ferai également un article plus précis sur ce point avec les avantages du “combo” ALUA / Round Robin.

Round Robin n’est, de toute façon, supporté qu’avec l’utilisation de ALUA (qui sera paramétré côté DataCore)

Dans la suite de l’article on va donc s’assurer à ce que ce soit Round Robin, en association avec ALUA, qui soit utilisé sur vos ESXi.

Configuration par défaut

Comme on l’a vu précédement, MRU ne doit pas être utilisé avec ALUA, et pourtant c’est ce qui est configuré par défaut sur un ESXi !

Pour chaque module SATP (Storage Array Type Plug-Ins), ESXi va associer un PSP (Path Selection Policy). La configuration par défaut est celle-ci (pour ESXi 6.x) :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
[root@esx01:~] esxcli storage nmp satp list
Name                 Default PSP    Description
-------------------  -------------  -----------------------------------------
VMW_SATP_MSA         VMW_PSP_MRU    Placeholder (plugin not loaded)
VMW_SATP_ALUA        VMW_PSP_MRU    Placeholder (plugin not loaded)
VMW_SATP_DEFAULT_AP  VMW_PSP_MRU    Placeholder (plugin not loaded)
VMW_SATP_SVC         VMW_PSP_FIXED  Placeholder (plugin not loaded)
VMW_SATP_EQL         VMW_PSP_FIXED  Placeholder (plugin not loaded)
VMW_SATP_INV         VMW_PSP_FIXED  Placeholder (plugin not loaded)
VMW_SATP_EVA         VMW_PSP_FIXED  Placeholder (plugin not loaded)
VMW_SATP_ALUA_CX     VMW_PSP_RR     Placeholder (plugin not loaded)
VMW_SATP_SYMM        VMW_PSP_RR     Placeholder (plugin not loaded)
VMW_SATP_CX          VMW_PSP_MRU    Placeholder (plugin not loaded)
VMW_SATP_LSI         VMW_PSP_MRU    Placeholder (plugin not loaded)
VMW_SATP_DEFAULT_AA  VMW_PSP_FIXED  Supports non-specific active/active arrays
VMW_SATP_LOCAL       VMW_PSP_FIXED  Supports direct attached devices

Sur la seconde ligne on voit donc que MRU sera choisie pour les hôtes configurés en ALUA. Cette configuration par défaut peut être modifiée via la commande suivante :

1
2
[root@esx01:~] esxcli storage nmp satp set --satp VMW_SATP_ALUA --default-psp VMW_PSP_RR 
Default PSP for VMW_SATP_ALUA is now VMW_PSP_RR

C’est une possiblité, surtout si vos ESXi ne voient que du stockage DataCore. Mais la solution idéale est plutôt de créer une règle sépcifique à DataCore afin de ne pas modifier la configuration par défaut.

Création d’une règle spécifique à DataCore

On peut afficher la liste des règles déjà présente sur un ESXi via :

1
[root@esx01:~] esxcli storage nmp satp rule list

Création de la règle spécifique à DataCore :

1
[root@esx01:~] esxcli storage nmp satp rule add -V DataCore -M "Virtual Disk" -s VMW_SATP_ALUA -c tpgs_on -P VMW_PSP_RR -O iops=10

Le paramètre IOPS est spécifique à Round Robin, et peu importe le type de stockage que vous utilisez avec VMware, il est souvent recommandé de le baisser (valeur par défaut à 1000), se référer aux bonnes pratiques des constructeurs/éditeurs.

Configuration ALUA DataCore

Dernière étape, lors de la déclaration de votre “host” dans DataCore, on active ALUA, associé à un Preferred Server :

Enjoy :)

Partagez