دانشجوی مهندسی کامپیوتر ;)
Virtualization | مجازی سازی
چکیده
یکی از مفاهیمی که در دهه اخیر در علوم کامپیوتر مورد بحث و چالش قرار گرفته است، بحث مجازی سازی است که مهم ترین دلایل آن بحث صرفه جویی در هزینه ی خرید و نگهداری سخت افزار ها و مصرف کم تر انرژی و توان و همین طور در بعضی موارد افزایش سرعت می باشد. در این مقاله به بررسی اجمالی مفاهیم اولیه مجازی سازی و همین طور نمونه های مختلف آن می پردازیم و در انتها مزایای اصلی استفاده از این روش را بیان می کنیم.
1. آشنایی با مجازی سازی
در ابتدا لازم است تا با مفهوم «مجازیسازی» به صورت خاص آشنا شویم و سپس به کاربرد ها و انواع آن در صنایع مختلف بپردازیم.
مجازی سازی به معنای ایجاد محیط های متعدد شبیه سازی شده (به صورت نرم افزاری) و یا منابع تخصیص داده شده از یک یا چند منبع سخت افزاری محدود است. همانطور که از تعریف این مفهوم برمیآید، مهمترین دغدغهی مورد نظر در این حوزه بحث محدودیت های ایجاد شده ناشی از سخت افزار مانند هزینه، مصرف و … است که باعث شده است این مورد در دنیای تکنولوژی مورد استفادهی بسیار قرار گیرد. طبق نکتهی بیان شده هم به صورت منطقی هرجا که این هزینه (ناشی از سخت افزار) بیشتر باشد کاربرد و پیاده سازی این تکنولوژی هم بیشتر صورت میگیرد؛ مانند شرکت های بزرگ که به دنبال بهره وری بالا از منابع محدود هستند.
2. مفهوم Hypervisor
مجازی سازی به وسیله Hypervisor ها امکان پذیر می شود. به صورت کلی مجموعه ای از نرم افزار ها هستند که بر روی سخت افزار ما اجرا شده و وظیفه کنترل منابع سخت افزاری و تخصیص آن ها را به ماشین های مجازی (در بخش 4 توضیح خواهیم داد) را دارند که به دو دسته کلی type1 و type2 تقسیم بندی می شوند.
1.2. معرفی Type 1
در این دسته که به Bare Metal نیز معروف هستند، hypervisor به صورت مستقیم روی سخت افزار نصب می شود. سپس تمامی ماشین های مجازی بر روی آن نصب می شوند و Hypervisor صرفا مسئولیت مدیریت منابع و تخصیص آن ها به ماشین های مجازی را دارد. این روش معمول ترین روش استفاده از مجازی سازی است و در بازار بیشتر مشاهده می شود. (عکس شماره 1 این نوع را نمایش می دهد.)
این روش بسیار امن است و تاخیر کم تری نسبت به دسته دوم و همین طور به حالت فیزیکی دارد.
از جمله معروف ترین Hypervisor های این دسته عبارت است از VMware [vSphere / ESXi]، Microsoft Hyper-V، Citrix XenServer، KVM.
2.2. معرفی Type 2
در این دسته که به Hosted نیز معروف هستند، Hypervisor به صورت غیرمستقیم روی سخت افزار نصب می شود، به این معنی که بین Hypervisor و سخت افزار یک سیستم عامل که به Host OS معروف است قرار می گیرد. این روش غیرمتداول است و بیشتر در بین End-User ها کاربرد دارد و با کامپیوتر های شخصی اجرا می شود. (در عکس شماره 2 مشاهده می کنید.)
در این روش Host OS برای کاربر به صورت مستقیم قابل استفاده است.
این روش نیز همانند دسته اول امن می باشد، اما تاخیر بیشتری نسبت به دسته اول دارد ولی باز هم نسبت به حالت فیزیکی تاخیر کم تری دارد.
از جمله معروف ترین Hypervisor های این دسته عبارت است از VMware WorkStationو Oracle Virtual box که بر روی تمامی سیتم عامل ها قابل نصب هستند و Parallels که در سیستم عامل های مک قابل استفاده است.
3. مفهوم ماشین مجازی (VM)
ماشین مجازی یا همان Virtual Machine مجموعه ای از نرم افزار ها هستند که بر روی Hypervisor نصب می شوند.
دقیقا مثل سیستم عامل هایی که روی یک سخت افزار نصب می شوند، از ماشین های مجازی به عنوان محیطی شبیه سازی شده همانند سخت افزار اصلی، برای نصب سیستم عامل ها استفاده می شود. نکته اساسی این است که تمامی ماشین های مجازی از یک دیگر مستقل هستند و طبیعتا به تبع این موضوع تمامی سیستم عامل های نصب شده روی ماشین های مجازی نیز از یک دیگر مستقل خواهند بود. به دلیل همین مستقل بودن، تمامی ماشین های مجازی قابلیت حمل دارند، یعنی می توان ماشین مجازی را همانند یک فایل از سیستمی کپی و به سیستم دیگر منتقل کرد.
4. انواع استفاده از مجازی سازی
مجازی سازی به عنوان یک تکنولوژی در انواع و سطوح مختفی از لایه های کامپیوتری استفاده و پیاده میشود که در زیر 4 نوع از آنها توضیح داده شده است:
1.4. مجازیسازی سرور (Server Virtualization)
این نوع از مجازی سازی راهکاری است که با استفاده از افزودن یک لایه انتزاعی، منابع یک سرور از جمله سیستم عاملها، پروسهها و ... را اصطلاحاً مخفی سازی میکند. (از دید کاربر) به عبارت دیگر، با اختصاص منابع سرور که در واقعیت به صورت سخت افزار هستند به صورت نرم افزاری، به کاربران این طور القا میشود که این سرویس دارای همان منابعی هست که به صورت نرم افزاری اختصاص داده شده است.
مجازی سازی سرور دارای انواع مختلفی است:
1.1.4. مجازی سازی کامل
این نوع - که بیشتر از اشاره به مجازی سازی سرور همین نوع است - همانطور که از نام آن برمیآید به معنای پیاده سازی تکنیک شبیه سازی کامل سخت افزار به صورت نرم افزار است. به صورتی که کاربر تشخیص نمیدهد که منبع مورد استفادهاش نرم افزاری است. (مفهوم انزوا – Isolation)
2.1.4. مجازی سازی جزئی (Para-Virtualization)
تکنیکی که باعث شبیه سازی قسمتی از سخت افزار لایه زیرین به صورت نرم افزاری میشود. بنابراین تنها قسمتی از قابلیتهای سخت افزار مانند آدرس دهی فضای حافظه به صورت مجازی پیاده سازی میشود که با وجود راحتتر کردن امکان پیادهسازی باعث محدودیت نیز میشود.
3.1.4. مجازی سازی سیستم عامل
همانطو که از نام این نوع نیز میتوان حدس زد، مجازی سازی در بستر سیستم عاملِ پیاده شده بر روی سخت افزار به جای استفاده از Hypervisor صورت میگیرد.به این معنا که سیستم عامل نصب شده تمامی وظایف Hypervisor را بر عهده میگیرد و در عوض تمامی VMها محدود به اجرا در همین سیستم عامل هستند.
2.4. مجازی سازی شبکه های کامپیوتری (Network Virtualization)
مباحث شبکه های کامپیوتری به طور کلی متشکل از مفاهیمی است که بر روی سختافزارهایی پیاده سازی شده است. در مجازی سازی شبکه، هدف این است که اتصال بین مفاهیم شبکه و سخت افزار قطع شده و در عوض آن مفاهیم به صورت نرم افزاری تعریف و پیاده سازی گردد.
از جمله مصداق های این تکنیک ایجاد قطعاتی مجازی مانند vSwitch، vRouter، vNIC و … است که هر کدام نظیر مورد سخت افزاری خود میباشد. به عنوان مثال در تصویر شماره 3 تشکیل شبکهای مجازی از همین قطعات را مشاهده میکنید.
3.4. مجازی سازی حافظه (Storage Virtualization)
نوع سوم مجازی سازی نیز مختص به ساختار های حافظه ای است. مانند تکنیک های گذشته در این قسمت هم هدف پیاده سازی سخت افزارهای مربوط به حافظه به صورت مجازی و نرم افزاری است که با توجه به لایه های مختلف حافظه در 4 سطح Block، Disk، Tape و File پیاده و تقسیم میشود.
3.4. مجازی سازی نرم افزار (Application Virtualization)
همانطور که گفته شد تکنولوژی مجازی سازی با اضافه کردن یک لایه انتزاعی به مجموعه لایه های سیستم جهت مخفی کردن لایه سخت افزار صورت میگیرد. همین مفهوم در مورد نرم افزار به این صورت است که نرم افزار مورد نظر از سمت سیستم عامل مخفی شده و این طور به نظر میرسد که به طور مستقیم در حال ارتباط با سخت افزار است. با این توضیح مجازی سازی نرم افزار با مجازی سازی دسکتاپ که آن هم با افزودن مفهوم انتزاع به محیط دسکتاپ صورت میگیرد پیوند عمیقی دارد و در واقع هم نوع هستند. (البته در برخی متون جدا در نظر گرفته شدهاند) تکنیکی که به کار میرود سبب میشود تا نرم افزار مورد نظر به جای اجرا توسط اجزای مختلف سیستم عامل، به صورت مستقل اجرا شود و در نتیجه نرم افزارهای گوناگون که به صورت عادی امکان اجرای همزمان آنها به دلیل محدودیت در سیستم عامل وجود نداشت، ممکن میشود.
5. مزیت های استفاده از مجازی سازی
1.5. بهره برداری کامل و بیشتر(Utilization)
یکی از مهم ترین نکاتی که با استفاده از مجازی سازی می توان به آن دست یافت، افزایش بهره وری از سخت افزار سیستم می باشد؛ چرا که با استفاده از مجازی سازی، چندین سیستم عامل روی سخت افزار شروع به کار می کنند و هم از CPU و هم از Memory و دیگر منابع سخت افزاری به صورت بهتری استفاده می شود و ماکسیمم استفاده صورت می گیرد.
به این موضوع از دو جهت می توان نگاه کرد؛ نگاه اول این که در داخل دیتاسنتر ها و سرور سنتر ها و... می توان با استفاده از مجازی سازی، از ماکسیمم توان سیستم ها استفاده نمود. نگاه دوم از سمت کاربر است که، کاربر به جای خرید یک سخت افزار بالاتر از سطح نیاز خودش، می تواند با استفاده از روش هایی که در قسمت 5 توضیح داده شد، به صورت بهتری از توان سرور های دیگر استفاده و نیاز های خود را برطرف کند.
2.5. قابلیت جابه جایی آسان (Easy Portable)
یکی دیگر از قابلیت های مهم دیگر که به دلیل مجازی بودن برای ما فراهم می شود، قابلیت جابه جایی آسان سیستم عامل های مجازی می باشد. یعنی به صورت یک فایل عادی می توان کل سیستم عامل را از یک سیستم کپی کرد و به سیستم دیگر منتقل کرد.
3.5. ایزوله بودن هر ماشین مجازی (Isolated VMs)
با توجه به ماهیت مجازی سازی، تمامی ماشین های مجازی از یک دیگر به صورت کامل مستقل و ایزوله هستند. این قابلیت را می توان یکی از مزایای مجازی سازی به حساب آورد؛ چرا که شرایط طبیعی ای را برای ما فراهم می کند و می تواند همانند محیط واقعی شرایط را برای ما شبیه سازی کند.
یکی از مزایا این قابلیت این است که ابتداً امنیت ما را تامین می کند و در بسیاری از موارد فایل های خطرناک و مشکوک را می توان با استفاده از سیستم عامل های مجازی مورد بررسی قرار داد و یا عملیات ها و یا برنامه های مشکوک و یا آزمایش نشده را با استفاده از این سیستم عامل های مجازی اجرا کرد تا به منابع اصلی سیستم آسیبی وارد نکند. مزایای دیگری که برای این قابلیت می توان نام برد، بحث جداسازی کاربر ها و سیستم ها از هم می باشد و ایجاد این قابلیت که بتوان با استفاده از یک سیستم، چندین یوزر و چندین سیستم عامل کاملا مجزا (برای مواردی که در قسمت 5 به آن پرداختیم) پیاده سازی کرد؛ چرا که اگر این ایزوله بودن نبود، نمی توانسیتم چندین سیستم عامل بی ربط به یکدیگر را در کنار هم اجرا نمود.
4.5. قابلیت اتکای بالا و امنیت و کاهش زمان خاموش بودن (High Reliability and Safety)
با توجه به این که ماشین های مجازی همانند فایل هستند، در صورتی که یکی از ماشین ها دچار مشکل شود؛ به راحتی می توان ماشین دیگری را جایگزین آن ها کرد.
هم به این شکل که یک ماشین مجازی up برای جایگزین کردن با ماشین دچار مشکل شده وجود داشته باشد، و حتی اگر up هم نباشد، می توان به راحتی فایل ماشین مجازی جایگزین را به سرعت اجرا کرد و جایگزین ماشین قبلی نمود.
5.5. چالاکی و سرعت (Agility and Speed)
یکی از موارد دیگر که مزیت مناسبی برای مجازی سازی می باشد، بحث سرعت و چالاکی این سیستم هاست، چرا که به دلیل این که ارتباط چند ماشین مجازی که روی یک سرور حضور دارند با یکدیگری به صورت مستقیم می تواند برقرار شود و از طریق ارتباطات CPU می توانند ارسال اطلاعات به یکدیگری داشته باشند؛ سرعت ارسال و دریافت اطلاعات بسیار بالاتر از شبکه های واقعی می باشد.
6.5. صرفه جویی در توان و انرژی (Save Energy and Power )
به دلیل این که سیستم های مجازی نسبت به سیستم های غیرمجازی از منابع کم تری استفاده می کنند و تعداد سرور ها و ماشین های کم تر فیزیکی ای وجود دارد، نمودار تفاوت میزان مصرف انرژی در حالت فیزیکی و حالت مجازی بسیار متفاوت است و میزان انرژی و توانی که در حالت مجازی مصرف می شود با توجه به بحث بهره وری مناسب از سیستم ها، بسیار کم تر از حالت فیزیکی می باشد.
7.5. صرفه جویی در هزینه (Save Cost)
با توجه به این که در حالت مجازی تعداد سرور ها و سیستم های خریداری شده به صورت نمایی کاهش می یابد و همین طور توان و انرژی مصرفی کاهش می یابد و مواردی از قبیل خنک کردن فضا، میزان مساحت فضای مورد نیاز و … کاهش می یابد، به تبع همین موضوع هزینه های دیتاسنتر ها و سرورسنتر ها نیز کاهش چشم گیری پیدا می کند.
منابع
1. VMware Co, https://www.vmware.com/solutions/virtualization.html
2. Read Hat Co, https://www.redhat.com/en/topics/virtualization/what-is-virtualization
3. Wikipedia contributors. (2020, May 25). Virtualization. In Wikipedia, The Free Encyclopedia. Retrieved 15:56, May 25, 2020, from https://en.wikipedia.org/w/index.php?title=Virtualization&oldid=958694593
4. IBM cloud team, https://www.youtube.com/watch?v=FZR0rG3HKIk
محمدحسین موثقی نیا و محمدحسین ولیخانی
بهار 1399
مطلبی دیگر از این انتشارات
ترجمه مسئله های روز دوم AoC 2021
مطلبی دیگر از این انتشارات
از همین امروز شروع کنید و برای زندگی خود معنا بسازید!
مطلبی دیگر از این انتشارات
تاخیر ها در برنامه نویسی