یک راهکار مجازی‌ساز منبع‌باز
مجازی‌ساز KVM چیست، چگونه پیاده‌سازی  می‌شود و چرا مورد توجه کارشناسان شبکه است؟
امروزه، راه‌حل‌های مجازی‌ساز مورد توجه همه شرکت‌ها، توسعه‌دهندگان و تیم‌های برنامه‌نویسی قرار دارند، زیرا قابلیت‌های درخشانی در اختیار آن‌ها قرار می‌دهند. با این‌حال، راه‌حل‌های ارائه‌شده توسط شرکت‌های مختلف یکسان نیستند و هر یک مزایا و معایب خاص خود را دارند. در این میان خرید لایسنس‌های گران‌قیمت یکی از چالش‌های بزرگی است که بسیاری از شرکت‌ها با آن روبه‌رو هستند. همین مسئله باعث شده تا برخی از شرکت‌ها به سراغ راهکارهای منبع‌بازی بروند که قابلیت‌های کارآمدی در اختیارشان قرار می‌دهند. یکی از این راهکارهای کارآمد، KVM است که قصد داریم در این مقاله با آن آشنا شویم.

1606683296_1_0.gif

راه‌حل مجازی‌سازی KVM  چیست؟

ماشین مجازی مبتنی بر هسته KVM سرنام Kernel-based Virtual Machine یک نرم‌افزار مجازی‌ساز لینوکس‌محور است که به‌عنوان یکی از ابزارهای مجازی‌سازی هایپروایزر شناخته می‌شود. KVM قابلیت‌های مجازی‌سازی سطح بالایی برای اجرای ماشین‌های مجازی در اختیار آن‌ها قرار می‌دهد. KVM با پشتیبانی از فناوری Hardware Assisted Virtualization این توانایی را دارد تا ویژگی‌های کلیدی پردازنده‌های مرکزی مثل Intel VT یا AMD-V را مورد استفاده قرار دهد تا ماشین‌های مجازی به‌شکل روانی روی سرورها اجرا شوند. 

KVM از راه‌حل‌های مجازی‌ساز پیش‌رو در دنیای فناوری اطلاعات است که توانایی استفاده از کرنل لینوکس را در قالب هایپروایزر دارد. با استفاده از این مجازی‌ساز می‌توانید یک سرور فیزیکی را به چند سرور مجازی و ماشین مجازی تقسیم کنید. KVM به ماشین‌های مجازی اجازه می‌دهد سرویس‌های رایجی مثل بایوس مجازی (سیستم ورودی ‌و خروجی پایه) و سخت‌افزار مجازی مانند پردازنده مرکزی، حافظه اصلی و کارت‌های شبکه خود را داشته باشند یا به‌شکل مستقیم با منابع سرور در ارتباط باشند. از این‌رو، به‌ کمک KVM هر ماشین مجازی‌ عملکردی شبیه به یک ماشین فیزیکی دارد. 

KVM از چه مولفه‌های تشکیل شده است؟

KVM از مولفه‌های مختلفی تشکیل شده است که از مهم‌ترین آن‌ها به موارد زیر باید اشاره کرد:

  • ماژول KVM: این ماژول، بخش اصلی و کلیدی KVM است که برای مجازی‌سازی سخت‌افزار استفاده می‌شود. این ماژول، توانایی پشتیبانی از معماری‌های مختلف پردازنده‌ها مثل x86، ARM و MIPS را دارد. 
  • QEMU: این مولفه، یک شبیه‌ساز سیستم‌های کامپیوتری است که برای اجرای سیستم‌‌عامل‌های مختلف در ماشین‌های مجازی استفاده می‌شود. QEMU، به‌‌عنوان یک شبیه‌ساز قدرتمند، امکانات بسیاری برای مدیریت ماشین‌های مجازی در اختیار کاربران قرار می‌دهد.
  • Libvirt: این مولفه، یک API مدیریتی برای مجازی‌سازی است که برای مدیریت ماشین‌های مجازی با استفاده از KVM و QEMU استفاده می‌شود. این API، امکانات بسیاری را برای مدیریت ماشین‌های مجازی در اختیار کاربران قرار می‌دهد.
  • Virt-manager: این مولفه، یک ابزار مدیریت گرافیکی برای KVM است که برای مدیریت ماشین‌های مجازی در محیط گرافیکی استفاده می‌شود. این ابزار، امکانات بسیاری برای مدیریت ماشین‌های مجازی در اختیار کاربران قرار می‌دهد و اجازه می‌دهد به‌راحتی ماشین‌های مجازی را پیکربندی و مدیریت کرد.

