Script – vSphere VM Disk IO Report und IO Limit

Es gab wieder einmal eine spannende Anforderung, welche ein VMware PowerCLI Script erforderte – ein vSphere VM Disk IO Report und und das setzen von IO Limits.

Inhalt der Anforderung war die bessere Kontrolle und Regulierung von Storage Klassen. Konkret bedeutet das, wenn sich eine VM Disk auf einem Datastore der Klasse Bronze (NL Disks) befindet, muss diese im Bezug auf IOPS limitiert werden, um eine Überlastung  der unterliegenden Disks zu vermeiden.
Nach einer Diskussion über mögliche Optionen blieb nur die Variante der VMware VM Disk Limits übrig. Auch diese Lösung ist allerdings nicht die optimale, denn es gibt ein paar Sonderfälle.

Hinweis:

Aus diesem Skript haben sich mittlerweile zwei Funktionen meines vSphere PowerShell Modules Projektes entwickelt.

 

Get-VMmaxIOPS

Set-IOPSLimit

 

http://mycloudrevolution.com/projekte/vsphere-powershell-modules/

Sonderfälle bezüglich des VM Disk IO Report und der IO Limits

  • Falls eine VM mehrere (z.B. zwei) Disks auf dem gleichen Datastore der Klasse Bronze hat und jede Disk auf 250 IOPS limitiert wird, kann Disk zwei bis zu 500 IOPs nutzen, wenn Disk eins keine Last verursacht.

Diese und andere Situationen werden genau in dem VMware KB Limiting disk I/O from a specific virtual machine beschrieben. Auch Duncan Epping (@DuncanYB) hat sich dieses Problem in seinem Artikel Limit a VM from an IOps perspective vorgenommen.

Um eine Entscheidungsgrundlage zu haben, habe ich ein VMware PowerCLI Script zum Reporten der aktuellen Situation erstellt.

Der VM Disk IO Report sollte folgendes zeigen

  • VMs, welche das Limit erreicht haben, mit allen Disks
  • Storage Klasse aller Disks der VM
  • Geplantes Limit aller Disks der VM
  • Maximale IOPs aller Disks der VM in der letzten Woche
  • Disk, welche das Limit erreicht hätte, hervorgehoben

Integriert in den vSphere vCheck  von Alan Renouf (@alanrenouf) sieht das Ganze dann so aus (Ausschnitt):

IOPS-vCheck.png

vSphere vCheck – IOPS Limit Pugin

GitHub Gist:

Für die Durchsetzung der Limits ist allerdings ein noch etwas detaillierterer Report von Nöten gewesen.

VM Disk IO Report - All

PowerShell IOPS Report – Alle VMs

VM Disk IO Report - Hit

PowerShell IOPS Report – Betroffene VMs

VM Disk IO Report Script

GitHub Gist:

Aus dem Report wir durch die aktuell auskommentierten Zeilen auch das Script zum Durchsetzen der gewünschten Limits.

Falls jemand einen anderen und vielleicht auch eleganteren Weg kennt, würde ich mich über einen Kommentar sehr freuen.

Neue Versionen

Version 1.1 – 03.2016

  • Neu: Ausschluss von VMs per Namen möglich

Version 1.2 – 04.2016

  • Neu: Ausschluss von RAW-Devices

Version 1.3 – 08.2016

  • Neu: Report-Ausgabe Sektion für Fehlerkonfigurationen
  • Optimierung: PS Header
  • Optimierung: PS Region definitions
  • Optimierung: PS Required definitions

Inspirationen

VMware Community – Setting VMDK IO Limits via PowerCLI – BCO2649
https://communities.vmware.com/thread/485386

LucD Notes – Get the maximum IOPS
http://www.lucd.info/2011/04/22/get-the-maximum-iops/

2 Comments

  1. mycloudrevolution 29. April 2016
    • Markus Kraus 10. August 2016

Leave a Reply