هر آن چیزی که درباره مجازیسازی باید بدانید.
مجازیسازی یا Virtualization یک اصطلاح رایج در دنیای کامپیوتر است که بهمنظور استفاده از سیستمعاملهای مختلف یا نرمافزارهایی که روی سیستمعاملهای مختلف اجرا میشوند، بدون تعویض دستگاه و سرور، کاربرد دارد.
انواع متفاوتی از مجازیسازی وجود دارد و در حوزههای مختلف، بهخصوص شبکه، کاربردهای فراوانی میتوان برای حالتهای متنوع آن یافت. در این مقاله سعی میکنیم تا با ارائه توضیح و معرفی کاملی از Virtualization به بررسی حالتهای مختلف و کاربردهای این موضوع نیز بپردازیم. پس اگر کنجکاو هستید تا بیشتر با این بحث آشنا شوید پیشنهاد میشود تا انتها با ما همراه باشید.
تعریف مجازیسازی یا Virtualization
بهصورت کلی به تبدیل یک موجودیت فیزیکی و واقعی به یک یا چند موجودیت مجازی، مجازیسازی میگویند. اما این اصطلاح بیشتر در دنیای کامپیوتر و شبکه کاربرد دارد پس باید تعریفی متناسب با این حوزه برای آن در نظر گرفت. ازاینرو منظور از مجازیسازی (Virtualization) در دنیای IT و Network تبدیل یک بستر از منابع (مانند سرور یا سیستمهای شخصی (PC)) به چند جزء مختلف و مجزا در همان واحد گفته میشود.
شاید تعریف بالا کمی گنگ باشد پس برای درک بهتر آن فرض کنید که یک سیستم ساده کامپیوتری با 1 ترابایت حافظه، 4 گیگ رم، 2 گیگ گرافیک و یک چیپست نسل 5 دارید. حال میخواهید تمامی منابع ذکر شده (حافظه، رم، قدرت پردازشی و…) را به دو قسمت کاملا مجزا در همان حالت فیزیکی (کیس دستنخورده باقی بماند) تبدیل کنید. چاره کار چیست؟ شاید تصور کنید که برای این کار چرا نباید سیستم را فروخت و دو سیستم مجزا با منابع نصف تهیه کرد؟
در پاسخ باید گفت که این کار هم هزینه اضافی (یک فریم، یک پاور، یک مادربورد و… اضافی) خواهد داشت و مدیریت دو دستگاه در کنار نگهداری از آن نیز سختتر میشود. پس برای اجرایی کردن این خواسته بهتر است تا Virtualization در درون همان سیستم واحد و در لایههای مجازی آن اتفاق افتد. خبر خوب اینجاست که با استفاده از برخی نرمافزارهای خاص که با نام hypervisor نیز شناخته میشوند، میتوان بهراحتی این کار را انجام داد.
کاربردهای مجازیسازی، اصلا چرا باید از Virtualization استفاده کنیم؟
حال که با مفهوم مجازی کردن آشنا شدهایم بهتر است به این سوال نیز پاسخ داده شود که کاربردهای Virtualization چیست؟ زمانهایی وجود دارد که در یک سیستم واحد نیاز داریم تا از چند مدل OS (مخفف Operating System) یا سیستمعامل استفاده کنیم.
برای مثال یک مدرس کامپیوتر دو کلاس دارد که در یکی Linux و در کلاسی دیگر نرمافزاری بر پایه ویندوز تدریس میکند. اگر ایشان بودجه کافی برای تهیه دو سیستم مختلف را نداشته باشد، بهترین راهکار تهیه یک سیستم و نصب هر تعداد OS مختلف روی آن است. به لطف نرمافزارهای hypervisor بهراحتی میتوان این کار را انجام داد.
در راستای توضیحات داده شده باید عنوان کرد که از مهمترین کاربردهای مجازیسازی میتوان به همین بحث تدریس و شبکه اشاره کرد. در شبکههای سازمانی نیز برای نصب و استفاده از نرمافزارهای مختلف مانیتورینگ، مدیریت، امنیتی، کنترل ترافیک ورودی و… نیاز به اجرای چند سیستمعامل مختلف بر روی سرور است.
مقاله بهترین نرم افزارهای مانیتورینگ شبکه را ازدست ندهید.
از دیگر کاربردها و مزایای Virtualization:
- مدیریت بهتر منابع در کنار کاهش هزینهها
- تبدیل یک ورکاستیشن (Workstation) به چند ایستگاه کاری مجزا
- افزایش امنیت دادهها و اطلاعات موجود در سرور
- مدیریت بهتر و کنترل منعطفتر روی منابع موجود
- سوئیچ بین OSها در کمتر از چند دقیقه
- و…
مفهوم hypervisor در مجازیسازی
حال که بحث از تقسیم منابع یک بستر در حالت مجازی است، برای این کار نیاز به نرمافزار داریم. زیرا هر اتفاقی که در ساختار غیرفیزیکی رخ میدهد، بهوسیله یک software کنترل میشود. به دستهبندی نرمافزارهایی که برای مجازیسازی یک سیستم استفاده میشود، hypervisor میگویند. خود hypervisorها یا نرمافزارهای Virtualization دو نوع هستند.
به نوع اول bare metal و نوع دوم hosted گفته میشود برای مجازی کردن یک سیستم کامپیوتری دو حالت وجود دارد. در حالت اول نرمافزار بهصورت مستقیم روی سختافزار (همانند سیستمعامل) نصب شده و منابع موجود را تقسیم میکند که به این نوع نرمافزار bare metal hypervisor میگویند.
اما در حالت دوم یک hypervisor روی سیستمعامل نصب میشود و مانند یک برنامه عادی (فوتوشاپ، ورد، 3D Max و…) میتوان آن را روشن یا خاموش و در کل مدیریت کرد. شاید این سوال پیش آید که چرا دو نوع hypervisor وجود دارد؟ در پاسخ با این سوال باید عنوان کرد که در موارد مختلف استفاده از مجازیسازی (مانند تدریس یا شبکه) نیاز داریم تا ساختارهای مختلفی را پیادهسازی کنیم.
برای مثال اگر هدف از مجازی کردن یک سرور یا دستگاه ساده کامپیوتری تدریس باشد، استفاده از نوع دوم (hosted) بهتر است زیرا نصب، مدیریت و کنترل سادهتری دارد. اما اگر برای شبکه سازمانی نیاز داریم تا مجازیسازی را انجام دهیم، ممکن است از نوع اول (bare metal) استفاده شود، زیرا امنیت لایههای ایجاد شده در نوع اول بیشتر است. (البته تفاوتهای زیادی بین hypervisorها وجود دارد)
مفهوم container و virtual machine
زمانی که از نرمافزارهای مجازیسازی (hypervisorها) استفاده میکنیم تا منابع خود را به قسمتهایی مجزا تقسیم کنیم، در واقع در حال ساخت ماشینهای مجازی (virtual machine) یا container هستیم. اصطلاح container در مجازیسازی نوع دوم (میزبان یا hosted) و در Virtualization نوع اول (bare metal) از اصطلاح ماشین مجازی virtual machine استفاده میشود.
برای درک بهتر فرض کنید یک زمین بزرگ (منابع کامپیوتری مانند سرور یا کامپیوتر) در حاشیه شهر داریم که میخواهیم در آن زمین فوتبال، استخر، زمین فوتسال، هندبال، بسکتبال و والیبال (در کل مجتمع ورزشی) احداث کنیم. دو حالت وجود دارد؛ در حالت اول باید برای هرکدام از موارد نامبردهشده یک زمین جداگانه در ساختمانهایی مختلف بنا شود (بیانگر مجازیسازی نوع اول یا bare metal) که هر ساختمان با دیوارهایی از یکدیگر تفکیک شدهاند (بیانگر ماشینهای مجازی).
در حالت دوم میتوان زمینهای فوتسال، والیبال، هندبال و بسکتبال را باهم یکی کرد و همه را در یک سازه گنجاند و هر زمان که ورزشکاران یک حوزه قصد تمرین دارند، زمین برای ایشان آماده شود. مثلا اگر فوتسالیستها قصد استفاده از زمین را دارند دروازهها در محل خودشان قرار گرفته و بقیه مناطق خالی شود. در این حالت ما container یا ظروفی برای ایجاد بستر مناسب اجرا کردهایم که توصیفی برای Virtualization نوع دوم (hosted) نیز است.
در نتیجه زمانی که از مجازیسازی سخن میگوییم، درواقع در حال ساخت ماشین مجازی یا ظروف هستیم که مفهوم هر دو یکسان است. اما تفاوتی که دارند در نوع تفکیک آنها است. یعنی ماشینهای مجازی (virtual machine) کاملا ایزوله بوده و هیچ ارتباطی با یکدیگر ندارند اما ظروف (container) بر اساس وضعیتهای مختلف ممکن است باهم در ارتباط باشند.
انواع مجازیسازی (Virtualization)
در تعریف مجازیسازی یا Virtualization عنوان شد که روشی برای تقسیمبندی یک منبع به قسمتهای مجزا بهمنظور استفاده از چند نوع سیستمعامل یا نرمافزار (نرمافزارهایی که بر روی سیستمعاملهای مختلف اجرا میشوند) است. همچنین اشاره کردیم که برای پیادهسازی پروسه مجازی کردن دو نوع دستهبندی نرمافزاری وجود دارد. hypervisor hosted و hypervisor bare metal. با استناد بر این موارد باید گفت که سه حالت مجازیسازی بهصورت پیشفرض وجود خواهد داشت:
- Desktop virtualization
- Server virtualization
- Operating system virtualization
Desktop virtualization
همانطور که از نام این مدل مجازیسازی پیداست، به پیادهسازی چند دسکتاپ یا ورکاستیشن (workstation) بر روی یک سیستمعامل، Desktop virtualization گفته میشود. زمانهایی نیاز است تا از چند دسکتاپ مختلف روی سیستمعامل واحدی استفاده شود؛ برای مثال در یک مدرسه دو شیفته که تعداد محدودی سیستم برای دانشآموزان وجود دارد، برای هر شیفت میتوان یک دسکتاپ مجزا راهاندازی کرد تا تداخلی میان دادهها و عملیاتهای انجام شده در هر کلاس به وجود نیاید.
یکی از مزیتهای این نوع مجازیسازی، بهروزرسانی متمرکز و آسان تمامی نرمافزارها است. یعنی زمانی که نیاز باشد تا مثلا برنامه Word را به ورژن جدیدتر ارتقا دهیم، تنها با آپدیت نرمافزار در دسکتاپ اصلی، بهروزرسانی برای بقیه ورکاستیشنها نیز اعمال خواهد شد. البته نوع دیگری از مجازیسازی Desktop وجود دارد که با استفاده از آن دسترسی از راه دور برای ایستگاه کاری به وجود میآید.
یعنی با اجرا و پیادهسازی این متد میتوان بدون محدودیت مکانی با استفاده از هر نوع دستگاهی دسترسی کامل به سیستمعامل را تجربه کرد. کاربرد این حالت از Virtualization دسکتاپ شاید بهاندازه نوع قبلی نباشد ولی مدیران و ناظران شبکه برای رصد اتفاقات رخداده در هر زمانی از remote Desktop virtualization استفاده میکنند.
برای مطالعه بیشتر مقاله 0-100 مجازی سازی دسکتاپ را پیشنهاد می کنیم.
Server virtualization
به مجازی کردن یک سرور با استفاده از نرمافزارهای مخصوص این کار (hypervisorها) گفته میشود. لازم به ذکر است که سرور میتواند یک لپتاپ یا کامپیوتر شخصی (PC) نیز باشد، اما زمانی که صحبت از Server میشود، اغلب منظور دستگاهی باقدرت پردازشی بالا است. شرکتها و سازمانهای بزرگ و بهاندازه کافی توسعهیافته که حجم عظیمی از داده و اطلاعات را باید پردازش کنند، بهجای استفاده از سیستمهایی باقدرت کم، اقدام به تهیه سرورهایی با نیروی پردازشی بالا میکنند.
به طبع شرکت یاد شده بخشهای مختلفی دارد که برای امنیت بیشتر و عملکرد بهتر باید پردازش دادههای هر بخش در یک بستر کاملا مجزا و ایزوله صورت گیرد. ازاینرو سرور را با استفاده از مجازیسازی (بیشتر نوع اول یعنی bare metal) به بخشهایی جداگانه تفکیک میکنند تا اگر نیاز به اجرای سیستمعاملهای مختلفی نیز باشد، بدون محدودیت بتوان آن را اجرایی کرد.
مجازی یا بخشبندی کردن سرور را بهوفور میتوان در دیتا سنترهای شرکتهای بزرگی همچون آمازون دید که از ارائهدهندگان مرجع میزبانی وب است. روی سرورهای عظیم و متعدد این دیتاسنترها شاهد نصب انواع مختلفی از سیستمعاملها مانند ویندوز، لینوکس، ویندوز سرور، سولار و… هستیم تا طیف وسیعی از مشتریان را بتوان پوشش داد.
مقاله مجازی سازی سرور را ازدست ندهید.
Network virtualization
ممکن است در مجازیسازی شبکه از دو مدل قبلی بهصورت ترکیبی استفاده شود. یعنی منابع موجود (مانند سرورهای شبکه) را با استفاده از virtualization سرور به بخشهای مختلف و ایزوله تبدیل کرد تا نرمافزارهای متنوعی که نیاز است تا برای عملکرد بهتر شبکه نصب شوند، در بسترها و سیستمعاملهای مناسب قرار گیرند.
همچنین مسئولیت نظارت و مانیتورینگ شبکه (network monitoring) از جمله مواردی است که زمان ندارد. یعنی در هر تایمی از شبانهروز ممکن است تا این مورد بررسی شود تا به شرکت و سازمان خسارت وارد نشود. ازاینرو مجازیسازی دسکتاپ و بخصوص نوع remote یا از راه دور، حالت دیگری از مجازی کردن است که در virtualiztion شبکه استفاده میشود.
آیا مجازیسازی نیاز به تخصص دارد؟
برای این سوال هم پاسخ بله و هم پاسخ خیر میتوان داد. زیرا با جستجو در اینترنت و دیدن برخی ویدئوهای آموزشی در یوتیوب بهراحتی هرکسی میتواند نرمافزارهای مجازی ساز را روی سرور یا سیستم راهاندازی کند. ازاینرو اگر قصد دارید تا اهداف سادهای مانند پیادهسازی نوع دسکتاپ برای مدرسه یا سیستم شخصی خود را پیش ببرید، باید گفت که نیاز به تخصص نیست.
اما زمانی که صحبت از مجازیسازی شبکه سازمانی میشود، درحقیقت داریم درمورد داراییهای یک شرکت حرف میزنیم که قرار است در ماشینهای مجازی مختلفی مستقر شوند. ازاینرو امنیت اولویت اول خواهد بود پس علاوه بر تخصص نیاز به تجربه کافی نیز در این زمینه است تا کارها به بهترین نحو و کمترین درصد خطا و ریسک انجام شود.
یک فرد متخصص و مجرب باید در این زمینه اطلاعات کافی از لایههای شبکه در مدل OSI داشته باشد. همچنین در مواقعی باید ایزولاسیون ماشینهای مجازی به صورتی پیکربندی شود تا در صورت نیاز هر بخش از منابع بخش دیگر استفاده کند. دلیل این موضوع، جلوگیری از عبور حجم درخواستها از مقدار منابع و قدرت پردازشی تعیین شده و درنتیجه از کار افتاد شبکه است.
با مجازی کردن شبکه خود توسط فرد خبره این حوزه، تا میزان زیادی امنیت network تأمین خواهد شد.
مجازیسازی چه مزیتهایی دارد؟
بیایید در ادامه این بخش مزیتهای مجازیسازی را با نگاه موشکافانه بررسی کنیم.
از سخت افزار به شکل موثری استفاده میکند.
اکثر کسب و کارها سرمایه زیادی را صرف راه اندازی سیستمها و سرورهای خود میکنند؛ اما در نهایت فقط بخشی از آنها به شکل موثر مورد استفاده قرار میگیرد. در حالی که با بهکارگیری مجازیسازی میتوان چندین نمونه را روی یک سختافزار ساخت و حداکثر کارایی ممکن را دریافت کرد. به این ترتیب هم در هزینههای سختافزاری صرفهجویی میشود و هم سطح بالاتری از بازدهی فراهم میشود.
همیشه و هرلحظه در دسترس است.
یکی از مزایای قابل توجه مجازیسازی این است که نمونههای مجازی همیشه در دسترس هستند. حتی برای انتقال نمونه از یک سرور به سرور دیگر نیازی به بستن و راهاندازی مجدد فرایندهای در حال اجرا نیست. همچنین تضمین میکند که دادهها در طول این فرایند از بین نروند. حتی اگر قطعیهای برنامهریزی نشده اتفاق بیافتد، حقیقتا اهمیتی ندارد، چراکه نمونه مجازی همیشه و هر لحظه فعال خواهد بود.
بازیابی دادهها را راحتتر میکند.
کپیبرداری، پشتیبانگیری و بازیابی دادهها به لطف نمونههای مجازی که روی سرورهای راه دور مستقر شدهاند، به مراتب راحتتر میشود. ابزارهای جدید هر لحظه از دادهها نسخه پشتیبان میگیرند. بهطوری که میتوان مطمئن بود دادهها در هیچ مقطع زمانی از دست نمیروند. حتی اگر گم شوند یا از بین بروند، از آخرین موقعیتی که روی یک نمونه مجازی ذخیره شده بودند، قابل بازیابی هستند. این مزیت تداوم همیشگی کسب و کار را تضمین میکند و سازمانها به بیشترین کارایی ممکن دست پیدا میکنند.
راهاندازی سریع و آسان است.
راهاندازی سیستمها و سرورهای فیزیکی زمانبر است. ابتدا باید بگردیم دنبال تجهیزاتی که به دردمان بخورد. آنها را بخریم، منتظر باشیم به دستمان برسد، اتصالات را وصل کنیم، سیستم عامل و نرم افزار مورد نیاز را نصب کنیم و برای همه اینها وقت بگذاریم. ممکن است کل این پروسه روزها یا حتی هفتهها طول بکشد. در حالی که با مجازیسازی میشود به سادگی و در عرض چند ثانیه سیستم را راهاندازی کرد.
انتقال به فضای ابری آسانتر است.
بسیاری از سازمانها حتی همین امروز از روشهای قدیمی استفاده میکنند. چراکه تاکنون سرمایهگذاریهای قابل توجهی روی راهاندازی و نگهداری سیستم IT داشتهاند و نمیتوانند یکباره آن را کنار بگذارند. اما با موج دیجیتالی که در حال حاضر فراگیر شده، سازمانها ناچارند دیر یا زود به سمت فضای ابری حرکت کنند. چالشی که اینجا وجود دارد، انتقال این حجم از داده مستقر در محل به فضای ابری است. در حالی که مجازیسازی کار را به مراتب آسانتر میکند؛ چون بیشتر دادهها از قبل روی یک سرور در دسترس هستند و انتقال آنها به فضای ابری دردسر کمتری دارد.
معایب مجازی سازی چیست؟
در کنار مزیتهایی که در بخش قبلی معرفی کردیم، مجازیسازی معایبی هم دارد که نباید نادیده گرفته شوند. از جمله آنها میتوان به موارد زیر اشاره کرد:
سرمایه اولیه زیادی لازم است.
یکی از مهمترین ایرادات این روش که بسیاری از افراد را نسبت به آن دلسرد میکند، سرمایهگذاری اولیه قابل توجه است. اصلا هدف از مجازیسازی این است که هزینههای عملیاتی را کاهش دهد؛ اما در حال حاضر هزینه راهاندازی اولیه سرورها و استوریجها بهمراتب بیشتر از سیستمهای معمولی است. این یعنی سالها زمان میبرد تا شرکت هزینهها را جبران کند و به سود برسد. سازمانها میتوانند در قدمهای اول سراغ دسکتاپهای معمولی بروند و بهمرور به مجازیسازی دسکتاپ روی بیاورند.
ممکن است دادهها در معرض خطر باشند.
کار بر روی نمونههای مجازی در منابع سخت افزاری مشترک، مستلزم اشتراکگذاری دادهها روی منبعی است که توسط شخص ثالث میزبانی میشود. اینکه شخص یا تیم دیگری به دادههای حیاتی سازمان دسترسی دارد، طبیعتا دادهها را در برابر حملات یا دسترسیهای غیرمجاز آسیبپذیر میکند و اگر این ارائه دهنده راه حل امنیتی مناسبی برای حفاظت از دادهها نداشته باشد، بحث امنیت یک چالش بزرگ باقی خواهد ماند.
سیستمهای مجازی، مقیاسپذیری سریع ندارند.
مقیاسپذیری یکی از قابلیتهای خوب مجازیسازی است. اما اگر لازم باشد در مدتزمان کوتاهی اتفاق بیافتد، شدنی نیست. اگر تنظیمات فیزیکی و در محل باشند، بهسرعت میتوان سختافزار جدید را راهاندازی و مجموعه را گستردهتر کرد. در حالی که با مجازیسازی، کسب اطمینان از تمامی نرم افزارهای مورد نیاز، امنیت، فضای ذخیرهسازی کافی و در دسترس بودن منابع کمی وقتگیر و طاقتفرسایت. مخصوصا برای ارائهدهندهای که همیشه درگیر و سرش شلوغ است. حتی اگر با سختی و زمانبر بودن مقیاسپذیری کنار بیاییم، یک چالش دیگر پرداخت هزینه اضافه برای استفاده از منابع بیشتر است.
کارایی سیستم تا حدی افت میکند.
در مجازیسازی منابع به اشتراک گذاشته میشوند. همان منابعی که تا الان در اختیار یک کاربر بود، حالا بین سه یا چهار کاربر به اشتراک گذاشته میشود. مشکل کجاست؟ اینکه گاهی این منابع به طور مساوی به اشتراک گذاشته نمی شوند یا بسته به سختی وظایفی که هر کاربر انجام میدهد، بهنسبت تخصیص پیدا میکنند. هرچه وظایف کاربران پیچیدهتر شود، افت عملکرد سیستم به وضوح قابل مشاهده خواهد بود.
تعداد سرورها ناخواسته زیاد میشود.
گسترش ناخواسته سرور یکی از نگرانیهای مهم مدیران سرور و برخی کاربران است. گفتیم که راه اندازی سرور فیزیکی زمان و منابع زیادی مصرف میکند، در حالی که سرور مجازی را میتوان در عرض چند دقیقه راه اندازی کرد. این باعث میشود کاربران هر بار بهجای استفاده مجدد از سرور مجازی مشابه، بخواهند سرورهای جدید راهاندازی کنند تا «همهچیز را از اول شروع کنند!». حالا تصور کنید مدیریت سرور که باید نهایتا ۵ تا ۶ سرور را مدیریت کند، ناگهان با دستکم ۲۰ سرور روبرو میشود که کاربران ساختهاند. این اتفاق قطعا در روند عملیات اختلال ایجاد میکند. بدتر از این، خاتمه اجباری برخی از سرورها باعث از بین رفتن دادههای کاربران میشود.
VMware NSX چیست؟ برای اطلاعات بیشتر مقاله مورد نظر را مطالعه نمایید.
جمعبندی
هدف اصلی از مجازیسازی یا virtualization استفاده و اجرای چند نوع نرمافزار بهصورت ایزوله و جدا از هم در یک دستگاه واحد بود. یعنی اگر برنامهای برای نصب و اجرا به محیط لینوکس نیاز داشت، بهراحتی و بدون الزام برای خرید دستگاه جدید، بتوان همان برنامه و سیستمعامل را در کنار سیستمعاملی مانند ویندوز در اختیار داشت.
اگر به ارائهدهندگان سرویسهای ابری و میزبانی وب مراجعه کرده باشید، متوجه خواهید شد که این شرکتها از هر نوع سیستمعاملی برای ارائه خدمات خود استفاده میکنند تا طیف بزرگی از مشتریان را جذب کنند. اما به نظر شما برای هر نوع سیستمعامل یک دیتاسنتر مجزا بنا کردهاند؟ خب پاسخ این سوال خیر است. زیرا در این صورت هم هزینههای خرید و نگهداری از این مکانها و منابع سرسامآور خواهد بود و همچنین نمیتوان از منابع موجود حداکثر بهرهوری را داشت.
ازاینرو باید گفت که از مهمترین مزایای مجازی کردن یک منبع، افزایش کارایی و بهرهوری آن در کنار کاهش هزینههای موجود است. امیدواریم تا با مطالعه این مقاله برای سوالاتی که در خصوص virtualization داشتید، پاسخی مناسب پیدا کنید.
دیدگاهتان را بنویسید