یکی از مواردی که در میان کارشناسان شبکه مورد بحث بوده و هست مجازی سازی سرورهای اکتیودایرکتوری Domian Controllers ها در یک شبکه می باشد. متاسفانه بنا به جزئیات و معماری که در پشت پرده اکتیودایرکتوری وجود دارد این امر مشکلاتی را نیز به دنبال داشته است که بایستی به آنها دقت بیشتری داشت. خوشبختانه ویندوز سرور ۲۰۱۲ در بحث مجازی سازی دومین کنترلرها بهبودها و قابلیت های جدیدی را ارائه نموده است که باعث رفع مشکلات و پشتیبانی بهتر محیط های دایرکتوری سرویس شده است
مجازی سازی دومین کنترولر ها
در مورد تکثیر اطلاعات بین DC ها در یک دامنه آگاه هستید. عملیات Replication از یک عدد صعودی به نام USN با Update Sequence Number برای تعیین تراکنش های روی هر DC استفاده می کند. هر نمونه از Database های DC دارای یک ID به نام InvocationID است.بنابراین InvocationID برای هر DC و USN یک معرف یکتا برای هر تراکنش نوشتن (Write) روی هر دومین کنترولر خواهد بود. معمولا در مورد دامین کنترلرها در زمان بازیابی و restore به تاریخ های گذشته مشکلات عمده ای را در مورد USN شاهد خواهیم بود که یک بازیابی ناگهانی و بدون اطلاع ممکن است باعث بازیابی USN های تکراری و قدیمی شود و این خود باعث مشکلاتی در زمان انجام تراکنش ها باشد. این باعث می شود که سایر دومین کنترلرها تصور نمایند که قبلا آپدیت ها و تغییرات را از این سرور دریافت کرده اند!
با توجه به تصویر زیر می توانید رفتار DC1, DC2 را مشاهده کنید و تکثیر اطلاعات در vDC1 بعد از failure نیز کاملا هویدا می باشد.پس یکی از مشکلات قطعی در بحث replication اطلاعات دومین کنترلرها مستقیما به USN Rollback مربوط می شود. اما خوشبختانه در Windows Server 2012 یک مولفه به نام VM-Generation به منظور حفاظت از محیط Active Directory به کار گرفته شده است که در صورت Rollback شدن VM با استفاده از Snapshot عملیاتی انجام می شود تا مشکل قبلی رخ ندهد. این قابلیت کاملا مستقل از سیستم مجازی سازی است و در صورتی که سیستم مجازی سازی از VM-GenerationID پشتیبانی کند، از این قابلیت پشتیبانی به عمل می آید.
لازم به توضیح است که علاوه بر USN ها ، دومین کنترلرها از شناسه بانک اطلاعاتی دایرکتوری که روی سرورها نگهداری می شود استفاده می نمایند. این شناسه روی هر دومین کنترلر در صفت invocationID که یکی از صفات اشیاء ذخیره شده در NTDS می باشد نگهداری می شود. نتیجتا invocationID بصورت کارا با مجموعه ای از به روزرسانی های روی یک دومین کنترلر با یک ورژن خاص اکتیودایرکتوری مرتبط می باشد. با دستور repadmin /showrepl می توانید آنرا بررسی نمایید..
Safeguards
هنگامی که اکتیودایرکتوری را نصب می کنید، سرویس بصورت خودکار مقدار VM-GenerationID را در صفت msDS-GenerationID شیء DC در بانک اطلاعاتی دایرکتوری سرویس ذخیره می نماید. البته بایستی در نظر داشت که خود VM-GenerationID توسط یک درایور روی ماشین مجازی ردیابی می شود.حال فرض کنید یک snapshot از یک ماشین گرفته اید و قصد دارید آنرا بازیابی نمایید. در این حال مقدار msDS-GenerationID با VM-GenerationID مقایسه می شود. اگر مقادیر صفت ها یکسان نباشد ، مقدار invocationID مجددا پیکربندی شده و بخش RID pool نیز Discard می شود. درنتیجه از استفاده USN های تکراری جلوگیری می شود. حال اگر مقادیر برابر باشد ، تراکنش ها به صورت نرمال دنبال می شود. باید خاطر نشان کرد که پالیسی ها و و اسکریپت های شما و مقادیر sysvol نیز به صورت non-authoritative بین دومین کنترلرهایتان انتقال و تکثیر پیدا می کنند. البته باید درنظر داشت که این قابلیت بر روی ویندوز سرور ۲۰۱۲ پشتیبانی می شود.
شکل زیر نحوه عملکرد safegaurd را در محیط مجازی شما نمایش می دهد
هشدار: با وجود این قابلیت همچنان مایکروسافت پیشنهاد می کند از سایرمکانیزمهای بکاپ گیری همچون Windows Server Backup و یا راهکارهای VSS-Writer جهت تهیه پشتیبان از دومین کنترلر استفاده نمایید.