در مقاله بررسی انواع Clone با مفهوم Instant Clone و کاربرد آن در مجازی سازی دسکتاپ آشنا شدیم؛ در این مقاله می خواهیم نگاه دقیق تری به تکنولوژی و معماری Instant Clone داشته باشیم.
معرفی Instant Clone
تکنولوژی Instant Clone که نام تجاری پروژه Fargo موسوم به VMFork می باشد، اولین بار در vSphere 6 در بازار مجازی سازی معرفی و در Horizon 7 به صورت کاربردی مورد استفاده قرار گرفت. هدف اصلی توسعه دهندگان VMFork ایجاد مکانیزمی برای ساخت ماشین مجازی به صورت بلادرنگ می باشد. در این تکنولوژی علاوه بر محتویات دیسک، محتویات حافظه ماشین مجازی Parent نیز بین ماشین های Child به اشتراک گذاشته می شود. در نتیجه علاوه بر صرفه جوری در مصرف Storage، در میزان حافظه استفاده شده نیز صرفه جویی خواهد شد. از طرفی فرآیند ایجاد ماشین به شکل قابل ملاحظه ای تسریع پیدا خواهد کرد، به نحوی که در کمتر از 2 ثانیه می توان یک ماشین جدید ایجاد کرد.
از دیدگاه حافظه، اشتراک گذاری RAM بین ماشین ها از طریق Transparent Page Sharing (TPS) انجام خواهد شد. همانطور که میدانید TPS به دلایل امنیتی به صورت پیش فرض غیر فعال است اما در زمان استفاده از Instant Clone برای این ماشین ها فعال خواهد شد. از دیدگاه دیسک و Storage همچون Linked Clone از Delta Disk استفاده می شود، با این تفاوت که Linked Clone از Snapshot برای Delta Disk استفاده می کند در حالی که در Instant Clone از Snapshot استفاده نمی شود. عدم وابستگی به Snapshot باعث می شود که در Disk Chain محدود به 30 عدد Delta Disk نباشیم و بتوانیم تا سقف 255 عدد Delta Disk داشته باشیم.
تصویر فوق یک ماشین Parent و Child مرتبط به آن روی یک سرور ESXi را نمایش می دهد. همان طور که مشاهده می کنید علاوه بر Shared Memory و Shared Disk که بین تمام ماشین های Child مشترک است، هر ماشین Child، حافظه و دیسک مختص به خود را نیز خواهد داشت.
کاربردهای Instant Clone
این تکنولوژی می تواند کاربردهای متنوعی داشته باشد از جمله:
VDI
Container Hosts
Big Data
DevTest
Continuous Integration/Continuous Development (CI/CD)
DevOps
اما چرا Instant Clone در نزد مشتریان بیشتر در بحث VDI و مجازی سازی دسکتاپ شناخته شده است؟ دلیل اصلی این موضوع این است که APIهای مربوط به این تکنولوژی با وجود درخواست های مکرر مشتریان، توسط شرکت VMware در دسترس عموم قرار نگرفته بود. با وجود این در این سال ها تلاش بر این بوده است که از طریق انتشار APIهای غیر رسمی یا همان Flings، بازخورد کاربران مورد بررسی قرار گیرد؛ از جمله VMFork for pyVmomi.
تغییرات VMFork در vSphere 6.7
در vSphere 6.7 تغییرات و بهبود های عمده ای در معماری VMFork یا همان Instant Clone ایجاد شده است. در معماری Instance Clone نسخه 1.0 چالش های متعددی وجود داشت؛ از جمله اینکه ماشین های Child به سروری که ماشین Parent روی آن در حال اجرا بود متصل شده بود، در نتیجه قابلیت هایی نظیر HA، DRS و vMotion روی این ماشین ها کار نمی کرد؛ حال در vSphere 6.7 و با معرفی Instant Clone 2.0 این مشکل بر طرف شده است. در معماری جدید بر خلاف نسخه 1.0 دیگر بین Source VM (Parent) و Destination VM (Child) ارتباط تنگاتنگی وجود ندارد؛ اصطلاحاً به صورت Parentless عمل می کند. علاوه بر باز طراحی معماری Instant Clone، در vSphere 6.7، APIهای مربوط به این تکنولوژی به صورت عمومی در اختیار همگان قرار گرفته است؛ هرچند که هنوز در GUI پیاده سازی نشده است.
ماشین مبدا (Parent) در زمان ساخت ماشین های مقصد در دو حالت می تواند باشد:
- Running
- Frozen
در نسخه 1.0 ماشین مبدا تنها می توانست در حالت Freeze باشد، به این معنی که این ماشین در دسترس نبوده و نمی توان از آن برای شرکت در فرآیند Instant Clone جدید و یا سرویس دهی استفاده کرد. اما در نسخه 2.0 شما این قابلیت را خواهید داشت که از یک ماشین روشن و در حال سرویس دهی، Instant Clone تهیه کنید. یکی از مهمترین کاربردهای مدل Running Source VM، DevTest / DevOps و Continuous Integration/Continuous Development (CI/CD) است. به عنوان مثال فرض کنید یک سرویس آنلاین دارید و جهت به روز رسانی و اعمال نسخه جدید در فرآیند تست، به یک ماشین موقت نیازمندیم؛ به دون اینکه سرویس آنلاین دچار اختلال شود.
1. Running Source VM
در این مدل زمانی که اولین Instant Clone ایجاد می شود، ماشین مبدا یک Delta Disk تولید می کند تا اطمینان حاصل کند که Shared Disk تغییر نخواهد کرد و ماشین های Target دچار مشکل نمی شوند. زمانی که سومین و چهارمین ماشین ایجاد می شوند، نیاز به Delta Diskهای جدیدی خواهیم داشت. واضح است که تکرار این روش، ماشین Source را با مشکلاتی مواجه خواهد کرد. در نتیجه این روش برای ساخت تعداد زیادی ماشین مناسب نخواهد بود.
2. Frozen
مدل Frozen در موارد زیر کاربرد دارد:
- Desktop Virtualization (VDI)
- Container Hosts
- Hadoop Workers
در این مدل Instant Clone در واقع از یک ماشین Freeze شده ساخته خواهد شد. فرآیند فریز کردن از داخل Gest OS و به واسطه VMware Tools (ابزار vmware-rpctool و دستور “instantclone.freeze”) انجام خواهد شد.
در چنین شرایط با توجه به اینکه Source VM در حالت Freeze بوده و دیگر Running نمی باشد، دیسک اصلی در وضعیت Read only است و فقط لازم است که Delta Disk برای ماشین مقصد (Destination VM) ساخته شود.
ماشین Freeze شده یک ماشین روشن خواهد بود اما دیگر هیچ Instruction ای را اجرا نخواهد کرد و این موضوع تا زمانی که ماشین مبدا ریست و یا خاموش شود ادامه خواهد داشت که باعث می شود ماشین از حالت Frozen خارج شود. با این حال شما قادر خواهید بود بارها و بارها ماشین مبدا را در وضعیت Frozen قرار دهید تا Instant Clone جدیدی با شرایط و تغییرات اعمال شده بسازید که این حالت برای توسعه نرم افزار و با هدف Debugging ابزار قدرتمندی خواهد بود.