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.