Melpomene - Fotolia

NetApp Disk Quotas mit PowerShell überwachen

Das NetApp PowerShell Modul bietet eine Möglichkeit zur Automatisierung und Überwachung von Quotas für Festplatten. Im Schritt-für-Schritt-Tipp erfahren Sie, wie es funktioniert.

NetApp Storage wird von vielen als hoch-qualitatives Enterprise Storage wahrgenommen. NetApp hat den Ruf, belastbar zu sein, und verfügt über ein Auto-Support-System, das reagiert, wenn Ausfälle auftreten.

Wie viele andere Hersteller von Enterprise-Systemen hat NetApp mit der populären Scripting-Sprache PowerShell eine Methode zum Management seiner Speichersysteme zur Verfügung gestellt. Mit PowerShell können Storage-Administratoren eine bekannte Kommandozeile und Scripting-Syntax verwenden, um bestimmte Speicherszenarien leicht zu automatisieren.

Eine solche übliche Aufgabe, die Storage-Administratoren zu automatisieren versuchen, besteht in dem Monitoring von Disk Quotas (Plattenspeicheranteilen), besonders von Quotas, die für Endanwender eingerichtet wurden. In diesem Artikel werde ich zeigen, wie das PowerShell-Modul von NetApp eine Methode für das Monitoring von NetApp-Quoten bereitstellt.

Quota-Reports ansehen

Der erste Punkt des Monitoring einer NetApp-Quota in einem Cluster ist die Darstellung der Quotas selbst. In der PowerShell kann dies mit dem Skript Get-NcQuotaReport getan werden.

Um zum Beispiel eine NetApp-Quota für einen bestimmten Anwender, in diesem Fall „dan“, aufzurufen, kann man dies mit dem folgenden Ziel-Parameter tun:

   C:\> Get-NcQuotaReport -Target dan | Format-List

     DiskLimit     : 167772160

     DiskUsed      : 17697180

     FileLimit     : -

     FilesUsed     : 904

     NcController  : fas-1

     QuotaTarget   : dan

     QuotaType     : user

     QuotaUsers    : {dan, DOMAIN\dan}

     SoftDiskLimit : -

     SoftFileLimit : -

     Threshold     : -

     Tree          : homedir

     Volume        : testvol

     Vserver       : fas-1

     Qtree         : home

Das Resultat liefert einige wertvolle Informationen. Man sieht Disk Limit und Disk Used der Quota. Das Disk Limit entspricht dem Limit der Quota, so dass der Anwender keine weiteren Daten in diesem spezifischen Bereich (Qtree) ablegen kann.

Man sieht mit Vserver auch das Volume, zu dem Qtree gehört, sowie den Controller, mit dem man verbunden ist.

Aufgrund meiner Erfahrung organisiere ich in der Regel NetApp-Quotas auf Qtrees. Um alle Quotas auf einem besonderen Qtree zu sehen, muss man nur den Qtree spezifizieren:

Get-NcQuotaReport -Qtree testqtree

Das Resultat des Quota-Reports formatieren

Standardmäßig sind die Daten, die Get-NcQuotaReport zum Resultat sendet, nicht gerade gut lesbar. Die Eigenschaften von Disk Used und Disk Limit werden als ganze Byte-Größen angezeigt, was es den Storage-Administratoren erschwert abzuschätzen, wie nahe sie am Disk Limit sind.

Deshalb ziehe ich es vor, dies mit einem maßgeschneiderten PowerShell-Object einzupacken und diese Eigenschaften etwas zu ändern:

Get-NcQuotaReport -Qtree testqtree | ForEach-Object { $Limit = [math]::Round($_.DiskLimit / 1MB) $Used = [math]::Round($_.DiskUsed / 1MB) $Percentage = ($Used / $Limit) if ($Percentage -gt .10 -and $_.QuotaTarget -match '^[a-z0-9]+$'){ [PSCustomObject]@{ UserName = $_.QuotaTarget Used = $Used Limit = $Limit Percentage = $Percentage.Tostring("P") } } }

Mit diesem Kommando leite ich das Resultat von Get-NcQuotaReport zu ForEach-Object. Dann runde ich die Eigenschaften von Disk Limit und Disk Used ab und zeige die Gigabytes. Ich berechne den in der Variable $Percentage  benutzten Prozentsatz durch Teilen von $Used und $Limit:

$Percentage = ($Used / $Limit)

Danach verwende ich ein „if“-Statement, um nur Quotas zu zeigen, die ein User Target mit einem alphanumerischen Wert besitzen und die über 10 Prozent betragen:

         if ($Percentage -gt .10 -and $_.QuotaTarget -match '^[a-z0-9]+$'){

Schließlich verpacke ich diese in ein übliches Object mit Resultat. Man beachte, dass ich den Wert in einen Prozentsatz geändert habe, indem ich die Overload-Methode von "P" in der Tostring-Methode verwende:

             [PSCustomObject]@{

                UserName = $_.QuotaTarget

                Used = $Used

                Limit = $Limit

                Percentage = $Percentage.Tostring("P")

               }

Das Resultat ergibt ein schön formatiertes Object, das die Gigabytes und den Prozentsatz von Plattenplatz angibt, die in der für jeden Anwender definierten Quota benutzt werden:

   UserName UsedinGB LimitinGB PercentageUsed

   -------- -------- --------- --------------

   Test1    173      250       69.20 %

   Test2    84       120       70.00 %

   dan      19       25        76.00 %

   Test3    798      1024      77.93 %

Man kann mich als altmodisch bezeichnen, aber ich bekomme noch immer gerne E-Mail-Bestätigungen, wenn NetApp-Quotas eine bestimmte Bedingung erfüllen (siehe hierzu auch diesen Link). Für diese Aufgabe können wir das Skript Send-MailMessage verwenden. Man beachte, dass ich die Variable $Alert verwende, um das Resultat von Get-NcQuotaReport festzuhalten und im Body meiner Mail-Message zu benutzen:

$Alert = Get-NcQuotaReport -Qtree testqtree | ForEach-Object {

         $Limit = [math]::Round($_.DiskLimit / 1MB)

         $Used = [math]::Round($_.DiskUsed / 1MB)

         $Percentage = ($Used / $Limit)

         if ($Percentage -gt .60 -and $_.QuotaTarget -match '^[a-z0-9]+$'){

             [PSCustomObject]@{

                UserName = $_.QuotaTarget

                Used = $Used

                Limit = $Limit

                Percentage = $Percentage.Tostring("P")

               }

         }

     }

 

     Send-MailMessage -Body $Alert -To [email protected] -From [email protected] -SmtpServer smtp.domain.com -Subject 'Netapp Quota alert'

Quotas sind nur der Beginn

Ich habe durchaus positive Erfahrungen mit NetApp-Quotas gemacht. Zusammen mit dem PowerShell-Modul kann die Verwaltung von NetApp-Clustern die Automatisierungsfunktionen in hohem Maße verbessern. Die Skripts von NetApp stellen einen leicht gangbaren Weg dar, Disk Quotas anzusehen und sie so zu überwachen, wie ich es hier aufgezeigt habe. Natürlich stellen Quotas nur die Spitze des Eisbergs dar, was man alles mit PowerShell automatisieren kann. 

Erfahren Sie mehr über Storage Management