این مولفه‌ها زیربنای معماری راه‌حل مجازی‌سازی KVM را شکل می‌دهند. هر یک از این مولفه‌ها، امکانات مختلفی برای مدیریت ماشین‌های مجازی در اختیارتان قرار می‌دهند و اجازه می‌دهند به بهترین شکل از منابع سرور استفاده کنید.

چگونه KVM را نصب کنیم؟

همان‌گونه که اشاره کردیم KVM یک فناوری مجازی‌ساز لینوکس‌محور است که برای اجرای ماشین‌های مجازی استفاده می‌شود. برای نصب KVM در سیستم‌عامل خود باید بر مبنای مراحل زیر عمل کنید: 

بررسی سازگاری سیستم: ابتدا باید سازگاری توزیع لینوکسی با KVM را بررسی کنید. برای این‌کار، می‌توانید دستور زیر را در ترمینال اجرا کنید:

egrep -c ‘(vmx|svm)’ /proc/cpuinfo

اگر با اجرای این دستور عدد بزرگ‌تر از صفر را مشاهده کردید به این معنا است که پردازنده مرکزی از فناوری مجازی‌سازی پشتیبانی می‌کند.

  • نصب KVM: برای نصب KVM در سیستم‌عامل خود، باید از دستورات مناسب با سیستم‌عامل استفاده کنید. به‌طور مثال، در سیستم‌عامل اوبونتو می‌توانید از دستور زیر برای نصب KVM استفاده کنید:

sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils

اگر در سیستم‌عامل خود از مدیریت بسته استفاده می‌کنید باید از دستورات ارائه‌شده توسط مدیر بسته استفاده کنید. 

  • فعال‌سازی KVM: برای فعال‌سازی KVM در توزیع لینوکسی خود می‌توانید از دستورات زیر استفاده کنید:

   sudo systemctl enable --now libvirtd

   sudo systemctl status libvirtd

این دستورات، سرویس libvirtd را فعال‌سازی می‌کنند که اجازه می‌دهد تا ماشین‌های مجازی را اجرا کنید.

با انجام این مراحل، KVM بر روی سیستم نصب و فعال‌سازی شده و می‌توانید از آن برای اجرای ماشین‌های مجازی استفاده کنید.

چگونه یک ماشین مجازی را با استفاده از KVM ایجاد کنیم؟

برای ایجاد یک ماشین مجازی با استفاده از KVM می‌توانید بر مبنای مراحل زیر عمل کنید: 

برای ایجاد ماشین مجازی، می‌توانید از KVM سرنام KVM Virtual Machine Manager یا دستورات خط فرمان استفاده کنید که ما از دستورات خط فرمان استفاده می‌کنیم، زیرا قابلیت‌های بیشتری در اختیارمان قرار می‌دهند و امکان استفاده از آن‌ها روی تمامی توزیع‌های لینوکسی وجود دارد. 

  • ایجاد فایل ایمیج دیسک: برای ذخیره‌سازی اطلاعات ماشین مجازی باید یک فایل ایمیج ایجاد کنید. برای این‌کار، می‌توانید از دستور زیر استفاده کنید:

   qemu-img create -f qcow2 /path/to/disk_image.qcow2 10G

در این دستور، 10G بیان‌گر اندازه دیسک مورد نیاز برای ماشین مجازی است.

  • ایجاد ماشین مجازی: برای ایجاد ماشین مجازی می‌توانید از دستورات زیر استفاده کنید:

   virt-install \

   --name=myvm \

   --ram=2048 \

   --vcpus=2 \

   --disk path=/path/to/disk_image.qcow2,size=10 \

   --os-type linux \

   --os-variant=ubuntu20.04 \

   --network bridge=br0 \

   --graphics none \

   --console pty,target_type=serial

