راه اندازی ماشین های مجازی مستقل به کمک استفاده از تکنیک Differencing در Hyper-v ( مناسب برای استفاده در Zero Client ها )

12 1,025
مدت زمان برای مطالعه این مطلب : ۱۵ دقیقه                                                                                 سطح : پیشرفته
پیش نیاز : آشنایی با ساختار هایپر وی 

سلام به دوستان عزیز و همراهان سایت Theways ، با یک آموزش کوتاه و کاربردی دیگر در خدمت شما هستیم ، امروزه استفاده از ماشین مجازی برای ارائه سرویس به کاربران در محیط های کاری بسیار متداول و پر استفاده شده است  . حتما با ساختار های VDI و سرویس هایی که توسط آن به کاربران یک مجموعه ماشین های مجازی و یا دسکتاپ های مجازی ( خواهش میکنم دسکتاپ را پاس بداریم ، دکستاپ وجود خارجی ندارد 🙂  )  ارائه میشود آشنا هستید . در واقع با توجه به نیاز کاربران و با در نظر گرفتن قیمت دلار ! استفاده از تین و یا زیرو کلاینت ها روز به روز در حال گسترش بوده و خب راه اندازی سرویس های مرتبط برای ارائه دسکتاپ مجازی و ماشین مجازی به کاربران یکی از کارهای اصلی در ارائه سرویس به این نوع کلاینت ها خواهد بود . ما در این آموزش می خواهیم شما را با ساختار ایجاد ماشین مجازی مستقل ( نه VDI ! ) توسط سرویس Hyper-v و برای کاربران یک مجموعه آشنا کنیم و از تکنیک Differencing برای ساخت هارد دیسک ماشین های مجازی کاربران استفاده کنیم . در این روش ما یک سیستم عامل مولد یا Parent خواهیم ساخت و تمامی نرم افزار های مورد نظر را بر روی آن نصب میکنیم و سپس از این ماشین مولد هر تعداد ماشین مجازی Child که بخواهیم برای ارائه سرویس به کاربران استفاده خواهیم کرد . بسیار خب حسن این کار چیست ؟

اولا شما نیاز به نصب مجدد و چندین باره سیستم عامل های مجزا از هم برای کاربران خود نخواهید داشت ، دوما نیاز به نصب چندین باره نرم افزار های مشابه بر روی سیستم مجازی کاربران نخواهید داشت ، سوما حجم هر یک از ماشین های مجازی که از روی ماشین مجازی مولد ساخته شده اند بسیار بسیار کم حجم تر از ماشین اصلی بوده و صرفه جویی قابل توجهی را در حجم هارد دیسک شما خواهد داشت بو. مسلما استفاده از تکنیک VDI نیز یکی از اصلی ترین راه حل های ما خواهد بود که در این آموزش مورد نظر ما نمی باشد و هدف ما ساختن ماشین های مجازی مجزا و با ماهیت مستقل از هم خواهد بود .

در واقع هدف ساختن ماشین مجازی برای کلاینت هایی هست از روی تین کلاینت و یا زیرو کلاینت خود به سرور اصلی متصل شده و ماشین مجازی اختصاصی خود را با تمامی نرم افزار ها و با محیط سیستم عامل کاملا مجزا و اختصاصی اجرا خواهند کرد . برای مثال فرض کنید از روی Raspberry pi یک کاربر به ماشین مجازی اختصاصی آن کاربر بر روی سرویس Hyper-v وصل شده و سرویس های متداول را در اختیار آن شخص قرار می دهید ، اکنون این امکان را برای تعداد زیادی از کاربران در نظر بگیرید و از راه حل این آموزش استفاده کافی را ببرید گو ، قطعا برای نیل به این هدف راهکارهای مختلفی وجود دارد اما پیشنهاد ما استفاده از دیسک Differencing و تکنیک Sysprep برای ماشین های مجازی مورد نظر خواهد بود . انشالله در یک آموزش مفصل راه اندازی دسکتاپ مجازی یا همان VDI را نیزبر روی سرویس hyper-v  به طور مفصل و با جزئیات خدمت شما همراهان عزیز ارائه خواهیم کرد .

