مجازی سازی در Microsoft Hyper-v
آشنایی با مجازی سازی در Microsoft Hyper-v
در این مقاله قصد داریم مجازی سازی در Microsoft Hyper-v را بررسی کنیم.
تعریفی که IBM از Virtualization دارد به این ترتیب است:
“استقلال OS از سخت افزار”
Virtualization این اجازه را به ما میدهد که از یک Platform سخت افزاری، همزمان چندین OS بتوانند استفاده کنند و این استقلال سیستم عامل از سخت افزار را در برمیگیرد. یعنی اینکه مستقلاً سیستم عامل ها میتوانند روی یک پلتفرم سخت افزاری بدون اینکه Overlap روی هم به وجود آورند کار کنند. در حقیقت کاری که Virtualization میکند به این صورت است که سخت افزار را به صورت اشتراکی مدیریت میکند تا چندین سیستم عامل بتوانند از آن استفاده کنند. اینکاری که Virtualization انجام میدهد مزایای بیشماری را برای ما به ارمغان می آورد. برای مثال؛ در گذشته شما برای هرکدام از سرویس ها مجبور بودید یک سرور سخت افزاری داشته باشید.مثالا یک سرور مخصوص AD ، یک سرور مخصوص DHCP و.. . برای هر سرور سخت افزاری باید هزینه کنیم . ضمنا این سرور ها جا برای نگهداری ، سیستم Cooling ، انواع کابل ها را میخواهند، UPS ، Maintenance سخت افزاری و.. هم میخواهند. مجموع تمامی این مواردی که ذکر شد بار مالی و کاری زیادی را به یک سازمان تحمیل میکند که Virtualization به حل همه ی این مسائل کمک میکند. در Virtualization به جای اینکه برای هر سرویس یک سخت افزار داشته باشیم همه ی سرویس های موجود را میتوانیم روی یک سخت افزار داشته باشیم. Virtualization مبحثی است که بیش از 40 سال قدمت دارد و مخترع آن هم IBM است.
اسم علمی تکنولوژی Virtualization ، Hypervisor (هایپروایزور) است. شرکت هایی که Hypervisor دارند و آن را حرفه ای روانه ی بازار کردند عبارت اند از:
- VMware
- Citrix
- Microsoft
- کلا Distribute ها Linux یک هایپروایزوری دارند به نام KVM
- VirtualBox ئه Oracle
بر اساس کمپانی گارتنر (http://www.gartner.com) شرکت های Leader ای که امروزه حرف اول را در زمینه ی مجازی سازی میزنند VMware و Microsoft هستند.
شرکت مایکروسافت از ویندوز 2008 به بعد محصولی را به عنوان هایپرویزور ارائه داد به نام Hyper-V. در مقابل کمپانی VMware هم چندین محصول برای مجازی سازی دارد از جمله VMware Worksatation که نسخه سازمانی به حساب نمی آید و برای تست و آموزش است و VMware Vsphere که نسخه ی سازمانی است. Vsphere خودش نام مجموعه ای از نرم افزارها است (Vcenter, ESX, Vsphere client). که خود Vsphere client قبلا به صورت اپلیکیشن بود ولی امروزه به صورت Web Base ارائه شده است. ESX نسخه ی سازمانی است و به صورت اپلیکشن نیست بلکه به صورت یک سیستم عامل است. یعنی شما ابتدا ESX را نصب میکنید چون یک هایپروایزور است توی آن میتوانیم چندین VM نصب کنیم و هرکدام از این VM ها هم یکی از سرویس های شبکه میباشد. همانطور هم که اشاره کردیم ورژن سازمانی هایپرویزور مایکروسافت Hyper-V است. Hyper-v از ویندوز 8.1 به بعد در دل ویندوز هست.
همچنین Citrix نیز یک محصولی داشت به نام citrix xenserver (/zen server/)، که خود آن نیز یک OS است و مانند ESX آن را نصب میکنیم .
Virtual Box که محصول شرکت Oracle است نیز چیزی شبیه VMware Workstation است.
HyperVisor ها به لحاظ تکنولوژیکی به دو دسته تقسیم میشوند:
- Bare Metal یا Type 1
- Hosted یا Type 2
حال میخواهیم ببینیم تفاوت این دو مورد در چیست؟
به صورت تصویری تفاوت این دو مدل به صورت زیر است:
حالت Hosted:
در این حالت VM نمیتواند به صورت مستقیم با سخت افزار ارتباط برقرار کند.
اولا که VM باید درخواست خود را از Hypervisor بخواهد ،هایپروایزور یک اپلیکیشنی است که روی ویندوز بالا آمده است، بنابراین هایپروایزور باید از OS درخواست کند که RAM و CPU و Hard و … میخواهم. یعنی سیستم عامل همان نگاهی را به VMware workstation دارد که به WinRAR دارد.
به سیستم عاملی که در VM نصب میشود اصطلاحا Guest OS گفته میشود. Guest os برای اینکه درخواستی را از Hardware داشته باشد باید از چندین لایه بگذرد، بنابراین به لحاظ Performance ای اصلا خوب نیست و بعد آن اگر OS لغزشی داشته باشد (هنگ کند، بالا نیاید و .. ) تمامی VM ها هم میلغزند. بنابراین Hypervisor در این حالت Stable و Trusted نیست.
حالت Bare Metal:
Bare metal یعنی آهن لخت (آهن پاره). به این دلیل اسم bare metal را روی آن گذاشتند که Hypervisor خود مستقلا میتواند با hardware در تماس باشد. یعنی مستقل کار میکند.
هایپروایزور هم اصولا یک لایه ی خیلی نازکی است که خود خیلی در کار خاصی دخالت پیدا نمیکند. فقط Management میکند که VM ها ساخته شوند و VM ها ایزوله از هم کار کنند. یعنی هر VM مستقیما با سخت افزار در تماس است. به همین دلیل Performance بالا است. در این حالت هم Hypervisor پاش رو روی سر OS نگذاشته است. یعنی به این شکل است که وقتی شما Hardware را روشن میکنید یک Mini OS ای Boot میشود و بالا می آید (این کار را همان Hypervisor انجام میدهد)، در این حد که یک Fundemental ای را آماده کند تا Hypervisor را Call کند، حالا Hypervisor که بالا آمد خودش مستقلا در کنار OS مینشیند و میتواند با Hardware مستقلا در ارتباط باشد. یعنی ممکن است مشکلی برای OS شما به وجود بیاید و مثلا هنگ کند اما هایپروایزور مستقلا به کارش ادامه میدهد.
برای مثال:
یعنی در این حالت دیگر OS ای به عنوان واسطه قرار ندارد و کار همان Mini OS ای که گفتیم را هم همان Hypervisor انجام میدهد. نسخه های اولیه ی ESX تا قبل از ESX 4 به این صورت کار میکردند که Mini OS و Hypervisor جدا از هم بودند اما نسخه های بعد از ESX 4 که ESXi بود به این صورت شدند که Hypervisor کار همان Mini OS را هم انجام میدهد. یعنی قبلا وقتی شما ESX را نصب میکردید یک لینوکس نصب میشد بعد در فرآیند نصب آن Service Console را نصب میکرد و این Service Console لایه Hypervisor بود. ولی در ESXi این مشکل حل شد.
بدیهی است که Hyper-V به صورت Bare Metal کار میکند.
انواع Virtualizationاز دیدگاهی دیگر:
- Server Virtualization
- Application Virtualization
- Desktop Virtualization
- Network Virtualization
- Storage Virtualization
Server Virtualization
شما میتوانید یک سرور سخت افزاری داشته باشید و روی آن OS بریزید و از آن استفاده کنید، اما با وجود Virtualization شما یک Hypervisor روی آن نصب میکنید و سرورها را به صورت Virtualization روی همین سخت افزار بالا می آورید. یعنی به جای اینکه یک سرور داشته باشید n تا سرور دارید که به صورت Virtual Machine هستند. یعنی به جای اینکه سرورها جدا جدا روی سخت افزارهای مختلف باشد، آن ها را به صورت VM در دل یک Hypervisor خواهید داشت. به این تکنیک Server Virtualization گفته میشود. پایه ی همه ی Virtualization های دیگر Server Virtualization است. یعنی هرکدام از انواع Virtualization را که نام بردیم را بخواهید راه اندازی کنید باید Server Virtualization داشته باشید که قابل استفاده باشد. به بیان دیگر مجازی سازی سیستم های سرور سازمان در داخل Virtual Machine ها Server Virtualization نامیده میشود. هرکدام از سرورهای سازمان همانند Active Directory)، Mail Server و …) در قالب VM های مستقل بر روی یک Hypervisor کار میکنند.
Application Virtualization
این مورد چندین حالت دارد که بسیار جالب است. برای مثال شرکت VMware محصولی به نام ThinApp دارد .کارش هم به این شکل است که ابتدا یک OS نصب میکنیم و ThinApp را روی آن نصب میکنیم. بعد آن Photoshop را نصب میکنیم، این ThinApp بررسی میکند که این برنامه ای که در حال نصب شدن است کجا فایل کپی میکند، کجا را تغییر میدهد و .. .وقتی نصب فتوشاپ تمام میشود تمامی این تغییرات را یک Package میکند. حالا هر زمانی که آن Package را دابل کلیک کنیم فتوشاپ برای ما باز میشود. یعنی میتوانیم این پکیج را روی یک سیستم دیگر run کنیم و در آن فتوشاپ را اجرا کنیم. این یک مدل Application Virtualization است. اما یک حالت دیگری که وجود دارد و در Server Virtualization از آن استفاده میکنند، به این شکل است که ما به روش های دیگری این پکیج را درست کنیم و بعد از آن یک سرور را نصب میکنیم مثل 2016 و به جای اینکه روی آن SQL ر ا نصب کنیم پکیج Virtual شده ی SQL را که درست شده را به این ویندوز سرور وصل کنیم. از این به بعد هرکسی که بگوید یک سرور میخواهیم که روی آن SQL باشد ما یک ویندوز سرور نصب میکنیم و این پکیج SQL را بهش وصل میکنیم. این حالت خیلی در Datacenter ها کاربرد دارد. برای مثال وقتی یک Datacenter ، VPS ارائه میدهد یک مشتری مثلا یک ویندوز سرور 2016 میگیرد و میگوید یک Sql Server روی آن باشد. این دیتاسنتر که چندهزار تا مشتری دارد نمیتواند به ازای هر مشتری یک Sql Server نصب کند. دقیقا به این روشی که گفته شد عمل میکند. یعنی یک VM برای مشتری میسازند و این Package آن نرم افزار مثل sql را بهش وصل میکنند. یک مثال دیگری که از Application Virtualization میتوان ذکر کرد، یک اپلیکیشن را روی یک سرور نصب میکنیم و از آن اپلیکیشن یک آیکون به کامپیوترش میدهیم، حالا این کامیپوتر میخواهد در LAN ما باشد یا میخواهد با خط WAN به ما وصل شده باشد. اپلیکیشن روی کامپیوتر کاربر نصب نیست بلکه روی سرور نصب است. وقتی کاربر روی آیکون برنامه دابل کلیک میکند انگار که برنامه روی کامپیوترش نصب شده است و اجرا میشود در صورتی که این طور نیست و برنامه روی سرور است. یعنی آن Application روی سرور RUN شده است و صفحاتش برای کاربر Present میشود. این ارتباط را میتوان حتی روی تبلت داشت که Android است مثلا ولی Word یا هر برنامه ای دیگر با صفحات ویندوز در آن نمایش داده میشود (این برنامه روی سرور run میشود و فقط صفحات آن به کاربر نشان داده میشود). در این مورد در حال حاضر شرکت Citrix پیشتاز است و محصولی دارد به نام XenApp که دقیقا همین کار را میکند.
Desktop Virtualization یا VDI Virtual Desktop Infrastructure
تصور کنید شرکتی داریم که در حالت Startup است و قرار است با 500 تا کارمند کار کند. این یعنی برای کاربران باید 500 تا کامپیوتر بگذاریم . حدود 800 میلیون باید خرج خرید کامپیوتر ها کرد. اما میتوانیم به این شکل پیشنهاد بدهیم که به جای اینکه 800 میلیون خرج خرید کامپیوترد 4 تا سرور 100 میلیونی بخریم،با دیگر هزینه ها میگوییم مثلا با 500 میلیون سرور و تجهیزات بخریم، حالا به جای اینکه کامپیوتر بخریم، Thin Client و Zero Client میخریم( به کامپیوترهای معمولا Fat PC گفته میشود.) یک Firmware ئه embedded روی آن ها هست با یک storage بسیار کم، Desktop های کارمندان را که قرار است کار بکنند را به عنوان Virtual Machine در سرورها درست میکنیم. حالا این Thin client که روشن میشود VM خود را میبیند. شاید ابتدا به امر هزینه ی راه اندازی این پیشنهاد با هزینه ی پیشنهاد اول یکی باشد، شاید حتی بیشتر شود ولی در چندماه اول پول برقی که ذخیره میکنید این هزینه ها را جبران میکنند. Maintenance ای هم ندارند. VDI میگویدDesktop ئه User ها را مجازی کنید. حتی میتوانیم zero client بگیریم که یک Chip ئه ARM روی آن دارد (مثلا اندروید روی آن نصب است) و یک آیکون میدهیم که با کلیک روی آن کاربر به دسکتاپش وصل میشود.
Network Virtualization
در دنیای فیزیکی شما یک سوییچ دارید که کامپیوترها را به آن وصل میکنید و ارتباط سوییچینگی بین آن ها به وجود می آورد. یا مثلا روتر داریم تا فرآیند routing ای را انجام دهد. یا device هایی از قبیل Firewall و Load Balancer و … داریم.شرکت VMware محصولی را ارائه کرده به نام VMware NSX که مجازیست. یعنی NSX را نصب میکنیم و Switch و Router و .. مجازی میشوند. حالا سرورهای مجازی از طریق سوییچ یا روتر مجازی به هم وصل میشوند. برای مثال روی یک Hyper-V ما 4 تا VM داریم و این VM ها میخواهند با هم ارتباط Network ای داشته باشند، یا کامپیوترها میخواهند این VM ها را Ping کنند. سوال اینجاست که ما کامپیوترها را چگونه به سوییچ های فیزیکی وصل کنیم؟! بنابراین نتیجه میشود که در اینجا به سوییچ و device ها مجازی احتیاج داریم. پس Network Virtualization یعنی این. SDN یا Sofware Defined Networking همین Concept ئه Network Virtualization است.
Storage Virtualization
بدیهی است که هر VM یک Disk ای میخواهد تا Data ها را روی آن ذخیره کند، میدانیم که VM ها هم کاملا از هم مجزا هستند. اصطلاحا گفته میشود که VM ها Sand Box (ساعت شنی) شده هستند و هرکدام Hard میخواهند. از طرفی نمیتوانیم برای هر VM یک Hard فیزیکی بخریم . کاری که اتفاق می افتد به این صورت است که سیستم به ازای هر VM یک فایل درست میکند که آن فایل نقش Hard Disk را برای آن بازی میکند و اون VM اون فایل را به عنوان Hard Disk میبیند. حالت دیگری که اتفاق می افتد به این صورت است که ما امروز میتوانیم سروری داشته باشیم که به عنوان Storage خدمات میدهد. یعنی مثل یک Device ئه Storage ای سرور های دیگر میتوانند به آن وصل شوند و از فضای ذخیره سازی آن استفاده کنند. به این تکنیک Software Defined Storage یا SDS یا Storage Virtualization میگویند.
فرض کنید چند ESX Server دارید. یکی از دلایلی که باید چند ESX داشته باشید این است که ما نمیتوانیم همه ی VM ها را روی یک Hypervisor بالا بیاوریم. فرض کنید شما 4 Hypervisor نصب کردید. حالا برای اینکه بتوانید یک مدیریت متمرکز روی آن ها داشته باشید VMware محصولی به نام Vcenter دارد. معادل مایکروسافتی آن System Center Virtual Machine Manager یا SCVMM است.
ما چندین سرور داریم که روی آن یک Hypervisor مثل ESXi یا HyperV نصب شده است . تمامی Host هادزیر این ها Register میشوند. ادمین برای مدیریت به Vcenter یا SCVMM است وصل میشود و وقتی وصل میشود تمامی Host ها را در آن مبییند. سروری که روی آن Hypervisor نصب شده است Host مینامند. یک کنسول واحد داریم برای مدیریت همه ی Host ها. در کنار این یک سری قابلیت خیلی خوب با Vcenter یا SCVMM به دست می آوریم.
خاصیت Vmotion یا Live Migration:
تصور کنید یک VM روشن دارید که Down هم نشده، مثل Sql server، این سرور خیلی Load بالا دارد و ترجیح میدهیم آن را روی یک سرور دیگری ببریم. اما نمیتوانیم آن را خاموش کنیم زیرا در حال کار کردن است. همانطوری که روشن است بدون اینکه کسی چیزی بفهمد و حتی یک ping قطع شود آن را به یک Host دیگر منتقل کنیم.
DRS یا Distribute Resource Scheduler:
تصور کنید یک Host، 80% زیر بار است و یک Host، 40% زیر بار است ، یک Host دیگر 10% زیر بار است و.. . DRS بررسی میکند که یک Host زیاد زیر بار است و یک Host دیگر کمتر ، سریعا VM هایHost ای که زیر بار است را اتوماتیک Vmotion میکند روی جاهای مختلف و بار همه ی Host ها را یکی میکند. برای مثال همه ی Host ها به 30 درصد برسند . به بیان دیگر تقریبا Load را روی همه balance میکند. ضمنا این ویژگی قابل تنظیم است.
DPM یا Dynamic Power Management:
DRS همه ی Host ها را Balance میکند و اگر سه تا Host داشته باشیم هرکدام 30 درصد میشود . بعد میبینیم اگر بار Host دیگر را هم بین Host های دیگر تقسیم کنیم خیلی روی آن ها تاثیر ندارد . بنابراین میپرسیم چرا یک Host در این شرایط روشن باشد و برق مصرف کند؟ در این شرایط Host را خاموش میکند.جالب است وقتی در کنسول نکاه میکنیم مشاهده میکنیم روی بعضی Host ها عکس ماه آمده، این یعنی خاموش شده. وقتی فشار بار روی Host های دیگر زیاد شد این Host خاموش را روشن میکند و یک VM میریزد روی آن.
مجموع همه ی این ها یک ابر سرویس را ایجاد میکند که به آن Cloud گفته میشود. برای مثال با اینکه شما فتوشاپ ندارید اما یک آیکون بهتون داده شده که با اجرای آن فتوشاپ run میشود.
در این میان مایکرسافت یک خانواده ای از نرم افزارها را دارد به نام System Center.
System Center های Microsoft:
برای مثال میتوان به موارد زیر اشاره کرد:
- System Center Virtual Machine Manager or SCVMM که برای مدیریت Virtualization است.
- System Center Operation Manager or SCOM که برای مدیریت مانیتورینگ است.
- System Center Data Protection Manager or SCDPM که برای بک آپ گیری است.
- System Center Service Manager or SCSM که برای مدیریت Client ها است.
- System Center Orchestrator or SCORCH که مانند رهبر ارکست است.
- System Center Configuration Manager or SCCM
پک همه ی این سرویس های بالا Microsoft Cloud میشود. زیر لایه ی Virtualization، Hyper-V نشسته است.
نویسنده:مهندس محمد آجورلو
خیلی ممنون مهندس آجورلو
بسیار جامع بود