مفهوم مجازی سازی مدتی است که وجود داشته و فناوری های کاملاً مدبرانه و مقرون به صرفه ای را به اثبات رسانده است. تیم های عملیاتی و کاربران دسکتاپ به طور یکسان میتوانند چندین ماشین مجازی را داشته باشند و مجموعه گسترده ای از سیستم عامل ها را بدون نیاز به نصب هر کدام بر روی یک سرور فیزیکی جداگانه اجرا کنند. ماشین های مجازی با استفاده از هایپروایزر ایجاد میشوند. یکی از این Hypervisorهای رایج KVM نام دارد که رایگان و منبع باز است.
پیش از آن که به پاسخ به سوال KVM چیست و معرفی مجازی ساز KVM بپردازیم بیایید کمی بیشتر در مورد هایپروایزرها و مجازی سازهای مختلف اطلاعات کسب کنیم.
هایپروایزر (Hypervisor)
یک نرم افزار لایه میانی که بین یک سرور اختصاصی فیزیکی و یک سیستم عامل اجرا میشود و به چندین سیستم عامل و برنامه اجازه میدهد مجموعه ای از سخت افزار فیزیکی اولیه را به اشتراک بگذارند. Hypervisor را میتوان به عنوان یک سیستم عامل “متا” در محیط مجازی در نظر گرفت که میتواند دسترسی به تمام دستگاه های فیزیکی و ماشین های مجازی روی سرور را هماهنگ کند، بنابراین به آن مانیتور ماشین مجازی (VMM) نیز میگویند. هنگامی که سرور، Hypervisor را راه اندازی و اجرا میکند، مقدار مناسبی از حافظه، CPU، شبکه و منابع دیسک را به هر ماشین مجازی اختصاص میدهد و سیستم عامل کلاینت تمام ماشین های مجازی را بارگذاری میکند.
در واقع، هایپروایزر برای سیستم عامل همان چیزی است که سیستم عامل برای processها انجام میدهد. آنها یک پلت فرم سخت افزار مجازی مستقل برای اجرا فراهم میکنند که به نوبه خود دسترسی مجازی کامل به ماشین زیرین را فراهم میکند. اما همه هایپروایزرها یکسان نیستند، که چیز خوبی است؛ زیرا لینوکس به انعطاف پذیری و انتخاب پذیری معروف است.
انواع هایپروایزرهای رایج :
نوع اول-(Bare-metal) : به این معنی است که VMM مستقیماً روی لایه سخت افزار عمل میکند تا منابع سخت افزاری زیرین را استفاده و مدیریت کند. سیستم عامل مهمان(Guest OS) از طریق VMM به منابع سخت افزاری واقعی دسترسی دارد. VMM به عنوان اپراتور مستقیم سخت افزار اصلی، درایور سخت افزار را دارد.
نوع دوم(Hosted) به این معنی است که سیستم عامل میزبان(Host OS) دیگری تحت VMM وجود دارد. از آنجایی که سیستم عامل مهمان باید از طریق سیستم عامل میزبان به سخت افزار دسترسی داشته باشد، سربار عملکرد اضافی را به همراه دارد، اما میتواند از درایورهای دستگاه و خدمات اساسی ارائه شده توسط سیستم عامل میزبان برای مدیریت حافظه، زمان بندی فرآیند و مدیریت منابع استفاده کامل کند.
مجازی سازی
مجازیسازی فرآیندی است که در آن سختافزار فیزیکی زیربنایی پنهان میشود تا سیستمعاملهای متعدد بتوانند بهطور شفاف از آن استفاده کرده و به اشتراک بگذارند. نام رایج دیگر این معماری مجازی سازی پلتفرم است. در معماری لایهای معمولی، لایهای که مجازیسازی پلتفرم را فراهم میکند، Hypervisor نامیده میشود. سیستم عامل های مهمان ماشین های مجازی (VMS) نامیده می شوند زیرا سخت افزار به طور خاص برای این VMS مجازی سازی شده است.
در اصل بوسیله این تکنولوژی میتوانید به طور همزمان چندین سیستم عامل را روی یک سرور(سخت افزاری) راهاندازی کنید. به بیانی دیگر، با نصب مجازی ساز بر روی یک سرور فیزیکی، می توانید چندین سرور مجازی ایجاد کنید. در واقع استفاده از مجازی ساز، روش منطقی برای تقسیم منابع سیستم است.
دلایل زیادی از جمله صرفه جویی در زمان، مدیریت بهتر، افزایش امنیت اطلاعات، افزایش کیفیت سرویس نرم افزارها و غیره مسبب استفاده کاربران از مجازی سازها است. از جمله این مجازی سازها میتوانیم به اسامی معتبر و مشهوری همچون موارد زیر اشاره کنیم.
- VMWARE
- KVM
- CITRIX
- MICROSOFT
- RED HAT
- CISCO
- XEN
- OpenVZ
امروزه اغلب زیر ساخت های مجازی سازی بر پایه لینوکس هستند. البته مجازی سازی ویندوز با نام “Hyper V” نیز وجود دارد، ولی همانند سایر رقبای خود کارایی چندانی ندارد. از جمله پرکاربردترین زیرساختهای مجازی سازی که شرکت ها از آن ها استفاده میکنند، VMWARE و KVM هستند. در ادامه هر یک را بررسی خواهیم کرد.
VMWARE
معروف ترین و محبوبترین زیرساخت برای مجازی سازی است. بیشتر شرکت های هاستینگ از این زیرساخت استفاده می کنند. بسیاری از سازمان ها و شرکت ها هم از همین زیرساخت استفاده میکنند. زیر ساخت VMWARE در کشور ما رایگان نیست به همین علت از محصولات آن در ایران همیشه به صورت کرک شده استفاده میکنیم. محصول مجازی ساز این شرکت “ESXi” دارد که به صورت یک سیستم عامل ارائه شده است.
KVM
مجازی ساز “KVM” (ماشین مجازی مبتنی بر هسته) بر پایه لینوکس و کاملا رایگان است. اگر لینوکس ۲٫۶٫۲۰ یا جدیدتر دارید، KVM را به صورت پیشفرض و خودکار دارید. این تکنولوژی اولین بار در سال ۲۰۰۶ اعلام شد و یک سال بعد در نسخه اصلی هسته لینوکس ادغام شد. لازم به ذکر است که redhat، یکی از توسعه دهنده های اصلی مجازی ساز KVM است.
همچنین KVM از مجازی سازی تودرتو پشتیبانی میکند که به کاربران امکان می دهد یک VM را در داخل ماشین مجازی دیگر اجرا کنند. بهتر است این را مدنظر داشته باشید که KVM hypervisor یک راه حل کامل مجازی سازی لینوکس بر روی سختافزارهای x86 میباشد.
هسته استاندارد لینوکس تعبیه شده با ماژول KVM میتواند GuestOS بارگذاری شده از طریق ابزارهای KVM را پشتیبانی کند. بنابراین، تحت چنین پلتفرم سیستم عاملی، لایه مجازی سازی VMM مستقیماً روی لایه سخت افزار فیزیکی رایانه قرار دارد، اما هیچ لایه سیستم عامل مستقل برای هاست وجود ندارد. در چنین محیطی، سیستم عامل هاست یک VMM است.
در واقع هر GuestOS ایجاد شده توسط KVM یک فرآیند واحد(process) در سیستم عامل هاست (یا VMM) است.
همچنین مجازی سازی KVM نیاز به پشتیبانی سخت افزاری دارد (مانند فناوری Intel VT یا AMD V Technology) که مجازی سازی کامل مبتنی بر سخت افزار است.
ویژگی های KVM
برخی از ویژگیهای کلیدی آن شامل:
- پشتیبانی از طیف گستردهای از پلتفرمهای سختافزاری لینوکس (سختافزار x86 با پسوند مجازیسازی (Intel VT یا AMD-V))،
- امنیت VM و ایزولهسازی پیشرفتهتر را با استفاده از SELinux
- مجازیسازی امن (sVirt)
- پشتیبانی از live migration(مهاجرت یک VM در حال اجرا بین میزبانهای فیزیکی)
- قابلیت افزایش بلادرنگ منابع سرور (ram,cpu,hard)
مزایای KVM
- پشتیبانی از KSM یا Kernel Same-page Merging برای حذف صفحات حافظه تکراری و کاهش حافظه مصرفی
- امنیت عالی : KVM از ترکیبی از لینوکس پیشرفته امنیتی (SELinux) و مجازی سازی امن (sVirt) برای امنیت و انزوا پیشرفته VM استفاده میکند.
- پشتیبانی از سیستم عامل ویندوز و لینوکس
- استفاده گسترده از KVM در میان نرم افزارهای اتوماسیون open source
- عدم وجود overseeing
- KVM میتواند از هرگونه حافظه رایج پشتیبانی شده توسط لینوکس ، از جمله برخی از Local Diskها و ذخیره سازهای متصل به شبکه (NAS) استفاده کند.
- پشتیبانی از FILE SYSTEM به منظور رویت imageهای ماشین مجازیها توسط هاست های مختلف
معایب KVM:
- پیچیدگی فرآیند پیکربندی به نسبت سایر سیستم های مجازی ساز
- تخصیص منابع باعث محدودیت تعداد VMها با توجه به سخت افزار مورد استفاده خواهد بود.
نصب و راه اندازی KVM
نکتهای که در مورد این فناوری باید به آن دقت کنید، این است که برای استفاده از آن در لینوکس نیازی به نرمافزارهای جانبی ندارید. برای نصب و راه اندازی KVM تنها به نسخه ای از لینوکس نیاز دارید که بعد از 2007 منتشر شده باشد و روی سخت افزار X86 باید نصب شود که از قابلیت های مجازی سازی پشتیبانی کند. همچنین شما میتوانید از KVM برای اجرای ویندوز و لینوکس در ماشینهای مجازی استفاده کنید.
پیش نیازها
- یک CPU با قابلیت پشتیبانی از فناوری مجازی سازی
- دانلود و نصب KVM
- پیکربندی
تمامی این مراحل را به تفکیک و با جزئیات در مقاله “نصب و راه اندازی KVM” به شما همراهان همیشگی مبین هاست آموزش خواهیم داد.
تقاوت kvm و QEMU
صحبت در مورد KVM، صحبت در مورد فناوری مجازی سازی یا در مورد ماژول های هسته (kvm.ko، kvm-intel.ko یا kvm-amd-ko) است. گاهی اوقات از KVM به عنوان ماشین مجازی یاد میشود، اما این درست نیست، زیرا KVM سخت افزار مجازی را ارائه نمیدهد. اینجاست که QEMU به بازی میآید.
QEMU یک VMM روی یک میزبان است که CPU را از طریق تبدیل باینری پویا شبیهسازی میکند و یک سری مدلهای سختافزاری را ارائه میکند تا سیستمعامل Guest فکر کند که مستقیماً با سختافزار سروکار دارد. در واقع، آنها با سخت افزار شبیه سازی شده توسط QEMU سر و کار دارند و QEMU این دستورالعمل ها را برای عملیات به سخت افزار واقعی ترجمه می کند. از طریق این حالت، سیستم عامل Guest میتواند با هارد دیسک، کارت شبکه، CPU، CD-ROM، دستگاه صوتی و دستگاه USB موجود در هاست تعامل داشته باشد. با این حال، از آنجایی که تمام دستورالعمل ها باید توسط QEMU ترجمه شوند، عملکرد ضعیف خواهد بود.
برای کسب اطلاعات بیشتر میتوانید به این سایت qemu مراجعه کنید.
جمع بندی:
در ابتدای این مقاله سعی کردیم به طور کامل در مورد هایپروایزرها و مفهوم مجازی سازی صحبت کنیم. علاوه بر آن آموختیم که KVM یا همان Kernel-based Virtual Machine یک فناوری مجازی سازی متن باز مبتنی بر لینوکس است که اجازه میدهد از هسته لینوکس به عنوان Hypervisor استفاده کنیم. همچنین به بررسی ویژگی های شاخص آن از جمله مباحث امنیتی، مسائل مربوط به ذخیره سازی و غیره پرداختیم.
امیدواریم مقاله آشنایی با مجازی ساز KVM برای شما عزیزان مفید بوده باشد.
مشتاقانه منتظر به اشتراک گذاری نظرات،انتقادات و پرسشهای شما همراهان همیشگی مبین هاست با ما هستیم.