در دستور بالا، مشخصات ماشین مجازی را می‌توانید متناسب با نیازها تغییر دهید. به‌طور مثال، با استفاده از `-- name` می‌توانید نام ماشین مجازی را مشخص کنید، با `-- ram` می‌توانید حافظه مورد نیاز ماشین مجازی را تعیین کنید و با `-- vcpus` تعداد پردازنده‌های مجازی را مشخص کنید. همچنین، با استفاده از `-- disk` می‌توانید فایل تصویری دیسک را به ماشین مجازی اختصاص دهید و با `-- os-type` و ` os-variant --` نوع و نسخه سیستم‌عامل را مشخص کنید. همچنین، با ` network --` می‌توانید ماشین مجازی را به شبکه متصل کنید و با ` graphics --` و ` console --` می‌توانید رابط کاربری ماشین مجازی را تعیین کنید. 

  • نصب سیستم‌عامل: پس از ایجاد ماشین مجازی، باید سیستم‌عامل مورد نظر را بر روی آن نصب کنید. برای این‌کار، می‌توانید از روش‌های مختلف مانند استفاده از ایمیج ISO سیستم‌عامل یا اجرای یک سیستم‌عامل قبلی بر روی ماشین مجازی استفاده کنید.

با انجام این مراحل، یک ماشین مجازی با استفاده از KVM ایجاد می‌شود و می‌توانید از آن برای اجرای سیستم‌عامل مورد نظر خود استفاده کنید.

چگونه می‌توانیم از Virt-manager برای مدیریت ماشین‌های مجازی استفاده کنیم؟

برای مدیریت ماشین‌های مجازی با استفاده از Virt-manager باید به‌شرح زیر عمل کنید: 

1. نصب Virt-manager: برای استفاده از Virt-manager، ابتدا باید آن‌را نصب کنید. برای نصب Virt-manager در سیستم‌عامل لینوکس می‌توانید از مدیر بسته سیستم‌عامل خود استفاده کنید. به‌طور مثال، در سیستم‌عامل اوبونتو می‌توانید از دستور زیر برای نصب Virt-manager استفاده کنید:

   sudo apt-get install virt-manager

2. ایجاد ماشین مجازی: پس از نصب Virt-manager، می‌توانید یک ماشین مجازی جدید ایجاد کنید. برای این‌کار، از منوی File در Virt-manager، گزینه New Virtual Machine را انتخاب کنید. سپس، روی گزینه Local install media (ISO image or CDROM) کلیک کنید و فایل ISO سیستم‌عامل موردنظر خود را انتخاب کنید.

3. تنظیمات ماشین مجازی: پس از ایجاد ماشین مجازی می‌توانید تنظیمات آن‌را تغییر دهید. برای این‌کار، روی ماشین مجازی خود کلیک کنید و گزینه Edit را انتخاب کنید. در این بخش، می‌توانید تنظیمات ماشین مجازی خود را تغییر دهید، از جمله این تنظیمات باید به تعیین حافظه اصلی، تعداد پردازنده‌های مرکزی، تنظیمات شبکه و غیره اشاره کرد.

4. راه‌اندازی ماشین مجازی: پس از پیکربندی ماشین مجازی نوبت به راه‌اندازی آن می‌رسد. برای این‌کار، روی ماشین مجازی خود کلیک کرده و گزینه Start را انتخاب کنید. پس از راه‌اندازی کامل، می‌توانید پارامترهای مربوط به سیستم‌عامل موردنظر را پیکربندی کنید.

با استفاده از Virt-manager، می‌توانید به‌راحتی ماشین‌های مجازی خود را پیکربندی و مدیریت کنید. این ابزار، امکانات بسیاری برای مدیریت ماشین‌های مجازی در اختیار کاربران قرار می‌دهد و اجازه می‌دهد به بهترین شکل ممکن از منابع سرور استفاده کنید.

چرا باید از KVM استفاده کنیم؟

