ماشین مجازی مبتنی بر کرنل (KVM) یک فناوری مجازی سازی متن باز است که بهصورت داخلی در Linux یکپارچه شده و وجود دارد. به طور خاص، KVM به شما امکان میدهد لینوکس را به یک هایپروایزر تبدیل کنید که به یک ماشین میزبان اجازه میدهد چندین محیط مجازی مجزا به نام مهمان یا ماشین مجازی (VM) را اجرا کند.
KVM بخشی از لینوکس است. اگر لینوکس با نسخهی 2.6.20 یا جدیدتر داشته باشید، بهصورت پیشفرض KVM هم دارید. KVM اولین بار در سال 2006 معرفی شد و یک سال بعد در نسخه اصلی هسته لینوکس ادغام شد. از آنجایی که KVM بخشی از کد لینوکس موجود است، بلافاصله از تمام ویژگیها و تغییرات جدید لینوکس بهرهمند میشود.
در این مطلب از بلاگ ابر ویراک قصد داریم ماشین مجازی مبتنی بر کرنل یا همان KVM را مورد بررسی قرار دهیم. ابتدا نگاهی به طرز کارکرد KVM به عنوان مجازی ساز موجود در لینوکس خواهیم داشت و پس از آن مزایا و ویژگیهای آن را مورد بررسی قرار خواهیم بود. اگر شما هم قصد دارید بیشتر در مورد ماشینهای مجاز و مجازی سازهای مختلف اطلاعات کسب کنید، این پست را از دست ندهید.
انواع ماشین مجازی کدامند؟
ماشینهای مجازی بهطور کلی امکان اجرای وظایف مختلف را به صورت ایزوله و بیتوجه به سختافزار به کاربران میدهند. ماشینهای مجازی برای به انجام رساندن این کار دو نوع دارند. انواع ماشین مجازی عبارتاند از:
- ماشین مجازی سیستمی: این نوع از ماشینهای مجازی یک سیستم کامل را شبیه سازی میکنند و سختافزار آن را به صورت مجازی در اختیار کاربران قرار میدهند تا سیستم عامل مد نظر خود را نصب و از سرویسهای مبتنی بر آن استفاده کنند. هایپروایزرها نوعی از ماشین مجازی سیستمی به حساب میآیند.
- ماشین مجازی فرایندی: برخلاف ماشینهای مجازی سیستمی، این نوع از ماشین مجازی فقط محیط اجرای سیستم عامل مد نظر را در اختیار کاربر قرار میدهد و میتوان به صورت موقت روی آن برنامه یا محیط مد نظر را اجرا کرد.
KVM چگونه کار میکند؟
KVM یا همان ماشین مجازی مبتنی بر کرنل، لینوکس را به هایپروایزر نوع 1 (Bare-Metal) تبدیل میکند. این مجازی ساز از نظر نوع کارکرد شبیه مجازی ساز ESXi است. همه هایپروایزرها برای اجرای ماشینهای مجازی به برخی از اجزای سطح سیستم عامل مانند مدیر حافظه رم، زمانبندی فرآیند، پشته ورودی/خروجی (I/O)، درایورهای دستگاه، مدیریت امنیت، پشته شبکه و موارد دیگر نیاز دارند. KVM همه این اجزا را دارد زیرا بخشی از هسته لینوکس است. هر VM به عنوان یک فرآیند معمولی لینوکس، برنامهریزی شده توسط زمانبندی استاندارد لینوکس، با سختافزار مجازی اختصاصی مانند کارت شبکه، آداپتور گرافیک، CPU(ها)، حافظه و دیسکها پیادهسازی میشود.
پیاده سازی KVM
به طور خلاصه، شما باید نسخهای از لینوکس را اجرا کنید که پس از سال 2007 منتشر شده باشد و باید روی سخت افزار x86 نصب شود که از قابلیتهای مجازی سازی پشتیبانی میکند. اگر هر دوی این شرایط برقرار باشند، تنها کاری که باید انجام دهید این است که 2 ماژول موجود (یک ماژول هسته میزبان و یک ماژول مخصوص پردازنده)، یک شبیه ساز و هر درایوری که به شما در اجرای سیستمهای اضافی کمک میکند، بارگذاری کنید.
اما پیادهسازی KVM بر روی یک توزیع لینوکس – مانند Red Hat Enterprise Linux – قابلیتهای KVM را گسترش میدهد و به شما امکان میدهد منابع را بین مهمانان مبادله کنید، کتابخانههای مشترک را به اشتراک بگذارید، عملکرد سیستم را بهینه کنید و خیلی چیزهای دیگر.
مهاجرت به یک زیرساخت مجازی مبتنی بر KVM
ایجاد یک زیرساخت مجازی بر روی پلتفرمی که به صورت قراردادی به آن وابسته هستید ممکن است دسترسی شما به کد منبع را محدود کند. این بدان معناست که پیشرفتهای فناوری اطلاعات شما احتمالاً بیشتر راهحلهای موضعی هستند تا نوآوری و قرارداد بعدی میتواند شما را از سرمایهگذاری در ابرها، کانتینرها و اتوماسیون باز دارد. مهاجرت به یک پلت فرم مجازی سازی مبتنی بر KVM به این معنی است که میتوانید کد منبع پشت هایپروایزر خود را بازرسی کنید، تغییر دهید و بهبود بخشید و هیچ توافقنامه مجوز سازمانی وجود ندارد زیرا هیچ کد منبعی برای محافظت وجود ندارد.
ویژگیهای KVM
KVM بخشی از لینوکس است و لینوکس بخشی از KVM است. هر آنچه لینوکس دارد، KVM نیز دارد. اما ویژگیهای خاصی وجود دارد که KVM را به یک هایپروایزر ترجیحی برای کاربران و سازمانها تبدیل میکند.
امنیت
KVM از ترکیبی از لینوکس تقویتشده با امنیت (SELinux) و مجازیسازی ایمن (sVirt) برای افزایش امنیت VM و ایزولهسازی استفاده میکند. SELinux مرزهای امنیتی را در اطراف VMها ایجاد میکند. sVirt قابلیتهای SELinux را گسترش میدهد و اجازه میدهد تا امنیت کنترل دسترسی اجباری (MAC) روی ماشینهای مجازی مهمان اعمال شود و از خطاهای برچسب گذاری دستی جلوگیری کند.
ذخیره سازی
KVM میتواند از هر فضای ذخیرهسازی پشتیبانی شده توسط لینوکس، از جمله برخی از دیسکهای محلی و فضای ذخیرهسازی متصل به شبکه (NAS) استفاده کند. چند مسیری ورودی/خروجی ممکن است برای بهبود فضای ذخیره سازی و ایجاد افزونگی استفاده شود. KVM همچنین از سیستمهای فایل به اشتراک گذاشته شده پشتیبانی میکند، بنابراین تصاویر VM ممکن است توسط چندین میزبان به اشتراک گذاشته شود. تصاویر دیسک از تجهیز نازک پشتیبانی میکنند و ذخیرهسازی را بر حسب تقاضا بهجای همه موارد در جلو، تخصیص میدهند.
پشتیبانی سخت افزاری
KVM میتواند از طیف گستردهای از پلتفرمهای سخت افزاری تایید شده لینوکس استفاده کند. از آنجایی که فروشندگان سخت افزار به طور منظم در توسعه هسته مشارکت دارند، آخرین ویژگیهای سخت افزاری اغلب به سرعت در هسته لینوکس به کار گرفته میشوند.
مدیریت حافظه
KVM ویژگیهای مدیریت حافظه لینوکس، از جمله دسترسی غیریکنواخت به حافظه و ادغام هسته در همان صفحه را به ارث میبرد. حافظه یک VM را میتوان تعویض کرد، برای عملکرد بهتر با حجم زیاد پشتیبان شد و توسط یک فایل دیسک به اشتراک گذاشته یا پشتیبانی کرد.
مهاجرت زنده
KVM از مهاجرت زنده پشتیبانی میکند، که توانایی جابجایی ماشین مجازی در حال اجرا بین میزبانهای فیزیکی بدون وقفه در سرویس است. VM روشن میماند، اتصالات شبکه فعال باقی میماند و برنامهها در حالی که مکان VM جابجا میشود به کار خود ادامه میدهند. KVM همچنین وضعیت فعلی یک VM را ذخیره میکند تا بتوان آن را ذخیره کرد و بعداً از سر گرفت.
عملکرد و مقیاس پذیری
KVM عملکرد لینوکس را به ارث میبرد و در صورت افزایش تعداد ماشینهای مهمان و درخواست ها، مقیاس بندی را برای مطابقت با بار مورد تقاضا انجام میدهد. KVM اجازه میدهد تا سختترین حجمهای کاری برنامهها مجازیسازی شوند و اساس بسیاری از تنظیمات مجازیسازی سازمانی، مانند مراکز داده و ابرهای خصوصی (از طریق OpenStack) است.
برنامه ریزی و کنترل منابع
در مدل KVM، VM یک فرآیند لینوکس است که توسط هسته برنامه ریزی و مدیریت میشود. زمانبند لینوکس اجازه میدهد تا کنترل دقیق منابع تخصیص یافته به یک فرآیند لینوکس را انجام دهد و کیفیت خدمات را برای یک فرآیند خاص تضمین میکند. در KVM، این شامل زمانبندی کاملاً منصفانه، گروههای کنترل، فضاهای نام شبکه و برنامههای افزودنی بلادرنگ است.
تأخیر کمتر و اولویت بندی بیشتر
هسته لینوکس دارای برنامههای افزودنی بلادرنگ است که به برنامههای مبتنی بر VM اجازه میدهد با تأخیر کمتر با اولویتبندی بهتر (در مقایسه با فلز خالی) اجرا شوند. هسته همچنین فرآیندهایی را که نیاز به زمان محاسباتی طولانی دارند به اجزای کوچکتر تقسیم میکند که سپس بر اساس آن برنامه ریزی و پردازش میشوند.
مدیریت KVM
هنگام استفاده از KVM، امکان مدیریت دستی تعداد انگشت شماری از VM که در یک ایستگاه کاری منفرد بدون ابزار مدیریتی فعال شدهاند، وجود دارد. شرکتهای بزرگ از نرمافزار مدیریت مجازیسازی استفاده میکنند که با محیطهای مجازی و سختافزار فیزیکی زیربنایی برای سادهسازی مدیریت منابع، بهبود تجزیه و تحلیل دادهها و سادهسازی عملیات ارتباط برقرار میکند. Red Hat دقیقاً برای همین منظور Red Hat Virtualization را ایجاد کرده است.
کاربردهای مجازی ساز KVM چیست؟
کاربردهای مجازی ساز KVM عبارتاند از:
- ادغام سرورها: KVM امکان استفاده کارآمد از منابع سرور را با ادغام چندین ماشین مجازی روی یک سرور فیزیکی واحد فراهم میکند. این رویکرد هزینههای سختافزار، مصرف انرژی و اندازهی فیزیکی مرکز داده را کاهش میدهد و آن را به انتخابی جذاب برای کسبوکارهایی تبدیل میکند که به دنبال بهینهسازی زیرساختهای خود هستند.
- توسعه و آزمایش: KVM یک محیط ایده آل برای توسعه و تست نرم افزار فراهم میکند. توسعه دهندگان میتوانند به سرعت چندین VM را با سیستم عاملها و پیکربندیهای مختلف راه اندازی کنند و به آنها اجازه میدهد تا برنامههای خود را در سناریوهای مختلف بدون تأثیر بر محیط تولید خود آزمایش کنند.
- رایانش ابری: بسیاری از ارائه دهندگان خدمات ابری به KVM به عنوان پایهای برای ارائههای مجازی سازی خود متکی هستند. مقیاسپذیری، امنیت و عملکرد KVM آن را به انتخابی ارجح برای ساخت زیرساختهای ابری عمومی و خصوصی تبدیل میکند.
- مجازی سازی محیط کاری: KVM همچنین میتواند برای مجازی سازی دسکتاپ مورد استفاده قرار گیرد و امکان ایجاد دسکتاپهای مجازی برای دسترسی از راه دور یا محیطهای Thin Client را فراهم میکند. این رویکرد به سازمانها اجازه میدهد تا مدیریت را متمرکز کنند، امنیت را افزایش دهند و پیچیدگی مدیریت سیستمهای دسکتاپ فردی را کاهش دهند.
سخن پایانی
در این پست از بلاگ ابر ویراک در مورد ماشین مجازی مبتنی بر کرنل با KVM صحبت کردیم. این راهکار مجازی سازی که به عنوان بخشی از لینوکس به حساب میآید، اجازه راهاندازی ماشینهای مجازی را به صورت Native در سرور ابری لینوکس به کاربران میدهد. این راهکار به دلیل یکپارچگی در هستهی لینوکس امکانات لینوکس را برای مدیریت ماشین مجازی در اختیار کاربر قرار داده و به صورت بیوقفه از بهبودهای هستهی لینوکس بهرهمند میشود. برای این که بتوانید از بهترین سرور برای رایانش ابری استفاده کنید، بهتر است در مورد مجازی سازها و سیستمهای ابری اطلاعات بیشتری کسب کنید.