مجازی سازی سرور می تواند به مقابله با پراکندگی سرور ، استفاده بهتر از توان محاسباتی سیستم ، کاهش هزینهٔ انرژی وافزایش چابکی و انعطاف پذیری data-center کمک کند.
مجازی سازی سرور یکی از آن تکنولوژیهایی است که در عین سادگی ، تأثیر قابل توجهی بر data-center های یک موسسه بر جای می گذارد .
اگر به جای آنکه بر روی هر سرور تنها یک نمونهٔ سیستم عامل و یک اپلیکیشن را اجرا کنید، بتوانید یک لایهٔ نرم افزاری به نام هایپرویزور را به سیستم اضافه کنید که شما را قادر می سازد که چندین نمونهٔ سیستم عامل و کارهای مربوط به آنها را بر روی یک سرور مجازی واحد اجرا کنید، چه اتفاقی می افتد؟
تاریخچه مجازی سازی
مجازی سازی سرور با این منظور انجام شده است و این ایده به کامپیوترهای IBM mainframes در دههٔ ۱۹۶۰ برمی گردد و با VMware که در اوایل دههٔ ۲۰۰۰ مجازی سازی سرور را برای سرورهای x86 مطرح کرد، مورد توجه قرار گرفت . پس از آن دیگر عرضه کنندگان پلتفرمهای مخصوص به خود را برای مجازی سازی سرور ساخته اند و بطور کلی این صنعت ابزارهای پیشرفته ای برای مدیریت، اتوماسیون و مدیریت ماشین مجازی ایجاد کرده است که نصب ، جابجایی و مدیریت ماشینهای مجازی را آسان تر می کند.
قبل از مجازی سازی سرور شرکت ها با پراکندگی سرور ، با قدرت محاسباتی استفاده نشده ، افزایش هزینهٔ انرژی ، با انجام فرآیندها به صورت دستی و ناکارآمدی و انعطاف پذیری عمومی در محیط های data center خود روبرو بودند. مجازی سازی سرور مجازی تمام این موارد را تغییر داد و به شکل گسترده ای مورد پذیرش کاربران و موسسات قرار گرفت . در حقیقت امروزه به سختی می توان شرکت و موسسه ای را یافت که برای انجام کارهای خود از ماشین مجازی استفاده نکند.
تا جایی که می دانیم هیچ تکنولوژیی وجود ندارد که از هجوم جایگزین بعدی خود در امان باشد ، این جایگزین بعدی برای مجازی سازی سرور، «کوچک شدن» است .
مجازی سازی سرور یک دستگاه واقعی را انتخاب کرده و آن را به بخشهای کوچک تر تقسیم می کند و با این کار امکان اجرای چندین سیستم عامل و چندین اپلیکیشن تمام عیار را با استفاده از قدرت محاسبه ای و رایانشی پایه ای سیستم فراهم می کند.
در موج بعدی و مراحل بعدی رایانش ، سازندگان اپلیکیشنها را به میکروسرویسهای کوچکتری که در کانتینرهای کم حجم و سبک اجرا می شوند، تقسیم می کنند و آنها را با رایانش serverless ( که به نام FaaS هم شناخته می شوند ) آزمایش می کنند. در هر دوی این حالات ماشین مجازی بطور کلی کنار گذاشته می شود و فرمانها بر روی bare metal اجرا می شوند.
مزایای مجازی سازی سرور
مجازی سازی سرور مزایای متعددی دارد که نخستین آنها کاهش تعداد سرور های اختصاصی است . شما می توانید چندین برنامه را بر روی یک قطعه سخت افزاری ترکیب کنید و در نتیجه تعداد کل سرورهای مورد نیاز در data center را کاهش دهید. تعداد کمتر سرور مجازی ، ردیفهای کمتر و تجهیزات شبکه ای کمتر همه و همه به معنای صرفه جویی هزینه های همه چیز از فضای فیزیکی گرفته تا هزینه های نگهداری و تا هزینه های مربوط به انجام تهویهٔ محیط هستند.
مجازی سازی سرور نیاز به سرمایه گذاری برای تهیهٔ سخت افزار جدید را کاهش می دهد و شما را از تعویض و جدیدکردن دوره ای سخت افزار ها خلاص می کند . شا می توانید سرورهایی را که به علت کاهش تعداد سرور های اختصاصی ، بدون استفاده شده اند ، مجددا نصب کنید و مود استفاده قرار دهید.
آیا زمانی را که مسئولین data center مجبور بودند نیازهای خود را به صورت دستی تأمین کنند، به خاطر می آورید ؟ با استفاده از پیشرفتهای حاصل از به کارگیری مجازی سازی سرور می توان ظرف چند ثانیه یک ماشین مجازی را در سیستم فعال کرد و در صورت تغییر خواسته ها و نیازهای شرکت، تنها با لمس یک دکمه چند فایل را با یکدیگر از محیطی به محیط دیگر منتقل کرد .
همچنین مجازی سازی سرور قادر است ویژگیهایی همچون قابلیت دسترسی، امکان جایگزینی، سرعت ، قابلیت توسعه، چابکی و انعطاف پذیری را که امروزه شرکت ها و موسسات تجاری مبتنی بر وب نیاز فراوانی به آنها دارند، تأمین نماید.
و مجازی سازی سرور تکنولوژی اساسی و محوری است که عرضه کنندگان رایانش ابری را قادر می سازد تا خدمات خود را به کاربرانشان ارائه دهند. زمانی که یک مشتری سرویس IaaS را به فروشندهٔ سرویسهای ابری سفارش می دهد ، شرکت عرضه کنندهٔ این سرویسها کار را با یک ماشین مجازی آغاز می کند و سپس ویژگیهای ذخیره سازی ، مدیریتی و امنیتی مورد نیاز را به کار انتخاب شده اضافه می کند.
انواع مختلف مجازی سازی سرور
در دنیای مجازی سازی سرور ، سرور مجازی در حقیقت نقش هاست را بر عهده دارد و سیستم عامل هاست ( اصلی ) بر روی آن اجرا می شود . هر یک از ماشینهای مجازی یک سرور مهمان محسوب می شوند و سیستم عاملهای مهمان بر روی آنها اجرا می شوند . این سرور های مهمان مجزا از یکدیگرند.
- در مجازی سازی استاندارد مبتنی بر هایپرویزور، هایپرویزور یا ناظر ماشین مجازی (VMM) مابین سیستم عامل هاست و لایهٔ سخت افزاری زیرین قرار می گیرد و منابع لازم برای سیستم عاملهای مهمان را فراهم می کند.
- مجازی سازی کامل و Para virtualization سیستم عامل مهمان را قبل از نصب بر روی ماشین مجازی تعدیل و اصلاح می کنند . این کار سبب افزایش عملکرد می شود زیرا سیستم عامل اصلاح شده بطور مستقیم با هایپرویزور ارتباط برقرار می کند و در نتیجه میزان رقابت احتمالی این دو سیستم به حداقل می رسد .
- مجازی سازی به کمک سخت افزار نیز سعی بر کاهش بار کاری هایپرویزور دارد، اما این کار را از طریق ضمائم سخت افزاری و نه به وسیلهٔ اصلاحات نرم افزاری انجام می دهد.
- در مجازی سازی در سطح کرنل به جای استفاده از هایپرویزور ، نسخهٔ جداگانه ای از کرنل لینوکس اجرا می شود . این کار با استفاده از یکدستگاه driver که برای برقراری ارتباط میان کرنل لینوکس اصلی و ماشینهای مجازی به کار می رود سبب تسهیل اجرای چند ماشین مجازی بر روی یک هاست واحد می شود.
- سرانجام در مجازی سازی سیستم عامل یا مجازی سازی دز سطح سیستم می توان چند محیط متفاوت را که از نظر منطقی جدا از یکدیگرند بر روی یک کرنل سیستم عامل واحد اجرا کرد . در مجازی سازی در سطح سیستم تمام ماشینهای مجازی باید بطور شریکی از یک نسخه از سیستم عامل استفاده کنند ، اما در مجازی سازی سرور این امکان وجود دارد که ماشینهای مجازی متفاوت سیستم عاملهای متفاوتی داشته باشند.
ماشین های مجازی و کانتینرها
Docker و کوبرنتیز گوگل دو عامل اصلی فعال کنندهٔ اقدامات کانتینری کردن سیستم هستند . Docker یک ابزار محبوب برای راه اندازی و فعال کردن کانتینر است و کوبرنتیز به مدیریت چند کانتینر در کنار یکدیگر در سیستم کمک می کند. کانتینرها محیطهای مستقل اجرای کدها و فرمانها هستند که به صورت اشتراکی از کرنل سیستم عامل هاست استفاده می کنند.
کانتینرها از ماشینهای مجازی روان تر و سبک تر هستند ، زیرا آنها به نوعی با ایجاد یک راه میان بر سیستم عاملهای مهمان تکراری و اضافی و بار اضافی مربوط به راه اندازی سیستم را دور می زنند . برنامه نویسان می توانند به اندازهٔ شش تا هشت برابر ظرفیت یک ماشین مجازی از کانتینرها بر روی یک سخت افزار استفاده کنند.
کانتینرها هم نقاط ضعف و ایرادات مربوط به خود را دارند . با توجه به اینکه کانتینرها تکنولوژی نسبتا جدیدی هستند، هنوز آنگونه که باید و شاید ابزارهای مدیریتی کامل و جامعی برای آنها وجود ندارد و بنابراین لازم است که اقدامات مدیریتی و نگهداری بسیاری برای آنها انجام شود . علاوه بر این هنوز نگرانیهایی در خصوص امنیت کانتینرها وجود دارد.
در ماشینهای مجازی می توان به راحتی با استفاده از image های مهمان فایلهای کاری را از یک هاست به هاست دیگر منتقل کرد ، اما در ماشینهای bare metal ارتقاء سیستم و یا جابجایی فایل ها مشکل تر است.
ماشین های مجازی و رایانش serverless
در محیط سنتی سرور ابری IaaS ، مشتریان ابتدا ماشین مجازی ، ابزار ذخیره سازی ، پایگاه داده ها و ابزارهای امنیتی و مدیریتی مربوطه را تهیه می کنند ، سپس برنامه ها را بر روی ماشینهای مجازی بارگذاری می کنند.
در رایانش serverless برنامه نویسان تنها کدها و فرمان ها را می نویسند و باقی کارها بر عهدهٔ عرضه کنندگان سرویس های سرور ابری است . برنامه نویس و سازنده هیچ اجباری ندارد که به فکر سرور مجازی ، سیستم عامل ، تهیهٔ منابع و یا مدیریت سیستم باشد . البته یک سرور مجازی وجود دارد که کدها را اجرا می کند اما مسئولیت آن بر عهدهٔ عرضه کنندهٔ سرویس های سرور ابری است.
کدها به جای اجرای یک اپلیکیشن یکپارچه، به عملکردهای اختصاصی و جزئی تر تقسیم می شوند . وقتی اتفاقی سبب فعال شدن آن عملکرد خاص می شود سرویس serverless ـ مثلا Amazon’s Lambda ـ کد مربوط به آن عملکرد را اجرا می کند . ارائه دهندگان سرویسهای serverless بر مبنای عملکرد از مشتریان خود هزینه دریافت می کنند.
وقتی از شیوهٔ کانتینر / میکروسرویس استفاده می کنید ، رایانش serverless لایهٔ ماشنهای مجازی را دور می زند و عملکرد خود را بر روی bare metal اجرا می کند . البته رایانش serverless در این جایگاه هنوز یک تکنولوژی نسبتا نوپا محسوب می شود و کاربردهای محدودی دارد.
آینده مجازی سازی سرور مجازی
با اینکه کانتینرها فعال هستند و علاقه به رایانش serverless در حال افزایش است ، واقعیت این است که مجازی سازی سرور یک تکنولوژی قدرتمند است که اکثریت قریب به اتفاق برنامه های سازمانی را تقویت می کند – برخی تخمین می زنند که حدود ۹۰٪ ظرفیت ماشینهای مجازی تکمیل شده است .
تصور اینکه شرکتی اپلیکیشنهایی را که بدون مشکل و به راحتی بر روی ماشینهای مجازی اجرا می شوند به کانتینرها یا پلتفرمهای serverless منتقل کند ، کار چندان راحتی نیست. کاربرانی که از محیطهای مختلف و غیرهمگن استفاده می کنند احتمالا هنوز از ماشینهای مجازی استفاده خواهند کرد زیرا کانتینرها باید از یک سیستم عامل واحد استفاده کنند و نمی توانند هم زمان از ویندوز و لینوکس استفاده نمایند.
اما در حال حاضر برنامه سازان برای برنامه های جدید که با جدیدترین روش های DevOps وشیوه های چالاک نوین ساخته می شوند ، گزینه هایی در اختیار دارند. با پیشرفتهای جدید، برنامه سازان بر حسب مورد تصمیم می گیرند که فایلهای خود را در یک ماشین مجازی سنتی، در یک کانتینر و یا در یک محیط serverless اجرا کنند .