به‌طور معمول، سازمان‌ها و کارشناسان شبکه به دلایل زیر از KVM استفاده می‌کنند: 

  • دستیابی به بهره‌وری بالا: با استفاده از KVM، می‌توانید بهره‌وری سرورهای خود را بالا ببرید. در واقع با استفاده از این فناوری می‌توانید چند سیستم‌عامل را روی یک سرور فیزیکی اجرا کنید و به این ‌صورت از منابع سرور به بهترین شکل استفاده کنید.
  • پشتیبانی از live migration: با استفاده از KVM، می‌توانید ماشین‌های مجازی خود را بدون هیچ‌گونه اختلالی بین سرورهای فیزیکی جابه‌جا کنید. قابلیت فوق به شما اجازه می‌دهد تا کارهایی مثل تعمیرات یا ارتقای سرورها را بدون متوقف کردن فعالیت‌های تجاری انجام دهید. 
  • امنیت بالا: KVM اجازه می‌دهد به بالاترین سطح از امنیت در محیط‌های کاربردی حساس دست پیدا کنید. به‌طور مثال، می‌توانید ماشین‌های مجازی خود را از یک‌دیگر تفکیک کنید و به این ترتیب داده‌هایی را که حساسیت بالایی دارند در ماشین‌های مجازی ایمن نگه‌داری کنید. 
  • کاهش هزینه: استفاده از راه‌حل مجازی‌سازی KVM به شما اجازه می‌دهد هزینه‌های سخت‌افزاری و نگه‌داری سرورها را کاهش دهید. 
  • پشتیبانی از چند سیستم‌عامل: با استفاده از KVM می‌توانید چند سیستم‌عامل را روی یک سرور فیزیکی اجرا کنید. این قابلیت به تیم‌های توسعه اجازه می‌دهد تا نرم‌افزارهای نوشته‌شده را روی پلتفرم‌های مختلف آزمایش کنند و اشکالات نرم‌افزارها را برطرف کنند. 

KVM در‌ مقایسه‌ با VMware

KVM و VMware هر دو فناوری‌های مجازی‌سازی هستند که برای اجرای ماشین‌های مجازی استفاده می‌شوند. با این حال، هر یک مزایا و معایب خود را دارند. در ادامه به بررسی تفاوت‌های اصلی بین KVM و VMware می‌پردازیم:

  • قیمت: KVM یک فناوری مجازی‌سازی متن‌باز و رایگان است. در مقابل، VMware یک محصول تجاری است و برای استفاده از آن باید هزینه‌ مربوطه را پرداخت کنید. همچنین، به این نکته دقت کنید که برخی از لایسنس‌های موجود در بازار ایران که به‌شکل قفل شکسته هستند، قابل اعتماد نیستند یا ممکن است در هنگام نصب قادر به رفع محدودیت زمانی نباشند. 
  • عملکرد: KVM به‌شکل پیش‌فرض در سیستم‌عامل لینوکس وجود دارد و قادر است از هسته کرنل برای انجام کارها استفاده کند. همچنین، بیشتر توزیع‌های لینوکسی با آن سازگار هستند. همین مسئله باعث شده تا KVM عملکرد بسیار بالایی را ارائه کند. در مقابل، VMware بر روی سیستم‌های فیزیکی اجرا می‌شود و برای اجرای ماشین‌های مجازی باید از سرویس‌های خاص سیستم‌عامل‌ استفاده کند که در برخی موارد کاهش عملکرد را به‌همراه دارد. 
  • امنیت: KVM از مکانیزم‌های امنیتی کرنل لینوکس استفاده می‌کند که امنیت به مراتب بهتری نسبت به ویندوز دارند. در مقابل، VMware برای محافظت از ماشین‌های مجازی به ویژگی‌های امنیتی خاص خود متکی است. 
  • قابلیت گسترشی: KVM به‌شکل پیش‌فرض با بسیاری از ابزارهای متن‌باز مانند OpenStack سازگار است و همین مسئله باعث می‌شود قابلیت گسترش‌‌پذیری بهتری داشته باشد و گزینه مناسبی برای کاربران خانگی باشد. در مقابل، VMware بیشتر برای استفاده در محیط‌های سازمانی طراحی شده و گسترش‌پذیری آن محدودتر از KVM است.

KVM در‌ مقایسه‌ با Hyper-V  

Hyper-V مایکروسافت و KVM لینوکس، هایپروایزرهای قدرتمندی هستند و توانایی میزبانی تعداد زیادی ماشین‌ مجازی را دارند، اما در زمینه ابزارهای مدیریتی تفاوت‌هایی بین این دو وجود دارد. تفاوت اصلی Hyper-V با KVM در این است که هایپروی مایکروسافت روی ویندوز اجرا می‌شود؛ در‌حالی‌که KVM، هایپروایزر متن‌باز است که روی لینوکس اجرا می‌شود. 

هر دو نرم‌افزار به سرپرستان شبکه اجازه می‌دهند از طریق خط فرمان به مدیریت آن‌ها بپردازند. با این‌حال، قابلیت‌های خط فرمانی که KVM ارائه می‌کند بیشتر از هایپروی است. 

