Active Directory Data Storage

پایگاه داده (Database) اکتیو دایرکتوری یک فایل به نام ntds.dit است که به صورت پیش فرض در %systemroot%\ntds قرار دارد. این folder همچنین شامل فایل های زیر است:

– Edb.chk: این فایل یک Checkpoint است که در واقع مشخص می کند کدام تراکنش ها (Transaction) در log file روی Active Directory Database نوشته شده است.

– Edb.log: این فایل، یک Log File برای Transaction اخیر است و اندازه ثابت ۱۰MB را دارد.

– Edbxxxxx.log: پس از آنکه Active Directory برای مدتی اجرا گردد، یک یا چند نمونه از این فایل ها ایجاد خواهد شد. xxxxxx یک عدد هگزادسیمال است. زمانی که Current Transaction Log File، پر شود، به چنین فرمتی تبدیل نام خواهد شد و فایل جدید Edb.log ایجاد خواهد شد.

– Edbtemp.log: یک Log File موقت برای Edb.log است زمانی که پر شود. در این صورت، Edbtemp.log ایجاد می شود تا تمام رویداد ها در آن ثبت شود و سپس Edb.log به فرمت پیشین تغییر نام پیدا می کند و Edbtemp.log به Edb.log ویرایش می شود.

– Edbres00001.jrs و edbres00002.jrs: این دو فایل، دو Log File به صورت رزرو شده اند برای شرایطی که ظرفیت هارد دیسک پر شود. اگر فایل Edb.log پر شود و اکتیو دایرکتوری نتواند به دلیل پر بودن فضای هارد دیسک، فایل جدید بسازد، سرور تمام تراکنش ها اخیر را در این دو فایل flush می کند و سپس اکتیو دایرکتوری را shut down می کند. هر کدام از این فایل ها ۱۰MB اند.

– Temp.edb: این فایل موقت برای Database maintanance و همچنین تراکنش هایی که کار اند استفاده می شود.

Untitled

هر ویرایشی که روی Database اعمال می شود یک Transaction گفته می شود. یک Transaction می تواند شامل چندین گام باشد. به عنوان مثال زمانی که یک شیئ کاربر از یک OU به OU دیگری منتقل می شود، تراکنش شامل مرحله ساخت شیئ جدید و حذف شیئ قبلی می شود. بدیهی است برای آنکه Transaction کامل انجام شود باید هر دو مرحله به صورت کامل انجام گردد. چنانچه یک مرحله موفقیت آمیز نباشد باید کل تراکنش Roll Back شود. (به عقب کشیده شود – فعالیت های انجام شده با حالت اول بازگردانده شود. زمانی که تراکنش کامل شود، در اصطلاح به آن Committed گفته می شود. زمانی که تغییری روی Active Directory اعمال می شود ابتدا در یک Transaction Log File نوشته می شود. سپس اگر شیئ (Object) که مورد تغییر واقع می شود، روی حافظه موجود نباشد، دامین کنترلر Database Page ای که شامل آن است را روی حافظه Load (بارگذاری) می کند. تغییرات روی حافظه اعمال می گردند. دامین کنترلر تا زمانی که مجبور نباشد آن Database Page را روی حافظه نگه می دارد. زمانی حافظه در دسترس کاهش پیدا کند، دامین کنترلر Database Page ها را Flush می کند. در زمانی که بار سرور کم باشد، دامین کنترلر تغییرات را روی Database می نویسد. در زمانی که سرور shutdown می شود نیز، تمام تغییرات روی database نوشته می شود.

استفاده از Transaction Log ها سبب می شود که عملکرد (Performance) سیستم بهبود یابد. از سوی دیگر استفاده از آن ها سبب می شود تا در صورت بروز برخی خطاها قابلیت ترمیم (Recoverability) برای سیستم ایجاد شود. به عنوان مثال، تغییراتی روی Transaction Log ها اعمال شده است و روی database page که در حافظه load می شود نیز اعمال شده است. در این لحظه به صورت ناگهانی برق قطع می شود. زمانی که سرور مجددا راه اندازی می شود، Transaction Log ها را برای تغییراتی که Committed نشده اند بررسی می کند. فایل Checkpoint سبب می شود تعیین آنکه چه تغییراتی اعمال نشده اند به آسانی صورت گیرد. به همین خاطر است که نگه داری Log File ها و Database در دو هارد دیسک فیزیکی متمایز توصیه می گردد و این امر می تواند Performance را افزایش دهد.

Active Directory از یک سیستم Circular Loging استفاده می کند و این تنظیم غیر قابل تغییر است. با استفاده از این روش تنها Log File هایی که روی database اعمال نشده اند نگه داری می شود. زمانی که اطلاعات موجود در Log File اعمال گردد، آن ها حذف می شوند.