بسیار خوب سناریو بدین صورت خواهد بود در ابتدا یک ماشین مجازی مثلا یک کلاینت ویندوزی ( دیگه دوستان لینوکسی ما ویندوزی ها رو به بزرگی خودشون تحمل کنند 🙂 ) مثل ویندوز ۱۰ را بر روی سرویس هایپروی نصب کنید و بعد از بروز رسانی ویندوز تمامی نرم افزار های مورد نظر را بر روی آن نصب و پیاده سازی کنید . سپس به کمک قابلیت Sysprep ویندوز مورد نظر را خالی از درایور های سخت افزاری کرده و SID Number ها را نیزآماده از نو ساخته شدن میکنیم . حتما ماشین مجازی را در انتها در حالت Shutdown قرار دهید

دقت کنید که تنظیمات Sysprep  را بر روی OOBE  گذاشته و تیک Generalize را نیز بزنید . سپس منتظر باشید تا ماشین مجازی شما خاموش شود شی ( بسته به سخت افزار شما این زمان متغیر بوده از چند ثانیه تا چند دقیقه مثلا ۷ دقیقه زمانبر خواهد بود ) اکنون به مسیر هارد دیسک مجازی ویرچوال ماشین خود رفته و فایل مورد نظر را به صورت Readonly در آورید . با این کار مانع از آسیب دیدن به ماشین اصلی که قرار است به عنوان ماشین مولد برای ماشین های مجازی Differencing نقش بازی کند می شویم .

اکنون ماشین مولد یا اصلی یا همان Parent ما آماده شده و میتوانیم ماشین های فرزند یا همان Child ها را که قرار است به عنوان ماشین مجازی مستقل و مجزا از هم به زیروکلاینت های خود ارائه دهیم می سازیم . برای این کار از منوی اصلی سرویس هایپر وی مراحل ساختن دیسک مجازی را دنبال خواهیم کرد و گزینه Differencing را انتخاب و هارد دیسک ماشین مولد را به عنوان هارد دیسک اصلی و Parent در نظر خواهیم گرفت :

در این مرحله مشخص کردن محل ذخیره دیسک Differencing را خواهیم داشت و در ادامه آدرس دیسک مولد که قرار است تمامی نرم افزارها و فایل های سورس سیستم عامل را از آن برای ماشین های مجازی کاربران (Child ) معرفی کنیم خواهیم دید ، دقت کنید که با دسته بندی کردن فولدر ها و طراحی اصولی آنها از سردرگمی هایی که با زیاد شدن ماشین های مجازی کاربران با آن روبرو خواهید شد اجتناب خواهید کرد . پیشنهاد ما ساختن یک فولدر روت برای ماشین مولد و ساختن یک فولدر روت برای ماشین های Child ها می باشد و سپس ماشین های کاربران را از یکدیگر به کمک فولدر های مستقل جدا کنید

بسیار خوب ! اکنون شما یک دیسک Differencing ساخته اید که در سناریو ما به عنوان هارد دیسک اصلی برای ساختن ماشین های مجازی کاربران استفاده خواهد شد در واقع در هنگام ساختن ماشین مجازی تمامی مراحل را به صورت پیشفرض جلو رفته و هنگام ساختن دیسک اصلی آدرس دیسک Differencing که ساخته شده را ارائه کنید و ماشین مجازی را روشن کنید . اکنون با یک ماشین مجازی جدید روبرو هستید که مانند ماشین مجازی مولد دارای سیستم عامل مستقل و همراه با نرم افزارهای نصب شده برروی آن خواهد بود و شما صرفا کافیست که نام ماشین مجازی و نام کاربر مورد نظر را بر روی آن ساخته و تنظیمات ریموت را برای اتصال زیرو کلاینت خود بر روی  آن انجام دهید .

