Active Directory に関わる最大値とスケーラビリティ
みなさん、こんにちは、Windows プラットフォームサポートの高田です。
今回は、Active Directory における制限事項についてまとめさせていただきます。その他に存在する制限事項については、文末の参考文献もご覧いただければと思います。
オブジェクトが保持できるサイズの最大値
Active Directory には、内部的にオブジェクトが保持できるサイズの最大値として 8KB の上限値があります。通常、この上限値にの影響を受けることはございませんが、non-linked multi-value 属性を利用している場合、制限に抵触する場合があります。
まず、Active Directory のオブジェクトにどのように情報が入るかを簡単に説明しますと、各属性にはデータが直接入るわけではなく、各属性の実データに関連づけるデータ (ポインター) が入ります。オブジェクトにデータが格納されるたびに、各属性の実データに関連づくデータがレコードの中に格納されサイズを消費するイメージです。non-linked multi-value 属性をご利用の場合、実データが 1 ライン増える度に実データに関連づけるデータがレコードの中に格納されサイズを消費することになります。
しかし、これらの情報が合計して 8KB を超過するとそれ以上情報を追加できなくなります。この結果として、non-linked multi-value 属性に値を追加した際にエラーが生じます。また、仮に non-linked multi-value 属性でなくても、今までデータが未設定だった属性にデータを入れるような処理も失敗します。
non-linked multi-value 属性の場合、おおむね 8KB は 1200 件程度に相当します。このため、他の属性に割り当てる情報量も考慮すると、現実的な上限として、1200 件を超えないよう運用ください。
なお、Active Directory レコードには複製によって更新される属性の他に、内部的に保持・管理するデータが含まれるため、同一オブジェクトであっても各ドメインコントローラで保持されるレコードサイズは全ドメインコントローラで異なります。ただし、一般的には最大 1200 行程度までは追加する事ができるとご理解ください。
この動作については、以下の技術情報が参考になりますので、こちらをご参照いただければと思います。
How the Data Store Works
<https://technet.microsoft.com/en-us/library/cc772829(v=ws.10).aspx>
The practical limit of 800 nonlinked values per object is increased in Windows Server 2003 and later. When the forest has a functional level of Windows Server 2003 or higher, for a theoretical record that has only one attribute with the minimum of overhead, the maximum number of multivalues possible in one record is computed at 3937. Using similar estimates for overhead, a practical limit for nonlinked multivalues in one record is approximately 1200.
LDAP の DirSync コントロール指定時に取得できる multi-value 属性の最大数
Active Directory ディレクトリ同期 (DirSync) コントロール検索を実行することで、Active Directory の変更をポーリングすることが可能です。これにより、ある時点の Active Directory の状態を取得しておき、その後の任意の時点で、以降に実施された変更内容との差分を取得することができます。差分情報としては、例えば、オブジェクトの追加や属性の変更などが挙げられます。
このように、ディレクトリ同期 (DirSync) コントロールを使用することで、差分が取得できますが、multi-value 属性については 5000 件が最大数となります。つまり、5000 以上のメンバーを持つグループに対して、ディレクトリ同期 (DirSync) コントロール検索を実施した場合でも、5000 件の結果が得られます (グループに追加されているオブジェクトの作成順に 5000 件目までが返されます)。これは、ディレクトリ同期 (DirSync) コントロールの動作によるものです。
なお、Active Directory のグループに 5000 件以上のメンバーを含めること自体は、Link Value Replication (LVR) と呼ばれる仕組みにより実現可能となっています。ただし、ディレクトリ同期 (DirSync) コントロールとの組み合わせにおいては、5000 件で一旦の制約があるものとご理解ください。
Active Directory に関わる最大値という観点でまとめられた情報としましては、次の情報 (英語) があります。今回の情報はそれを補足するものですが、それぞれ今後の運用において参考にしていただければと思います。
Active Directory Maximum Limits - Scalability
<https://technet.microsoft.com/en-us/library/cc756101(WS.10).aspx>