Azure : Performance des disques (1ère Partie)

Initialement, je voulais écrire un article sur la performance des disques durs pour un serveur SQL dans un environnement Dynamics AX. Afin de faire mes tests, j'ai créé une machine virtuelle dans le nuage Azure. C'est à ce moment que je me suis dit qu'il serait intéressant de documenter les étapes de la création de la machine et de la configuration des disques. Donc, voici la première partie d'une série d'articles sur la performance des disques durs.

La plateforme cloud de Microsoft évolue à une vitesse phénoménale. En avril 2015, Microsoft a lancé le Stokage Premium dans plusieurs centres de données Azure. La différence entre le Standard et Premium est bien expliquée dans ce billet: Premium Storage: High-Performance Storage for Azure Virtual Machine Workloads

Note: Lors de la création de cette machine, je n'ai pas respecté toutes les meilleures pratiques en matière de configuration des disques pour un serveur SQL. J'ai dû configurer un disque virtuel pour les données, un disque virtuel pour tempdb et un autre pour les logs. Read Only Host Caching doit être activé seulement pour les disques avec les bases de données et tempdb, mais pas pour les disques qui contiennent les logs. Plus d'information ici: Azure Premium Storage provides highest performance for SQL Server in Azure VM

Tout d’abord, j’ai créé un compte de stockage du type premium:


Ensuite, j’ai créé une machine virtuelle. J’ai sélectionné le dimensionnement de ma machine en portant une attention particulière aux limitations de la machine en matière de performance de disque.


J'ai sélectionné mon compte de stockage de type Premium:


La création de la machine prend quelques minutes et ensuite ma machine devient disponible:


Ensuite, j’ai attaché 4 disques de données d’une grosseur de 1023 GB chacun avec Read-Only Host Caching activé.




Avec Premium, la grosseur du disque a un impact majeur sur la performance, comme indiqué dans l'article suivant: Premium Storage: High-Performance Storage for Azure Virtual Machine Workloads



Ensuite, je me suis connecté à ma machine virtuelle et j’ai ouvert File and Storage Services. Je peux y voir mes 4 disques sous la section disque:



Afin d’obtenir le maximum d'IOPs, je vais créer un storage pool en utilisant PowerShell:

New-StoragePool –FriendlyName StoragePool1 –StorageSubsystemFriendlyName "Storage Spaces*" –PhysicalDisks (Get-PhysicalDisk –CanPool $True)


Sous la section Storage pool, je peux y voir mon Storage Pool avec mes 4 disques. Toutefois, je n'ai toujours pas de disque virtuel:



Je crée un disque virtuel en utilisant une commande PowerShell 
  • Le paramètre NumberOfColums doit être égal au nombre de disques.
  • Le paramètre Interleave doit être configuré à 256 KB.


$disks = Get-StoragePool –FriendlyName StoragePool1 -IsPrimordial $false | Get-PhysicalDisk

New-VirtualDisk -StoragePoolFriendlyName StoragePool1 –FriendlyName VirtualDisk1 -ResiliencySettingName Simple –NumberOfColumns $disks.Count –UseMaximumSize –Interleave 256KB


Je peux voir que mon disque virtuel a été créé:



Finalement, j'ai créé un volume formaté avec une allocation de 64k par cluster

Get-VirtualDisk –FriendlyName VirtualDisk1 | Get-Disk | Initialize-Disk –Passthru | New-Partition –AssignDriveLetter –UseMaximumSize | Format-Volume –AllocationUnitSize 64KB


Je peux vérifier que mon disque a été formaté avec des blocs de 64KB:

wmic volume GET Caption, Blocksize



Ainsi, j'ai maintenant un volume de 4 GB qui contient 4 disques. Chaque disque donne 5000 IOPs, donc j'ai techniquement 20 000 IOPs pour l'ensemble de mon volume !

Ai-je vraiment 20 000 IOPs ? Qu'est-ce qui en est de la latence ? Allons tester !

Previous
« Prev Post