در انتها در نظر داشته باشید که اولا حتما از ماشین مجازی مولد خود یک بک آپ واکسپورت داشته باشید تا در موارد اضطراری بتوانید ماشین مولد را برگردانید (لطفا دقت کنید !  قطعا تمامی ماشین های Child در صورت قطع ارتباط با ماشین مولد Parent از دسترس خارج خواهند شد و این یک ریسک بسیار بزرگ برای کل سناریو خواهد بود ) و همینطور از روشن کردن آن جدا خودداری کنید چون در این صورت SID های جدید برای آن تولید شده و شما مجددا نیاز به Sysprep کردن آن خواهید داشت و حتی ممکن است در صورت عدم ارتباط Child disk  ها با دیسک مولد نیاز به  Inspect کردن هارد دیسک های Child با دیسک مولد داشته باشید که این عملیات قطعا زمانبر ، کمی تا قسمتی سخت و حتی با ارور هایی همراه خواهد بود

در انتها حجم ماشین مجازی کاربرانی را که بدین صورت ساخته شده با ماشین مجازی مولد در نظر بگیرید قطعا شگفت زده خواهید شد  😀  ویندوزی با تمامی نرم افزارها ، فقط و فقط به حجم حدود ۵ گیگا بایت !

امیدوارم از این مطلب استفاده کافی را برده و در محیط کاری خود از آن استفاده کنید و تجربیات خود را با ما به اشتراک بگذارید

نویسنده:میلاد اسحاقی

برای تهیه این مطالب زمان صرف شده است ، با رعایت حق نویسنده و منبع به گسترش فرهنگ کپی رایت کمک کنیم

 

 

