دو سرور مجازی با مشخصات ظاهرا یکسان میتوانند تجربه کاملا متفاوتی بدهند و دلیلش اغلب نوع مجازی سازی است. این موضوع در جدول مشخصات معمولا با یک کلمه کوتاه رد میشود، در حالی که روی پایداری منابع و امکاناتی که در اختیار دارید اثر مستقیم میگذارد.
چرا نوع مجازی سازی مهم است
تفاوت اصلی در این است که سرور شما کرنل مستقل دارد یا کرنل را با میزبان و سایر کاربران به اشتراک میگذارد. این یک جزئیات فنی ساده نیست؛ تعیین میکند چه چیزهایی میتوانید نصب کنید و آیا منابع اعلام شده واقعا در اختیار شما هستند یا نه.
KVM: مجازی سازی کامل
در این روش هر سرور مجازی کرنل مستقل خودش را دارد و از دید سیستم عامل، یک ماشین واقعی است. حافظه اختصاص یافته واقعا رزرو میشود و کاربران دیگر نمیتوانند آن را مصرف کنند.
همین استقلال باعث میشود بتوانید کرنل سفارشی نصب کنید، ماژول های سطح پایین را بارگذاری کنید و نرم افزارهایی مثل داکر یا سرویس های شبکه ای که به رابط TUN نیاز دارند را بدون مشکل اجرا کنید.
OpenVZ و LXC: مجازی سازی در سطح سیستم عامل
در این روش همه سرورهای مجازی روی یک کرنل مشترک اجرا میشوند و جداسازی در سطح فرایندها انجام میشود. سربار کمتری دارد و به همین دلیل ارزان تر تمام میشود.
هزینه این ارزانی، محدودیت است. چون کرنل مشترک است، امکان تغییر آن را ندارید و برخی نرم افزارها اجرا نمیشوند. همچنین ارائه دهنده میتواند منابع را بیش از ظرفیت واقعی بفروشد، چون حافظه به صورت اشتراکی مدیریت میشود.
تفاوت در تخصیص منابع
این مهمترین تفاوت عملی است. در KVM حافظه ای که خریده اید در همان لحظه برای شما رزرو شده، حتی اگر از آن استفاده نکنید. در روش های مبتنی بر کانتینر، حافظه معمولا به صورت پویا مدیریت میشود و اگر همه کاربران همزمان مصرف بالایی داشته باشند، ممکن است به سقف اعلام شده نرسید.
به همین دلیل است که گاهی سروری با چهار گیگ حافظه اعلام شده، در عمل زودتر از انتظار با کمبود حافظه روبرو میشود.
چه چیزهایی روی مجازی سازی اشتراکی محدود میشوند
قبل از خرید، اگر یکی از این موارد برای شما مهم است، حتما نوع مجازی سازی را بپرسید.
- اجرای داکر و ابزارهای کانتینری که به قابلیت های کرنل نیاز دارند.
- سرویس های شبکه ای که به رابط TUN یا TAP نیاز دارند.
- نصب کرنل سفارشی یا بارگذاری ماژول های خاص.
- تنظیم دقیق پارامترهای سطح کرنل برای بار سنگین.
چطور بفهمیم سرور ما کدام است
لازم نیست به اطلاعات فروشنده تکیه کنید؛ با یک دستور میتوانید نوع مجازی سازی را ببینید. اگر خروجی kvm بود، مجازی سازی کامل دارید.
systemd-detect-virtlscpu | grep -i hypervisor
cat /proc/cpuinfo | grep -i hypervisorfree -h
cat /proc/meminfo | head -3پرسش های پرتکرار
کدام بهتر است، KVM یا OpenVZ؟
برای بیشتر کاربردها KVM انتخاب مطمئن تری است چون منابع واقعا اختصاصی هستند و محدودیت کرنل ندارید. OpenVZ معمولا ارزان تر است و برای کاربردهای سبک و آزمایشی مناسب است.
چطور بفهمم سرور مجازی من KVM است یا نه؟
با اجرای دستور systemd-detect-virt نوع مجازی سازی نمایش داده میشود. خروجی kvm نشان دهنده مجازی سازی کامل و خروجی openvz یا lxc نشان دهنده مجازی سازی در سطح سیستم عامل است.
آیا روی OpenVZ میتوان داکر اجرا کرد؟
معمولا خیر یا با محدودیت زیاد. چون کرنل با میزبان مشترک است، بسیاری از قابلیت های مورد نیاز داکر در دسترس نیست. برای اجرای داکر، KVM انتخاب مطمئن تری است.
به راهنمای بیشتری نیاز دارید؟
تیم پشتیبانی هایوهاست برای انتخاب و مدیریت سرویس کنار شماست.