Directory Quota Erweiterung¶
Einleitung¶
Die Erweiterung User Directory Erweiterung berechnet die Größe des Home-Verzeichnisses für einen bestimmten Benutzer. Sie berechnet auch die Auslastung in Prozent, basierend auf einer Referenzquote, die auf den Gruppen, einer Datei oder einem konfigurierten Active Directory-Attribut basiert.
Fakten¶
Name |
Directory Quota |
Bezeichner |
|
Version |
2.4 |
Funktionen |
Adapter |
Abschnitte |
|
Informationsblöcke |
|
Trace-Sections |
|
Konfiguration¶
Das Konfigurationsschema¶
Module
DirectoryQuota
Must be one of this:
Group
,File
,ActiveDirectory
Complex list definition
Must not be empty.
Must be a valid regular expression.
Minimum value:
-1
List
Value list definition
String
Must not be empty.
Must be an existing file.
Must be a valid regular expression.
Must be one of this:
ActiveDirectory
,Static
Default Value:
ActiveDirectory
Der Wert LimitsSource
¶
Mit dem Wert LimitsSource
wählst du die Quelle aus, von der die Verzeichnisgrenzwerte gelesen werden sollen. Dieser Wert ist erforderlich und kann eine der folgenden Optionen haben:
Group
: Die Grenzwerte werden aus mit der ListeGroupLimits
ermittelt.File
: Die Grenzwerte werden aus einer separaten Datei gelesen. Die genauen Details dazu werden mit der GruppeLimitsFile
definiert.ActiveDirectory
: Die Grenzwerte werden von einem dem Active Directory Server gelesen. Die GruppeActiveDirectoryLimit
definiert welcher Wert von dem Server verwendet wird.
Je nach ausgewähltem Wert musst du entweder die Gruppe ActiveDirectoryLimit
, die Gruppe LimitsFile
oder die Liste GroupLimits
angeben. Du darfst nur einen dieser Konfigurationsblöcke angeben, sonst startet die Erweiterung nicht.
Die Verzeichnisgrenzwertquelle gibt an, wie die Erweiterung die maximale Anzahl an Bytes erhält, die für jeden Benutzer verfügbar sind. Siehe die Abschnitte für die beschriebenen Konfigurationswerte für alle Details.
1<Module name="DirectoryQuota">
2 <Value name="LimitsSource">ActiveDirectory</Value>
3 ...
4</Module>
Die Gruppe ActiveDirectoryLimit
¶
Die Gruppe ActiveDirectoryLimit
wird nur verwendet, wenn du den Wert LimitsSource
auf ActiveDirectory
setzt. Sie legt die erforderlichen Werte fest, um das Verzeichnislimit aus einem bestimmten Active Directory-Wert zu extrahieren.
Schau dir dazu auch folgenden Abschnitt an: Der Wert LimitsSource.
Der Active Directory-Wert muss in der Active Directory-Erweiterung konfiguriert werden, kann aber für den Benutzer unsichtbar sein.
1<Module name="DirectoryQuota">
2 <Value name="LimitsSource">ActiveDirectory</Value>
3 <Group name="ActiveDirectoryLimit">
4 <Value name="ValueName">cvLimit</Value>
5 <Value name="Factor">1mb</Value>
6 </Group>
7 ...
8</Module>
Der Wert ValueName
¶
Mit dem Wert ValueName
bestimmst du den Namen des Werts aus der Active Directory-Erweiterung, von dem das Limit gelesen wird. Der Name muss genau dem entsprechen, den du in der Liste ValueOrder
der Active Directory-Erweiterung verwendest. Dies kann einer der integrierten Wertnamen oder benutzerdefinierte Wertnamen mit dem Präfix cv
sein.
Probleme mit dem Wertnamen werden in der Logdatei gemeldet. Wenn das Limit nicht korrekt angezeigt wird, wirf einen Blick in das Log und suche nach Fehlermeldungen von dieser Erweiterung.
1<Module name="DirectoryQuota">
2 <Value name="LimitsSource">ActiveDirectory</Value>
3 <Group name="ActiveDirectoryLimit">
4 <Value name="ValueName">cvLimit</Value>
5 <Value name="Factor">1mb</Value>
6 </Group>
7 ...
8</Module>
Der Wert Factor
¶
Verwende den Wert Factor
, um den Active Directory-Wert der das Verzeichnislimit angibt in Byte umzurechnen. Wenn der Wert beispielsweise das Limit in Gigabyte angibt, verwende „1000000000“ oder „1gb“ als Faktor, um das korrekte Limit zu erhalten.
Dieser Wert ist erforderlich und muss mindestens „1“ sein.
1<Module name="DirectoryQuota">
2 ...
3 <Group name="ActiveDirectoryLimit">
4 <Value name="ValueName">cvLimit</Value>
5 <Value name="Factor">1000000000</Value>
6 </Group>
7 ...
8</Module>
Der Wert Default
¶
Mit dem Wert Default
legst du das Standard-Quota fest, welches verwendet wird, wenn der Active Directory-Wert nicht vorhanden ist. Dieser Wert wird mit Factor
multipliziert, um das endgültige Limit in Bytes zu erhalten. Wenn du ihn weglässt, oder -1
verwendest, wird standardmäßig kein Limit verwendet.
1<Module name="DirectoryQuota">
2 ...
3 <Group name="ActiveDirectoryLimit">
4 <Value name="ValueName">cvLimit</Value>
5 <Value name="Factor">1000</Value>
6 <Value name="Default">200</Value>
7 </Group>
8 ...
9</Module>
Die Liste GroupLimits
¶
Die Liste GroupLimits
wird nur verwendet, wenn du LimitsSource
auf den Wert Group
setzt. Sie legt Verzeichnisgrenzen basierend auf den Gruppen fest, denen der Benutzer angehört. Die Liste wird in der konfigurierten Reihenfolge überprüft, wobei der erste passende Eintrag das Limit für das Benutzerverzeichnis festlegt.
Schau dir dazu auch folgenden Abschnitt an: Der Wert LimitsSource.
Jeder Eintrag benötigt einen GroupRegExp
und einen Limit
Wert. Diese werden in den nächsten Abschnitten erläutert.
1<Module name="DirectoryQuota">
2 <Value name="LimitsSource">Group</Value>
3 <List name="GroupLimits">
4 ...
5 </List>
6 ...
7</Module>
Der Wert GroupRegExp
¶
Mit dem Wert GroupRegExp
definierst du einen regulären Ausdruck, der gegen die Gruppen-DN-Namen des aktuellen Benutzers geprüft wird. Vergiss nicht, am Ende der Liste einen Eintrag mit dem speziellen regulären Ausdruck .*
hinzuzufügen, der jedes Mal übereinstimmt. Dies ist erforderlich, um einen Fallback-Wert bereitzustellen, falls keine andere Gruppe übereinstimmt.
Bei dem regulären Ausdruck kannst du fast alle Features der Perl kompatiblen regulären Ausdrücken verwenden.
1<Module name="DirectoryQuota">
2 <Value name="LimitsSource">Group</Value>
3 <List name="GroupLimits">
4 <ListEntry>
5 <Value name="GroupRegExp">OU=(?:tester|integration)</Value>
6 <Value name="Limit">-1</Value>
7 </ListEntry>
8 <ListEntry>
9 <Value name="GroupRegExp">.*</Value>
10 <Value name="Limit">200</Value>
11 </ListEntry>
12 </List>
13</Module>
Der Wert Limit
¶
Mit dem Wert Limit gibst du das Limit des Benutzerverzeichnisses an, wenn eine Gruppe übereinstimmt. Es wird in Byte angegeben, aber du kannst die Suffixe „kb“, „mb“ und „gb“ verwenden, um größere Werte anzugeben. Siehe Ganzzahlen (integer) für weitere Details zur Angabe von Byte-Mengen. Du kannst den speziellen Wert -1
verwenden, um kein Limit festzulegen.
1<Module name="DirectoryQuota">
2 <Value name="LimitsSource">Group</Value>
3 <List name="GroupLimits">
4 <ListEntry>
5 <Value name="GroupRegExp">OU=(?:tester|integration)</Value>
6 <Value name="Limit">-1</Value>
7 </ListEntry>
8 <ListEntry>
9 <Value name="GroupRegExp">.*</Value>
10 <Value name="Limit">200</Value>
11 </ListEntry>
12 </List>
13</Module>
Die Gruppe LimitsFile
¶
Die Gruppe LimitsFile
wird nur verwendet, wenn du LimitsSource
auf den Wert File
setzt. Die Werte geben Details über die verwendeten Dateien an und konfigurieren einen regulären Ausdruck, um sie zu analysieren.
Jedes Übereinstimmung des regulären Ausdrucks setzt das Limit für einen Benutzernamen.
Schau dir dazu auch folgenden Abschnitt an: Der Wert LimitsSource.
1<Module name="DirectoryQuota">
2 <Value name="LimitsSource">File</Value>
3 <Group name="LimitsFile">
4 <List name="Paths">
5 <Value>c:\Quotas\quotas1.txt</Value>
6 <Value>c:\Quotas\quotas2.txt</Value>
7 </List>
8 <Value name="Encoding">UTF-8</Value>
9 <Value name="ParseRegExp">corp\\(\w+) \S+ \S+ \S+ \S+ (\d+[kmgKMG])</Value>
10 <Value name="ParseCaptureGroupForName">1</Value>
11 <Value name="ParseCaptureGroupForLimit">2</Value>
12 </Group>
13 ...
14</Module>
Die Liste Paths
¶
Die Liste Paths
enthält eine Liste von absoluten Pfaden zu den Dateien, die die Limits enthalten. Jede Datei wird einmal nach dem Start des Raptor-Servers gelesen und während des Betriebs nicht erneut gelesen. Diese Liste ist erforderlich und muss mindestens einen Eintrag enthalten.
1<Module name="DirectoryQuota">
2 <Value name="LimitsSource">File</Value>
3 <Group name="LimitsFile">
4 <List name="Paths">
5 <Value>c:\Quotas\quotas1.txt</Value>
6 <Value>c:\Quotas\quotas2.txt</Value>
7 </List>
8 <Value name="Encoding">UTF-8</Value>
9 <Value name="ParseRegExp">corp\\(\w+) \S+ \S+ \S+ \S+ (\d+[kmgKMG])</Value>
10 <Value name="ParseCaptureGroupForName">1</Value>
11 <Value name="ParseCaptureGroupForLimit">2</Value>
12 </Group>
13 ...
14</Module>
Der Wert Encoding
¶
Mit dem Wert Encoding
gibst definierst du die Kodierung der Dateien welche du in der Liste Paths
angegeben hast. Es gibt eine große Anzahl unterstützter Codecs; Eine kleine Auswahl unterstützter Codecs ist in dieser Liste aufgeführt:
ISO 8859-1 bis 10
UTF-8
UTF-16
Falls deine gewünschte Kodierung nicht in der obengenannten Liste ist, gib sie einfach als Konfigurationswert ein. Bei einer unbekannten Kodierung findest du eine Fehlermeldung in der Logdatei und eine Liste unterstützter Werte. Die Erweiterung wird in diesem Fall nicht gestartet.
Falls du die Dateien noch nicht erstellt hast und daher die Kodierung frei wählen kannst, verwende in jedem Fall „UTF-8“. Dies ist die beste Kodierung für alle modernen Textdateien.
1<Module name="DirectoryQuota">
2 <Value name="LimitsSource">File</Value>
3 <Group name="LimitsFile">
4 <List name="Paths">
5 <Value>c:\Quotas\quotas1.txt</Value>
6 <Value>c:\Quotas\quotas2.txt</Value>
7 </List>
8 <Value name="Encoding">UTF-8</Value>
9 <Value name="ParseRegExp">corp\\(\w+) \S+ \S+ \S+ \S+ (\d+[kmgKMG])</Value>
10 <Value name="ParseCaptureGroupForName">1</Value>
11 <Value name="ParseCaptureGroupForLimit">2</Value>
12 </Group>
13 ...
14</Module>
Der Wert ParseRegExp
¶
Mit dem Wert ParseRegExp
setzt du einen regulären Ausdruck, der zum Extrahieren der Benutzernamen und Limits aus den Dateien verwendet wird. Der reguläre Ausdruck benötigt mindestens zwei Capture-Gruppen: eine für den Benutzernamen und eine für das Limit. Die Erweiterung erstellt für jeden übereinstimmenden Eintrag in der Datei einen Limit-Eintrag.
Ein Beispiel für einen regulären Ausdruck könnte wie folgt aussehen:
corp\\(\w+) \S+ \S+ \S+ \S+ (\d+[kmgKMG])
Dieser reguläre Ausdruck passt zu allen Einträgen in einer Datei, bei der die erste Capture-Gruppe den Namen des Benutzers und die zweite das Limit erfasst. Alle anderen Elemente des regulären Ausdrucks stellen sicher, dass nur gültige Einträge in den Dateien eine Übereinstimmung finden.
1<Module name="DirectoryQuota">
2 <Value name="LimitsSource">File</Value>
3 <Group name="LimitsFile">
4 <List name="Paths">
5 <Value>c:\Quotas\quotas1.txt</Value>
6 <Value>c:\Quotas\quotas2.txt</Value>
7 </List>
8 <Value name="Encoding">UTF-8</Value>
9 <Value name="ParseRegExp">corp\\(\w+) \S+ \S+ \S+ \S+ (\d+[kmgKMG])</Value>
10 <Value name="ParseCaptureGroupForName">1</Value>
11 <Value name="ParseCaptureGroupForLimit">2</Value>
12 </Group>
13 ...
14</Module>
Der Wert ParseCaptureGroupForName
¶
Mit dem Wert ParseCaptureGroupForName
gibst du den Index der Capture-Gruppe für den Namen an. Der Standardwert ist 1.
1<Module name="DirectoryQuota">
2 <Value name="LimitsSource">File</Value>
3 <Group name="LimitsFile">
4 <List name="Paths">
5 <Value>c:\Quotas\quotas1.txt</Value>
6 <Value>c:\Quotas\quotas2.txt</Value>
7 </List>
8 <Value name="Encoding">UTF-8</Value>
9 <Value name="ParseRegExp">corp\\(\w+) \S+ \S+ \S+ \S+ (\d+[kmgKMG])</Value>
10 <Value name="ParseCaptureGroupForName">1</Value>
11 <Value name="ParseCaptureGroupForLimit">2</Value>
12 </Group>
13 ...
14</Module>
Der Wert ParseCaptureGroupForLimit
¶
Mit dem Wert ParseCaptureGroupForLimit
gibst du den Index der Capture-Gruppe für das Limit an. Der Standardwert ist 2.
1<Module name="DirectoryQuota">
2 <Value name="LimitsSource">File</Value>
3 <Group name="LimitsFile">
4 <List name="Paths">
5 <Value>c:\Quotas\quotas1.txt</Value>
6 <Value>c:\Quotas\quotas2.txt</Value>
7 </List>
8 <Value name="Encoding">UTF-8</Value>
9 <Value name="ParseRegExp">corp\\(\w+) \S+ \S+ \S+ \S+ (\d+[kmgKMG])</Value>
10 <Value name="ParseCaptureGroupForName">1</Value>
11 <Value name="ParseCaptureGroupForLimit">2</Value>
12 </Group>
13 ...
14</Module>
Beispiel¶
Angenommen, du hast eine oder mehrere Dateien mit Limits, wie in Beispieldatei mit Quota-Einträgen gezeigt, und möchtest die Benutzernamen aus der ersten Spalte und die Limits aus der zweitletzten Spalte aus dieser Datei extrahieren.
In diesem Fall verwendest du eine Konfiguration wie in Komplette Beispielkonfiguration gezeigt. Sie definiert einen regulären Ausdruck, der die Zeilen in den Dateien abgleicht und Capture-Gruppen verwendet, um den Benutzernamen und das Limit aus jeder Zeile zu extrahieren.
Die Konfiguration definiert zwei Dateien, die alle in der angegebenen Reihenfolge gelesen und mit demselben regulären Ausdruck geparst werden.
Der Wert HomeDirectoryLimits
wird nur verwendet, um den Standardwert zu konfigurieren, der verwendet wird, wenn kein Eintrag aus der Datei dem Benutzernamen entspricht.
# Autogenerated file
corp\dwjzocqs user@/vol/user 1g - 4K 5G -
corp\kpvkbejb user@/vol/user 1g - 4K 900M -
corp\zzffxbbt user@/vol/user 1g - 4K 5G -
corp\qjpdgznk user@/vol/user 1g - 4K 5G -
corp\ztmxnzpo user@/vol/user 1g - 4K 200M -
corp\nsborafe user@/vol/user 1g - 4K 5G -
corp\oaqsstbo user@/vol/user 1g - 4K 5G -
corp\xuwbjuls user@/vol/user 1g - 4K 200M -
corp\vgykefks user@/vol/user 1g - 4K 200M -
corp\jgwyyqvz user@/vol/user 1g - 4K 200M -
corp\jxecdcct user@/vol/user 1g - 4K 5G -
corp\vfaveuxn user@/vol/user 1g - 4K 200M -
1<Module name="DirectoryQuota">
2 <Value name="LimitsSource">File</Value>
3 <Group name="LimitsFile">
4 <List name="Paths">
5 <Value>c:\Quotas\quotas1.txt</Value>
6 <Value>c:\Quotas\quotas2.txt</Value>
7 </List>
8 <Value name="Encoding">UTF-8</Value>
9 <Value name="ParseRegExp">corp\\(\w+) \S+ \S+ \S+ \S+ (\d+[kmgKMG])</Value>
10 <Value name="ParseCaptureGroupForName">1</Value>
11 <Value name="ParseCaptureGroupForLimit">2</Value>
12 </Group>
13 ...
14</Module>
Der Wert RequestMode
¶
Der Wert RequestMode
steuert, wie die Verzeichnis-Quota auf der Detailseite im Client angefordert wird.
Es gibt zwei gültige Werte:
User
– Nur ein Link „Diesen Wert anfordern…“ wird angezeigt. Wenn der Benutzer auf diesen Link klickt, wird die Verzeichnis-Quota berechnet und angezeigt.Automatic
– Sobald die Detailseite eines Benutzers geöffnet wird, wird die Verzeichnis-Quota für diesen Benutzer berechnet.
1<Module name="DirectoryQuota">
2 ...
3 <Value name="RequestMode">Automatic</Value>
4 ...
5</Module>
Der Wert CacheDuration
¶
Der Wert CacheDuration
legt die Dauer in Minuten fest, wie lange das berechnete Verzeichnis im Cache gespeichert wird, bevor es neu berechnet wird. Kleinere Werte erhöhen die CPU- und Netzwerkauslastung.
1<Module name="DirectoryQuota">
2 ...
3 <Value name="CacheDuration">15</Value>
4 ...
5</Module>
Der Wert HomeDirectorySource
¶
Der Wert HomeDirectorySource
wählt die Quelle für den Pfad des Home-Verzeichnisses. Es gibt zwei gültige Werte:
ActiveDirectory
– Der Pfad des Home-Verzeichnisses wird aus dem WerthomeDirectory
der Active Directory-Erweiterung entnommen.Static
– Der Pfad des Home-Verzeichnisses wird aus dem KonfigurationswertHomeDirectoryPath
verwendet. Siehe den folgenden Abschnitt für Details.
1<Module name="DirectoryQuota">
2 ...
3 <Value name="HomeDirectorySource">ActiveDirectory</Value>
4 ...
5</Module>
Der Wert HomeDirectoryPath
¶
Der Wert HomeDirectoryPath
wird nur verwendet, wenn die Quelle im Wert HomeDirectorySource
auf Static
gesetzt ist. Es muss ein absoluter Pfad zum Home-Verzeichnis des Benutzers sein. Du kannst den Platzhalter %NAME%
in diesem statischen Pfad verwenden, der durch den Objektnamen ersetzt wird.
Hier ist ein Beispiel für einen statischen Pfad:
\\server01\home-directories\%NAME%
Dies verwendet die Home-Verzeichnisse auf dem Dateiserver server01
im Freigabeverzeichnis home-directories
. Der Platzhalter am Ende wird durch den Objektnamen ersetzt.
1<Module name="DirectoryQuota">
2 ...
3 <Value name="HomeDirectoryPath">\\server01\home-directories\%NAME%</Value>
4 ...
5</Module>
Beispielkonfigurationen¶
Gruppenbasierte Limits¶
Beispielkonfiguration 1 zeigt ein typisches Konfigurationsbeispiel der Erweiterung, das gruppenbasierte Limits verwendet. Es sind drei verschiedene Limits definiert. Das erste Limit gilt für alle Benutzer, die sich in der Gruppe SpecialTestGroup
befinden, und ist auf 100 MB festgelegt. Das zweite Limit gilt für alle Benutzer, die sich in der Gruppe AdministratorGroup
befinden, und ist auf 500 MB festgelegt. Für alle Benutzer, die nicht in einer der beiden oben genannten Gruppen sind, ist das Limit auf 20 MB festgelegt. Dies wird mit dem speziellen regulären Ausdruck .*
im letzten Eintrag erreicht.
Active Directory¶
Beispielkonfiguration 2 zeigt ein typisches Beispiel für eine Konfiguration, die einen Active-Directory Wert verwendet, um das Limit für den Benutzer festzulegen. Es wird die Quelle auf ActiveDirectory
gesetzt und der benutzerdefinierte Wert cvLimit
aus der Active-Directory Erweiterung ausgewählt. Dieser Wert wird in Megabyte angegeben, daher wird der Faktor auf 1 MB gesetzt. In diesem Beispiel wird ein statischer Pfad als Home-Verzeichnis verwendet, indem der Wert Static
für HomeDirectorySource
ausgewählt wird.
Limits aus einer Datei¶
Beispielkonfiguration 3 zeigt ein typisches Beispiel für eine Konfiguration, die die Limits aus einer Datei liest. Es wird angenommen, dass eine Datei wie in Beispieldatei mit Quota-Einträgen als Quelle für diese Limits dient. Die LimitsSource wird auf Datei gesetzt und die LimitsFile-Gruppe wird definiert. Hier werden zwei Pfade zu Dateien angegeben, die die tatsächlichen Limits enthalten. Die Kodierung ist auf UTF-8 gesetzt und der reguläre Ausdruck passt zum Eintrag in der Datei. Die erste Capture-Gruppe des regulären Ausdrucks erfasst den Benutzernamen und die zweite Gruppe erfasst das Limit.
1<?xml version="1.0" encoding="utf-8"?>
2<Configuration
3 version="1"
4 xmlns="http://educateit.ch/software/BlueStone/Configuration/1">
5 <Module name="DirectoryQuota">
6 <Value name="LimitsSource">Group</Value>
7 <List name="GroupLimits">
8 <ListEntry>
9 <Value name="GroupRegExp">SpecialTestGroup</Value>
10 <Value name="Limit">100mb</Value>
11 </ListEntry>
12 <ListEntry>
13 <Value name="GroupRegExp">AdministratorGroup</Value>
14 <Value name="Limit">500mb</Value>
15 </ListEntry>
16 <ListEntry>
17 <Value name="GroupRegExp">.*</Value>
18 <Value name="Limit">20mb</Value>
19 </ListEntry>
20 </List>
21 <Value name="HomeDirectorySource">ActiveDirectory</Value>
22 </Module>
23</Configuration>
1<?xml version="1.0" encoding="UTF-8" ?>
2<Configuration
3 version="1"
4 xmlns="http://educateit.ch/software/BlueStone/Configuration/1">
5 <Module name="DirectoryQuota">
6 <Value name="LimitsSource">ActiveDirectory</Value>
7 <Group name="ActiveDirectoryLimit">
8 <Value name="ValueName">cvLimit</Value>
9 <Value name="Factor">1mb</Value>
10 </Group>
11 <Value name="RequestMode">Automatic</Value>
12 <Value name="HomeDirectorySource">Static</Value>
13 <Value name="HomeDirectoryPath">\\server01\homes\%NAME%</Value>
14 </Module>
15</Configuration>
1<?xml version="1.0" encoding="UTF-8" ?>
2<Configuration
3 version="1" xmlns="http://educateit.ch/software/BlueStone/Configuration/1">
4 <Module name="DirectoryQuota">
5 <Value name="LimitsSource">File</Value>
6 <Group name="LimitsFile">
7 <List name="Paths">
8 <Value>c:\Quotas\quotas1.txt</Value>
9 <Value>c:\Quotas\quotas2.txt</Value>
10 </List>
11 <Value name="Encoding">UTF-8</Value>
12 <Value name="ParseRegExp">corp\\(\w+) \S+ \S+ \S+ \S+ (\d+[kmgKMG])</Value>
13 <Value name="ParseCaptureGroupForName">1</Value>
14 <Value name="ParseCaptureGroupForLimit">2</Value>
15 </Group>
16 <Value name="RequestMode">Automatic</Value>
17 <Value name="HomeDirectorySource">ActiveDirectory</Value>
18 </Module>
19</Configuration>