12 نظرات
  1. فرهاد خانلری می گوید

    سلام میلاد جان ، بسیار عالی .
    ممنونم از وقتی که گذاشتی.
    گاهی اوقات هم وقتی توسط Import و Export خطا دیدیم میتونیم از Differencing استفاده کنیم، به این صورت که یک Vm به عنوان Root وجود داشته و Child هایی که وابسته به آن میباشند توانایی نصب و راه اندازی مجدد بر روی hyper را دارند. شبیه Clone در وی ام ویر میمونه فقط در هایپر vhd,vhdx داریم در vmware هم vmdk

  2. میلاد اسحاقی می گوید

    مرسی فرهاد جان که خوندی و نظر دادی ، فقط در مورد راه حلی که گفتی قطعا شدنی هست فقط باید این نکته رو خیلی مراقب باشیم که اگر فایل Parent را به صورت Read only و Sysprep تبدیل نکنیم و روی ویرچوال های child تغیری مثل ریجوین کردن یا تغییر نام دادن انجام بدیم اونوقت ماشین Parent قطعا دچار اختلال میشه و ارتباطاتش توی دومین نیاز به ریپیر داره . مرسی از وقتی که گذاشتی و توضیحات عالیت

  3. aRa می گوید

    سلام و درود
    ممنون از مطلب خوبتون
    ایا راهی هست که این Child ها رو مستقل از پرنت کنیم بعدا
    چون بعد با اکسپورت و ایمپورت کردن وی ام بازم بصورت پرنت چایلد هست داخل پوشه اون وی ام اکسپورت شده
    ولی با ویندوز بکاپ گرفتن از داخل خود وی ام میشه کامل جداش کرد
    حالا راه حل های دیگه ای هست راهنمایی کنید لطفا
    و اینکه مشتقانه منظتر اموزش vdi برای هایپر وی هستیم
    بازم ممنون از مطالبتون

    1. محمد بهزادی می گوید

      سلام
      به نظرم راه دیگش میتونه این باشه که شما از parent یک Export بگیری بعد Parent ماشین Child رو عوض کنی به ماشنی که از parent خروجی گرفتی و با اون Merge اش کنی
      علاوه بر Backup میتونه این راه باشه

      1. میلاد اسحاقی می گوید

        به به مهندس بهزادی عزیز ، مرسی از توضیحاتت قطعا این موردی که گفتی میشه یعنی میشه اکسپورت گرفت بعد چایلد رو با اون پرنت Merge کرد ، فقط اینکه روی کاغذ برای این سناریو مشکلی نیست ! من خودم انجامش ندادم ! در عمل باید تست بشه ببینیم مشکلی نباشه ، خودت تست گرفتی ؟

        1. محمد بهزادی می گوید

          مخلص شماییم مهندس جان 😉

      2. aRa می گوید

        سلام ممون از پاسختون
        با merge کردن کردن اوکی میشه ولی قبلش باید تمام چک پوینت ها رو حذف کنیم که چک پوینت ها به vhdx بیان merge بشن بعدش هم اکسپورت بگیریم و بیایم چایلد رو به پرنت merge کینم
        اما اگه این ماشین جدید بسازیم لایسنس نرم افزارها میره مثلا لایسنس ویندوز

        1. محمد بهزادی می گوید

          سلام، خواهش میکنم.
          خوب ببینید وقتی موقعی که ماشین checkpoint داره اصلا هارد دیسک اش توی Hyper-v manager به صورت avhdx هست که یعنی checkpoint، این یعنی اینکه نمیشه هارد دیسک parent رو با avhdx ای که روی ماشین child هست merge کنید ،چون چندتا واسطه وجود خواهد داشت، اولی خود checkpoint های دیگه که subtree هستند از ریشه (یعنی اولین checkpoint)، که اینا باید همش مرج بشه با ماشین خودش که با پاک کردن این اتفاق میوفته.

    2. میلاد اسحاقی می گوید

      سلام و ممنون از وقتی که گذاشتین و سوالی که پرسیدین
      خب ببینید یه مقداری درمورد سوالتون ابهام دارم ولی اینکه آیا این Child ها بعدا میشه مستقل از پرنت اجرا کرد جوابش خیر هست ! یعنی به صورت مستقل این امکان نیست ( یا من بلد نیستم 🙂 ) ولی یه نکته در مورد بک آپ بهتون بگم که خیلی مهمه و میخواستم توی یک آموزش مفصل در مورد انواع روش های بک آپ گیری از Hyper-v توضیح بدیم ! ببینید شما تا وقتی ماشین های Child در حال اجرا هستند نمیتونید از پرنت بک آپ بگیرید ! نه با WInbackup ، نه با Veeam . پس قطعا یکی از موارد مهم توی سناریو داستان بک آپ هست که باید براش سولوشن درست و حسابی داشت ، البته که در حین اجرا میتونید از ساختار Copy Job یا Copy backup توی Veeam استفاده کنید یا حتی اکسپورت رو اسکریپ کنید با Task schedule زمانبندیش کنید برای بک آپ ولی خب کلا مکانیم بک آپ این سناریو خیلی مهمه
      این جملتونو اصلا نفهمیدم یعنی چی ؟؟ “ولی با ویندوز بکاپ گرفتن از داخل خود وی ام میشه کامل جداش کرد”
      بله من خودم هم کلی ذوق دارم که VDI بنویسم ، راستشو بخواید متاسفاته توی ایران در مورد هایپروی اکثرا دانش و برداشت اصولی وجود نداره ! بعضی وقت ها مقایسه هایی بین ESXi و Hyper-v میبینیم که فقط از روی تعصب هست بدون منطق ! هدفم این هست که بتونیم این سرویس رو خوب یاد بگیریم و به جاش خوب استفاده کنیم . قطعا توی فوق العاده بودن ESXi و شماره بودن توی دنیا شکی نیست ولی قابلیت های بی نظیری توی هایپر وی هم هست که خیلی از دوستان از اون مطلع نیستن هنوز توی هایپروی ۲۰۰۸ سیر میکنن !!! خلاصه اینطوریاست 🙂

      1. aRa می گوید

        سلام مهندس
        ممنون از وقتی که گذاشتید و پاسخ دادید
        منظور از ویندوز بکاپ این بود که بیایم از خود ویندوز با Windows backup بکاپ بگیریم و روی وی ام دیگه اون بکاپ ریستور کنیم
        بعد ریستور کردن دیگه بصورت چایلد نیست و مستقل هست

        منتظر این اموزش فوق العاده شما هستم ” روش های بک آپ گیری از Hyper-v”

        بازم ممنون از شما

  4. محمدمهدی دهقان می گوید

    خیلی خیلی عالی مهندس
    مثل همیشه عالی و کاربردی و البته دقیق با بیان ساده…
    مرسی از وقتی که گذاشتین.

    1. میلاد اسحاقی می گوید

      مرسی مهندس عزیز که وقت گذاشتی و خوندی لطف داری

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.