Logo faq-o-matic.net
Logo faq-o-matic.net

Der RID-Pool und seine Bedeutung

von veröffentlicht am10. September 2012, 06:02 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: Allgemein   Translate with Google Translate Translate EN   Die angezeigte Seite drucken

Ein paar Notizen zu RIDs und zu den Problemen, wenn sie ausgehen …

Objekte im AD erhalten einen eindeutigen SID (Security Identifier), und der sieht etwas kryptisch aus:

S-1-5-21-3872706870-2942580982-876211802-6705

Eine Beschreibung der SIDs findet sich zum Beispiel im Microsoft-Knowledgebase-Artikel 243330. Für diesen Blogartikel interessant ist die Zahl hinter dem letzten „-„, im obigen Beispiel also die „6705“. Der Teil davor ist für alle Konten in der Domäne identisch, den hinteren letzten Teil nennt man auch „Relative ID“ oder kurz RID.

Diese RIDs sind wie gesagt eindeutig in der Domäne. Damit nicht bei jeder Objekterzeugung ein zentraler Server nach einer neuen ID gefragt werden muss, gibt es das Prinzip der „RID Pools“, d.h. jeder Domain Controller fordert von einem bestimmten DC einen Pool von IDs an, standardmäßig 500. Diese zentrale Vergabestelle ist der DC, der die Rolle (FSMO) des „Rid Owners“ besitzt. Der DC, auf dem das Objekt angelegt wird, bedient sich einfach aus seinem Pool an RIDs, und ist der Pool leer, wird ein neuer Pool angefordert und es geht weiter.

In einer Domäne stehen ca. 1 Milliarde IDs zur Verfügung, mit Windows Server 2012 hat sich das nochmal verdoppelt (die Zahl von „1 Billion“ stammt übrigens aus amerikanischen Texten, da dort die Milliarde als „billion“ bezeichnet wird). Trotzdem kann es vorkommen, dass die RIDs zur Neige gehen, auch ohne dass man so viele Objekte anlegt. Und ist der Pool erst erschöpft, dann ist das AD auch am Ende! Auch eine Migration ist dann unmöglich, da man dazu einen Trust bräuchte, und dafür benötigt man wiederum einen ID, aber da gibt es ja keine mehr. Also Ende! Und: Nein, es hilft nicht, Objekte zu löschen, RIDs werden nicht recycelt. Und nochmal: Nein, es erfolgt auch keine Warnung, wenn die RIDs zur Neige gehen. Wie bekomm ich jetzt aber raus, wieviele RIDs ich noch habe, also wieviel Zeit mir noch bleibt? Da gibt es gleich mehrere Wege:

1) das gute alte „dcdiag“:

dcdiag /test:ridmanager /v

liefert (neben viel Geschwätz) auch eine Zeile in der Art:

* Available RID Pool for the Domain is 9603 to 1073741823

Das wäre jetzt der Moment, sich beruhigt zurückzulehnen, da dürften noch einige Jahre Zeit sein, schließlich sind garde mal 9600 von mehr als 1 Milliarde IDs verbraucht worden.

2) Abfrage per LDP:

  • LDP starten
  • mit einem DC verbinden (auch als normaler User möglich)
  • Tree View („Struktur“ oder Strg-T)
  • navigieren zu CN=System,DC=domain,…
  • Darunter findet sich der „RID Manager$“, und das Objekt hat als Attribut „rIDAvailablePool“
  • Die Zahl markieren, kopieren
  • Unter „Dienstprogramme“ gibt es „Konvertierung großer Ganzzahlen“ (Large Integer Converter im Utilities Menü)
  • Die markierte Zahl reinkopieren und auf Ausführen klicken
  • Man bekommt als Ergebnis einen hohen und einen nidrigen Bereich.
  • Der hohe Bereich entspricht der maximalen Anzahl an RIDs
  • der niedrige Bereich entspricht den vergebenen RIDs
  • Hoch minus niedrig gleich verbleibende RIDs

3) Mit dem grandiosen Tool „adfind“ von Joe Richards kann man noch zusätzlich ganz einfach die einzelnen RID-Pools der DCs auslesen:
adfind -dcs -f name="rid set" ridallocationpool ridpreviousallocationpool ridnextrid -samdc
liefert:
Using server: test2-dc1.test2.loc:389
Directory: Windows Server 2003
Base DN: OU=Domain Controllers,DC=test2,DC=loc

dn:CN=RID Set,CN=TEST2-DC1,OU=Domain Controllers,DC=test2,DC=loc
>rIDAllocationPool: 6884832576592 [Lower=1104;Upper=1603]
>rIDPreviousAllocationPool: 6884832576592 [Lower=1104;Upper=1603]
>rIDNextRID: 1106

dn:CN=RID Set,CN=TEST2-DC2,OU=Domain Controllers,DC=test2,DC=loc
>rIDAllocationPool: 9032316225092 [Lower=1604;Upper=2103]
>rIDPreviousAllocationPool: 0 [Lower=0;Upper=0]
>rIDNextRID: 0

dn:CN=RID Set,CN=TEST2-DC3,OU=Domain Controllers,DC=test2,DC=loc
>rIDAllocationPool: 11179799873592 [Lower=2104;Upper=2603]
>rIDPreviousAllocationPool: 0 [Lower=0;Upper=0]
>rIDNextRID: 0

3 Objects returned

(Dank an Joe für den Beitrag, Download adfind unter: http://www.joeware.net/freetools/tools/adfind/index.htm)

Zum Schluss noch die gute Nachricht: Mit Windows Server 2012 wurde nicht nur die Anzahl der verfügbaren RIDs verdoppelt, sondern auch eine Warnschwelle eingeführt. Bei 90% verbrauchten IDs erfolgt die erste Warnung (Ereignistyp Information“, eine weitere Warnung, sobald von den verbliebenen 10% IDs weitere 90% verbraucht wurden usw. Die Meldungen werden also zum Ende hin immer häufiger. Weiterhin verweigert der RID Manager die Herausgabe weiterer SIDs bei Erreichen der 90%-Marke. Der Domain Admin kann dieses Flag (msDS-RIDPoolAllocationEnabled) wieder zurücksetzen und sollte dann aber schleunigst seine Migration planen…

© 2005-2023 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!