هایپروی با ابزارهای مدیریت ویندوز سرور سازگار است و از طریق این ابزارها قابل مدیریت است. در مقابل، برای مدیریت KVM باید از ابزارهای مختلفی مانند libvirt استفاده کنید. KVM از عملکردهای زیربنایی مجازی‌سازی سطح کرنل لینوکس استفاده می‌کند که باعث می‌شود پایداری و عملکرد بالایی داشته باشد. در مقابل، هایپروی بر روی سیستم‌های فیزیکی اجرا می‌شود و برای اجرای ماشین‌های مجازی باید از سرویس‌های اختصاصی و خاص سیستم‌عامل استفاده می‌کند که ممکن است کاهش عملکرد را به همراه  داشته باشد. 

KVM در مقایسه‌ با OpenVZ

  • KVM و OpenVZ هر دو فناوری‌های مجازی‌سازی هستند که برای اجرای ماشین‌های مجازی استفاده می‌شوند. با این حال، تفاوت‌هایی میان این دو وجود دارد که مهم‌ترین آن‌ها به‌شرح زیر است: 
  • KVM از فناوری مجازی‌سازی کامل (Full virtualization) استفاده می‌کند، که در این روش هر ماشین مجازی به‌طور کامل از منابع سخت‌‌افزاری سرور استفاده می‌کند. در مقابل، OpenVZ از فناوری مجازی‌سازی مبتنی بر سطح سیستم‌عامل (OS-level virtualization) استفاده می‌کند، که در این روش همه ماشین‌های مجازی از طریق سیستم‌عامل به منابع موردنیاز دسترسی دارند. 
  • همان‌گونه که اشاره کردیم KVM روی بیشتر توزیع‌های لینوکسی قابل استفاده است که همین مسئله عملکرد و پایداری آن‌را بهبود می‌بخشد. در مقابل، OpenVZ برای استفاده در سیستم‌عامل‌های لینوکسی طراحی شده است.
  • به‌دلیل استفاده از فناوری مجازی‌سازی کامل، KVM عملکرد بهتری نسبت به OpenVZ دارد، اما در مقابل، OpenVZ به‌دلیل استفاده از فناوری مبتنی بر سطح سیستم‌عامل، سبک‌تر و سریع‌تر از KVM است.
  • به‌دلیل این‌که ماشین‌های مجازی KVM به‌شکل مستقل از یک‌دیگر از منابع سیستمی استفاده می‌کند، امنیت بالاتری نسبت به OpenVZ دارد. در مقابل، به‌دلیل این که همه ماشین‌های مجازی در OpenVZ از یک نسخه از سیستم‌عامل استفاده می‌کنند، امنیت کمتری دارند.
  • KVM قابلیت‌های مجازی‌سازی متنوعی را ارائه می‌دهد که از آن جمله باید به پشتیبانی از ماشین‌های مجازی ویندوز، پشتیبانی از شبکه‌بندی پیشرفته و پشتیبانی از طیف گسترده‌ای از پردازنده‌های و حافظه‌های اصلی اشاره کرد. در مقابل، OpenVZ تنها برای ایجاد ماشین‌های مجازی کانتینری لینوکسی LXC سرنام Linux Container  استفاده می‌شود. بنابراین، KVM و OpenVZ هر دو دارای مزایا و معایب خود را دارند و انتخاب بین این دو فناوری، بستگی به نیازها و محیط کاری دارد. در صورتی که به امنیت و قابلیت تنظیم بیشتری نیاز دارید، KVM مناسب‌تر است. اگر به دنبال یک راه‌حل سبک‌تر و سریع‌تر هستید و به سطح بالایی از انعطاف‌پذیری نیازی ندارید، OpenVZ ممکن است بهترین گزینه باشد.

 

 

ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را می‌توانید از کتابخانه‌های عمومی سراسر کشور و نیز از دکه‌های روزنامه‌فروشی تهیه نمائید.

ثبت اشتراک نسخه کاغذی ماهنامه شبکه     
ثبت اشتراک نسخه آنلاین

 

کتاب الکترونیک +Network راهنمای شبکه‌ها

  • برای دانلود تنها کتاب کامل ترجمه فارسی +Network  اینجا  کلیک کنید.

کتاب الکترونیک دوره مقدماتی آموزش پایتون

  • اگر قصد یادگیری برنامه‌نویسی را دارید ولی هیچ پیش‌زمینه‌ای ندارید اینجا کلیک کنید.

ایسوس

نظر شما چیست؟