ماشین مجازی (VM) یک سیستم عامل (OS) یا محیط برنامه کاربردی است که بر روی نرم افزار نصب شده و از سخت افزار اختصاصی تقلید می کند. کاربر نهایی همان تجربه سخت افزاری اختصاصی را در ماشین مجازی دارد.
ماشین مجازی چیست و چگونه کار می کند؟
VM یک محیط جداگانه برای اجرای سیستم عامل و برنامه های کابردیش به طور مستقل از سیستم میزبان پایه یا سایر ماشین های مجازی موجود در این میزبان را فراهم می آورد. سیستم عامل VM معمولاً به عنوان سیستم عامل گاست یا مهمان شناخته می شود و می تواند مشابه یا متفاوت از سیستم عامل میزبان یا سایر ماشین های مجازی باشد. به این ترتیب، یک سیستم کامپیوتری می تواند چندین VM را که همه آنها سیستم عامل ها و برنامه های مختلف را اجرا می کنند را بدون تاثیر یا تداخل با یکدیگر میزبانی کند.
ماشین مجازی هنوز به منابع فیزیکی میزبان وابسته است، اما این منابع، مجازی شده و در ماشین های مجازی توزیع می شوند و می توانند در صورت لزوم مجدداً تخصیص داده شوند و امکان اجرای همزمان محیط های مختلف و همچنین تحمل بارهای مختلف را فراهم می آورد.
در اکثر مواقع، کاربران متصل به VM نمی توانند تشخیص دهند که این یک محیط مجازی است. سیستم عامل مهمان و برنامه های کاربردی آن را می توان پیکربندی و به روز کرد و در صورت لزوم برنامه های جدید را نصب یا حذف کرد، و این در حالی است که روی میزبان یا سایر ماشین های مجازی تاثیری نمی گذارد. منابعی مانند پردازنده (CPU)، حافظه و ذخیره سازی بسیار شبیه به یک کامپیوتر فیزیکی به نظر می رسد. گرچه ممکن است کاربران گاهی اوقات دچار مشکلاتی مانند عدم اجرای برنامه در محیط مجازی شوند، اما این نوع مسائل بسیار کم پیش می آید.
کامپیوتری که ماشین های مجازی را میزبانی می کند نیاز به نرم افزار تخصصی به نام هایپروایزر یا Hypervisor دارد. هایپروایزر، پردازنده، حافظه، هارددیسک، شبکه و سایر منابع سخت افزاری کامپیوتر را شبیه سازی می کند و مجموعه ای از منابع را ایجاد می کند که می تواند با توجه به نیازهای خاص به طور مجازی اختصاص داده شوند.
Hypervisor می تواند از چندین پلتفرم سخت افزاری مجازی تفکیک شده از هم پشتیبانی کند و ماشین های مجازی را قادر می سازد سیستم عامل های لینوکس و ویندوز سرور را در یک میزبان فیزیکی یکسان اجرا کنند.
Hypervisor منابع را مدیریت می کند و آنها را به ماشین های مجازی اختصاص می دهد. همچنین نحوه توزیع منابع را بر اساس نحوه پیکربندی هایپروایزر و ماشین های مجازی را تنظیم می کند و می تواند منابع را در نوسان تقاضا مجدداً تخصیص دهد. اکثر هایپروایزرها به دو دسته تقسیم می شوند:
Type 1 – که به عنوان bare-metal hypervisor هم شناخته می شود، یک نوع هایپروایزر است که مستقیماً روی دستگاه میزبان فیزیکی اجرا می شود و به سخت افزار آن دسترسی مستقیم دارد. هایپروایزرهای نوع 1 معمولاً روی رایانه های سرور اجرا می شوند و نسبت به هایپروایزرهای Type-2 کارآمدتر و عملکرد بهتری دارند و آنها را برای مجازی سازی سرور، دسکتاپ، و برنامه مناسب می سازد. Hyper-V و VMware ESXi نمونه هایی از Type 1 hypervisor هستند.
Type 2 – که گاهی اوقات به عنوان hosted hypervisor نامیده می شود یک هایپروایزر در بالای سیستم عامل دستگاه میزبان نصب شده است که تماس ها را با منابع سخت افزاری مدیریت می کند. هایپروایزرهای نوع 2 عموماً در سیستم های کاربر نهایی برای موارد خاص استفاده می شوند. به عنوان مثال، یک توسعه دهنده ممکن است از Type 2 hypervisor برای ایجاد یک محیط خاص برای ایجاد یک برنامه استفاده کند یا یک تحلیلگر داده از آن برای آزمایش یک برنامه در یک محیط جداگانه استفاده کند. VMware Workstation و Oracle VirtualBox نمونه هایی از Type 2 hypervisor هستند.
اکثر هایپروایزرها به اجزای سخت افزاری خاصی احتیاج ندارند اما کامپیوتری که هایپروایزر را مدیریت می کند باید منابع لازم را برای پشتیبانی از ماشین های مجازی و همچنین عملیات های hypervisor و عملیات خود میزبان را داشته باشد.
چرا باید از ماشین مجازی استفاده کنیم؟
سازمان ها به طور معمول ماشین های مجازی را در دیتاسنتر خود مستقر می کنند تا از طیف وسیعی از موارد استفاده و حجم کار پشتیبانی کنند. آنها به چندین دلیل از ماشین های مجازی استفاده می کنند که از این بین می توان به موارد زیر اشاره کرد:
ماشین های مجازی به سازمان ها کمک می کند تا سرورها را یکپارچه کرده و از منابع سخت افزاری بهتر استفاده کنند. از آنجا که یک سرور واحد می تواند چندین ماشین مجازی را به طور همزمان اجرا کند، سازمان ها می توانند از منابع در یک سرور واحد به طور موثرتری استفاده کنند و نیاز به گسترش حجم کار در سرورهای متعدد را که اغلب کمتر از ظرفیت عمل می کنند، کاهش می دهد. به این ترتیب، سازمان ها هزینه های سرمایه ای و عملیاتی را ذخیره می کنند.
ماشین های مجازی محیط های جداگانه ای را ارائه می دهند و امکان اجرای انواع مختلف سیستم عامل ها و برنامه های کاربردی روی یک سرور را فراهم می سازد. سازمان ها می توانند برنامه های تجاری قدیمی و تجاری را در محیط های مورد نیاز خود مستقر کنند، بدون آنکه مجبور باشند با مسائل مربوطه سر و کار داشته باشند یا نیاز به خرید چندین سرور برای پشتیبانی از محیط های مختلف داشته باشند.
ماشین های مجازی مقیاس پذیری برنامه ها را ساده می کنند و حجم کار متغییر را برآورده می کنند، این یکی از دلایلی است که مجازی سازی نقش مهمی در محاسبات ابری و سیستم هایی مانند زیرساخت های همگرا (HCI) را ایفا می کند.
سازمان ها همچنین به دلیل وجود امنیت اضافی که در برابر تهدیدات احتمالی ایجاد می کنند به ماشین های مجازی روی می آورند. اگر یک VM به خطر بیافتد می توان برای ریکاوری از نسخه پشتیبان یا ایمیج ها اقدام کرد. از آنجا که میزبان و سایر ماشین های مجازی تفکیک شده اند، تهدید به حداقل می رسد.
ماشین های مجازی مدیریت چندین محیط با سیستم عامل های مختلف را ساده تر می کنند. از آنجا که حجم کار روی سرورهای کمتری جمع می شود، سیستم های فیزیکی کمتری هم برای استقرار و نگهداری وجود دارد. علاوه بر این، اکثر سیستم عامل های مجازی امکان مدیریت ماشین های مجازی از طریق یک رابط را فراهم می کند، حتی اگر این VMها در چندین میزبان توزیع شده باشند.
سازمان ها اغلب هنگامی که می خواهند چندین برنامه را اجرا کنند که نیاز به سیستم عامل و قدرت پردازش متفاوتی دارند، ماشین های مجازی را مستقر می کنند. به عنوان مثال، یک تیم تضمین کیفیت (QA) ممکن است بخواهد چندین سرور وب و پایگاه داده های کوچک را به طور همزمان آزمایش کند یا IT ممکن است نیاز به استفاده از یک سرور برای اجرای نرم افزارهای گرافیکی بازی و پایگاه داده خدمات مشتری داشته باشد. توسعه دهندگان همچنین می توانند از ماشین های مجازی برای عملیات ادغام و تحویل مداوم خود استفاده کنند یا ممکن است یک سازمان به محیطی احتیاج داشته باشد تا برنامه های قدیمی را در کنار سایر ورک لودها اجرا کنند.
مزایای ماشینهای مجازی
گرچه کانتینرها و دیگر فناوری های کاربردی مدرن روی VM تاثیر گذاشته اند، اما ماشین های مجازی همچنان به طور گسترده توسط سازمان ها در هر اندازه مورد استفاده قرار می گیرند چون چندین مزیت مهم را ارائه می دهند که از این بین می توان به موارد زیر اشاره کرد:
مجازی سازی با کاهش نیاز به سیستم های سخت افزاری فیزیکی هزینه ها را محدود می کند. ماشین های مجازی از منابع سخت افزاری به مراتب موثرتری نسبت به توسعه های bare-metal استفاده می کنند. این باعث کاهش تعداد سرورهایی که باید مستقر شوند و هزینه های مربوط به تعمیر و نگهداری می شود. همچنین تقاضا برای برق و خنک کنندگی را کاهش می دهد.
ماشین های مجازی محیط های جداگانه و مستقلی هستند که می توانند انواع مختلف برنامه ها و سیستم عامل ها را روی یک سرور اجرا کنند، مشکلات احتمالی و امنیتی و همچنین نیاز به استقرار چندین سرور فیزیکی را از بین می برند.
ماشین های مجازی را می توان به راحتی بین سرورهای میزبان و همچنین بین محیط های داخلی و ابری، جابجا، کپی و مجدداً اختصاص داد، در نتیجه استفاده از منابع سخت افزاری را بهبود بخشید در حالی که مقیاس پذیری برنامه ها را ساده تر می کند.
ماشین های مجازی به روش های مختلفی مدیریت را ساده می کنند. مدیران، توسعه دهندگان و آزمایش کنندگان می توانند ماشین های مجازی را به سرعت مستقر کنند و چندین ماشین مجازی را می توان به راحتی از یک رابط متمرکز مدیریت کرد. مدیران همچنین می توانند از محیط های مجازی برای ساده سازی بکاپ گیری، بازیابی، استقرارهای جدید و وظایف اصلی مدیریت سیستم استفاده کنند.
از آنجا که ماشین های مجازی در محیط های جداگانه کار می کنند، می توانند سطح بیشتری از حفاظت را در برابر حملات مخرب ارائه دهند. آنها همچنین از ویژگی هایی مانند ایمیج های فوری و بکاپ گیری پشتیبانی می کنند که باعث می شود در صورت خراب شدن سیستم فعلی، بتوانید یک VM را به راحتی بازیابی کنید.
ماشین های مجازی به سخت افزارهای تخصصی یا مخصوص hypervisor نیاز ندارند. اما اگر سخت افزار فیزیکی میزبان چندین VM باشد، کامپیوتر میزبان به پهنای باند، ظرفیت ذخیره سازی و پردازش بیشتری نسبت به سرور یا دسکتاپ سنتی نیاز دارد. از آنجا که ماشین های مجازی در میزبان فیزیکی می توانند منابع نابرابر را مصرف کنند، یکی ممکن است ذخیره فیزیکی موجود را درگیر کند، در حالی که دیگری مقدار کمی ذخیره می کند. متخصصان فناوری اطلاعات باید ماشین های مجازی را با منابع موجود متعادل کنند. خوشبختانه سیستم عامل های مجازی سازی این روند را ساده می کنند.
انواع ماشین های مجازی
ماشین های مجازی اغلب بر اساس نوع هایپروایزری که آنها را مدیریت می کند یا بر اساس نوع حجم کاری که پشتیبانی می کنند دسته بندی می شوند. با این حال، ماشین های مجازی هم بر اساس نوع VM دسته بندی می شوند:
Process VM – یک محیط برنامه نویسی موقت و مستقل از پلتفرم را برای اجرای یک فرآیند واحد به عنوان یک برنامه فراهم می آورد. این محیط یک انتزاع سطح بالا را ارائه می دهد که سخت افزار یا سیستم عامل اصلی را پوشش می دهد. هنگامی که فرآیند شروع می شود یک VM ایجاد می شود و با اتمام فرآیند از بین می رود. دو مثال رایج از این نوع ماشین مجازی Java Virtual Machine (بخشی از پلتفرم جاوا)، Common Language Runtime (که برای .Net Farmework استفاده می شود) می باشد.
System VM – این سیستم یک محیط کاملاً مجازی است که روی یک سرور فیزیکی هاست می شود و سیستم عامل خود را اجرا می کند. VM منابع فیزیکی میزبان را به اشتراک می گذارد اما محیط کاملی را برای اجرای برنامه ها و خدمات مانند یک ماشین فیزیکی را فراهم می کند، اما هزینه اضافی به همراه ندارد. ماشین های مجازی سیستمی برای مجازی سازی منابع سخت افزاری و دسترس پذیری آنها در محیط های VM به یک هایپروایزر متکی هستند. نمونه های رایج VMهای سیستم شامل مواردی هستند که توسط سیستم عامل های مجازی سازی مانند VMware vSphere و Microsoft Hyper-V پشتیبانی می شوند.
مقایسه ماشین مجازی با کانتینر
کانتینر مانند ماشین های مجازی هستند مگر اینکه فقط سیستم عامل را مجازی سازی کنند (به جای بقیه سخت افزارهای پایه). کانتینر شامل کد، ابزار سیستم، زمان اجرا، کتابخانه های سیستم و تنظیمات مورد نیاز برای اجرای برنامه ها هستند. به همین دلیل است که کانتینرها اغلب برای چندین برنامه کاربردی که روی یک سیستم عامل اجرا می شوند، استفاده می شوند. کانتینر همچنین برای برنامه های کاربردی توزیع شده بومی ابر و بسته بندی برنامه های قدیمی برای افزایش قابلیت حمل و سادگی استفاده می شوند. Docker ، که در سال 2013 به عنوان یک پلت فرم ظرف مبتنی بر لینوکس وارد بازار شد، یکی از توسعه دهندگان برجسته کانتینر است.
سربار کانتینرها نسبت به ماشین های مجازی کمتر است و بسیار سبک تر هستند. آنها همچنین سریعتر راه اندازی می شوند، از منابع سرور کمتری استفاده می کنند و قابل حمل تر هستند و آنها را با فناوری های کاربردی مانند سروریس های میکرو مطابقت می دهد. با این حال، همه محفظه هایی که روی یک میزبان اجرا می شوند یا به میزبان دیگری منتقل می شوند باید از سیستم عامل یکسانی پشتیبانی کنند.
ماشین های مجازی می توانند سیستم عامل های مختلفی را اجرا کنند و میزان بیشتری از انزوا را ارائه دهند. گرجه آنها می توانند پیکربندی شوند تا در صورت لزوم با یکدیگر ارتباط برقرار کنند. ماشین های مجازی برای برنامه های یکپارچه یا اجرای چندین برنامه با هم، بهتر هستند. آنها همچنین برای برنامه های قدیمی که به محیط های جداگانه نیاز دارند مفید هستند.
ماشین های مجازی فضای بیشتری را نسبت به کانتینر اشغال می کنند چون برای اجرا به سیستم عامل مهمان نیاز دارند. هر کانتینر سیستم عامل میزبان را به اشتراک می گذارد. برخی از کاربران برای ارتقاء امنیت، کانتینرها را در ماشین های مجازی مستقر می کنند.
از کانتینر و ماشین های مجازی می توان در کنار هم استفاده کرد. گرچه این کار هزینه اضافه را به همراه دارد اما یک لایه امنیتی اضافی را فراهم می کند که کانتینر به تنهایی ارائه نمی دهد. این ترکیب همچنین امکان استقرار زیرساخت هایی را فراهم می کند که بتوانند از حجم کار مدرن و سنتی پشتیبانی کنند. اکثر سیستم عامل های HCI بر اساس فناوری های مجازی سازی طراحی شده اند، اما بسیاری از آنها از Kubernetes پشتیبانی کرده اند که در ساختار VM اجرا می شود. در نتیجه همه حجم کاری در ماشین های مجازی اجرا می شوند و از انزوا سود می برند، در حالی که در کنار حجم کار سنتی کار می کنند.
راه اندازی و نصب ماشین مجازی
فرآیند مورد استفاده برای راه اندازی ماشین های مجازی به بستر مجازی سازی بستگی دارد. بسیاری از سیستم عامل ها ویزادها و ویژگی های دیگری را ارائه می دهند که ایجاد و استقرار VM را ساده می کند. به عنوان مثال در VMware vSphere یک سرپرست می تواند یک VM را کلون کند یا یک VM واحد را از ابتدا ایجاد کند. vSphere یک ویزارد VM جدید است که کاربر را در روند ایجاد VM راهنمایی می کند.
مجازی سازی Red Hat رویکرد متفاوتی را برای راه اندازی VM دارد. به عنوان مثال برای نصب ماشین مجازی لینوکس، کاربر مراحل زیر را انجام می دهد:
- یک VM خالی ایجاد کنید.
- یک دیسک مجازی برای ذخیره سازی اضافه کنید.
- یک رابط شبکه برای اتصال VM به شبکه اضافه کنید.
- سیستم عامل گاست یا مهمان را نصب کنید.
- VM را در شبکه تحویل محتوا ثبت کرده و اشتراک های لازم را ضمیمه کنید.
- درایو مورد نیاز را نصب کنید.
- از آنجا که فرآیند راه اندازی VM مخصوص پلتفرم مجازی سازی است، کاربران باید قبل از استقرار ماشین های مجازی، اسناد را بررسی و مرور کنند.
مدیریت ماشین مجازی
استفاده از ماشین های مجازی با چندین ملاحظات مهم مدیریتی همراه است که بسیاری از آنها را می توان از طریق بهترین شیوه های مدیریت سیستم و ابزارهایی که برای مدیریت ماشین های مجازی طراحی شده اند، حل کرد.
برخی از خطرات وجود دارد که از این بین می توان به اضافه بار منابع یا احتمال قطع شدن چندین VM به دلیل خرابی سخت افزار فیزیکی اشاره کرد. گرچه صرفه جویی در هزینه ها به دلیل اشتراک بیشتر ماشین های مجازی در پلتفرم سخت افزاری مشابه افزایش پیدا می کند اما خطر هم افزایش پیدا می کند. ممکن است بتوان صدها VM را روی یک سخت افزار قرار داد، اما اگر پلت فرم سخت افزاری خراب شود می تواند ده ها یا صدها VM را از بین ببرد. با این حال، استفاده از پشتیبان گیری ماشین های مجازی یا ایمیج های فوری می تواند به کاهش این خطرات کمک کند.
فروشندگان VM
فروشندگان متعددی پلتفرم های مجازی سازی را ارائه می دهند. 4 مورد از محبوب ترین سیستم عامل ها توسط VMware ، Citrix ، Microsoft و Red Hat ارائه می شوند:
VMware vSphere – یک پلتفرم مجازی سازی است که به طور گسترده پیاده سازی شده است و اخیراً مجدداً طراحی شده است تا پشتیبانی بومی از Kubernetes را شامل شود و امکان اجرای بارهای سنتی و مدرن را در VMها فراهم می کند. VMware vSphere بسیار مقیاس پذیر است و می تواند از برنامه های با عملکرد بالا مانند SAP HANA پشتیبانی کند.
Citrix Hypervisor – یک هایپروایزر با عملکرد بالا است که بر اساس هایپروایزر منبع باز پروژه Xen طراحی شده است. Citrix Hypervisor برای حجم کاری برنامه ها و دسکتاپ های مجازی و همچنین سرورهای محازی ویندوز لینوکس بهینه شده است. ادمین ها می توانند سیاست هایی را تنظیم کنند که در صورت خرابی یکی از آنها، ماشین مجازی ها را روی سرور دیگر راه اندازی مجدد کنند.
Microsoft Hyper-V – یک سرور ویندوز است که مدیران را قادر می سازد ماشین های مجازی را ایجاد و مدیریت کنند. Hyper-V این مزیت را دارد که یک جزء یکپارچه در پلتفرم ویندوز سرور باشد و به ساده سازی پیاده سازی کمک کند. Hyper-V از VMهای ویندوز و لینوکس پشتیبانی می کند و شامل ویژگی هایی برای تغییر و جابجایی ساده، توزیع یا تکثیر ماشین های مجازی است.
Red Hat Virtualization – یک پلتفرم مجازی سازی سازمانی است که روی Red Hat Enterprise Linux (RHEL) و ماشین های مجازی مبتنی بر هسته ساخته شده است. این پلتفرم می تواند از برنامه های مهم و حجم کاری زیاد منابع پشتیبانی کند و پلتفرم های Red Hat OpenStack ، RedHat OpenShift و Red Hat Ansible Automation ادغام می شود.
تعداد زیادی از محصولات مجازی سازی منبع باز وجود دارند که در بازار ماشین های مجازی خود را مطرح کرده اند که از این بین می توان به KVM ، OVirt و Proxmox VE اشاره کرد. علاوه بر این، محاسبات ابری از مجازی سازی استفاده گسترده ای می کند. با این حال، فناوری های اضافی را روی پلتفرم قرار می دهد. به عنوان مثال در یک دیتاسنتر مجازی، کارکنان فناوری اطلاعات می توانند ماشین های مجازی جدید را بر اساس تقاضای کاربر یا پروژه جدید ایجادکنند. با این حال در محیط ابر، یک کاربر نهایی می تواند ماشین های محازی را از یک فهرست سلف سرویس ارائه دهد و منابع را بدون تعامل با تجهیزات زیرساخت های فیزیکی و نیاز به کمک ادمین تعیین کند.