QEMU-چیست؟

QEMU چیست؟ چه کاربردی در مجازی سازی دارد؟

فهرست مطالب

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

QEMU چیست؟

QEMU مخفف Quick Emulator یک ابزار متن باز و قدرتمند برای شبیه سازی و مجازی سازی است. اگر بخواهیم ساده بگوییم، QEMU نرم افزاری است که به شما اجازه می‌دهد یک سیستم عامل (مانند ویندوز یا یک توزیع خاص لینوکس) را درون یک سیستم عامل دیگر اجرا کنید. اما تفاوت بزرگ آن با نرم افزارهای دیگر مانند VirtualBox و VMware در انعطاف پذیری خیره کننده آن است. دو کارکرد اصلی این نرم افزار عبارت است از:

  • شبیه ساز کامل سیستم

در این حالت، QEMU یک سخت افزار کامل را صورت نرم افزاری شبیه سازی می‌کند. شما می‌توانید برنامه‌های مخصوص یک معماری پردازنده مانند ARM که مخصوص گوشی‌های موبایل است را روی یک پردازنده متفاوت مانند x86 که مخصوص لپ تاپ‌هاست اجرا کنید. 

  • مجازی سازی با کارایی بالا

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

QEMU چگونه کار می‌کند؟

برای درک بهتر عملکرد این ابزار، باید با موتور قدرتمند آن یعنی TCG آشنا شویم.

ترجمه باینری پویا

وقتی شما می‌خواهید یک برنامه اندروید که برای معماری ARM نوشته شده را روی کامپیوتر شخصی خود اجرا کنید، پردازنده شما زبان آن برنامه را نمی‌فهمد. در اینجا موتور TCG وارد عمل می‌شود. این موتور، بلوک‌های دستورالعمل‌های باینری سیستم مهمان را می‌خواند و آن‌ها را به صورت آنی به دستورالعمل‌های قابل فهم برای پردازنده میزبان ترجمه می‌کند. این فرایند اگرچه باعث می‌شود نرم افزار روی هر سخت افزاری اجرا شود، اما سربار پردازشی دارد و سرعت آن نسبت به اجرای بومی کمتر است.

شتاب دهی سخت افزاری

وقتی معماری‌ها یکسان باشد، QEMU نیازی به ترجمه ندارد. این ابزار معمولا با KVM جفت می‌شود. در این حالت، QEMU مدیریت حافظه و شبیه سازی قطعات جانبی را بر عهده می‌گیرد، اما اجرای دستورات پردازنده را مستقیما به CPU اصلی می‌سپارد. نتیجه این کار، سرعتی خارق العاده است که پایه و اساس سرویس‌های ابری مانند AWS و Google Cloud است. 

ویژگی‌های کلیدی QEMU

اگرچه ابزارهایی مانند VirtualBox رابط کاربری زیباتری دارند، اما QEMU به دلایل زیر در سطوح حرفه‌ای‌‎تر ترجیح داده می‌شود.

  • پشتیبانی وسیع از معماری‌ها

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

    • AArch64 و ARM
    • IRSC-V
    • PowerPC
    • s390x و SPARC
  • فرمت دیسک QCOW2

فرمت اختصاصی دیسک QEMU با نام QCOW2 قابلیت‌های فوق العاده‌ای دارد مانند:

    • Rays-on-demand: فایل دیسک در ابتدا کوچک است و فقط وقتی داده‌ای نوشته شود حجمش زیاد می‌شود.
    • Snapshot: امکان ذخیره وضعیت سیستم در یک لحظه خاص و بازگشت به آن.
    • رمزنگاری و فشرده سازی: پشتیبانی ذاتی از امنیت و کاهش حجم.
  • دیباگ کرنل

توسعه دهندگان سیستم عاشق QEMU هستند زیرا دارای یک GDB Server داخلی است. شما می‌توانید سیستم عامل خود را متوقف کنید، محتوای رجیستری‌های CPU خود را بررسی کنید و خط به خط کرنل را دیباگ کنید؛ کاری که روی سخت افزار واقعی بسیار دشوار است.

  • مهاجرت زنده

این قابلیت حیاتی برای دیتاسنترهاست. QEMU می‌تواند یک ماشین مجازی را در حالی که روشن است و کاربر با آن کار می‌کند، از یک سرور فیزیکی به سرور دیگر منتقل کند، بدون اینکه کاربر متوجه قطعی شود. 

مقایسه QEMU و VirtualBox

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

ویژگی / قابلیتQEMU (+KVM)VirtualBox
نوع مجازی‌ سازیترکیبی (Emulation + Virtualization)Hosted Hypervisor (نوع ۲)
شبیه‌ سازی سخت‌ افزاربسیار منعطف (هر معماری روی هر پردازنده)محدود به معماری سیستم میزبان
رابط کاربریخط فرمان (CLI) – فنی و پیچیدهگرافیکی (GUI) – ساده و کاربرپسند
سرعت و بازدهیبسیار بالا (بهینه برای سرور)متوسط (سربار گرافیکی و مدیریتی بیشتر)
متن‌ باز و لایسنسکاملا آزاد (GPL)هسته GPL – افزونه‌ها (PUEL)
کاربرد اصلیتوسعه سیستم‌ عامل، سرورهای ابری، IoTتست نرم‌ افزار، محیط دسکتاپ، آموزش

نقش QEMU در اکوسیستم مدرن

امروزه به ندرت پیش می‌آید که کاربری مستقیما دستورات خام QEMU را تایپ کند، در عوض این ابزار به عنوان موتور زیرین ابزارهای مدیریت مجازی سازی استفاده می‌شود. 

  • Virt-Manager: یک رابط گرافیکی محبوب در لینوکس برای مدیریت ماشین مجازی.
  • OpenStack: بزرگ‌ترین پلتفرم رایانش ابری متن باز که از QEMU برای ساخت Instances ابری استفاده می‌کند.
  • Docker Desktop: برای اجرای کانتینرها در محیط‌های غیر بومی.

لایسنس اشتراکی Virtualizor برای محیط‌های QEMU

اگر از QEMU برای مجازی‌ سازی استفاده می‌کنید و به دنبال یک راهکار پایدار، مقرون‌ به‌ صرفه و بدون دردسر برای مدیریت لایسنس هستید، سرویس لایسنس اشتراکی Virtualizor می‌تواند انتخابی مناسب برای شما باشد.

خرید لایسنس اشتراکی Virtualizor

نتیجه گیری

کیومو چیزی فراتر از یک نرم افزار است؛ این ابزار ستون فقراتی است که بخش بزرگی از زیرساخت‌های ابری و فرایندهای توسعه سیستم عامل‌های مدرن بر روی آن استوار شده است. توانایی منحصر به فرد آن در جدا کردن نرم افزار از قید و بند سخت افزار، به مهندسان این امکان را داده تا بدون نیاز به خرید دستگاه‌های فیزیکی گران قیمت، برای هر پلتفرمی نرم افزار بسازند. اگرچه یادگیری دستورات آن ممکن است در ابتدا ترسناک به نظر برسد، اما درک QEMU به معنای درک عمیق‌تر از نحوه کارکرد کامپیوترهاست. برای هر کسی که در حوزه سیستم‌های لینوکس، توسعه کرنل یا امنیت سایبری فعالیت می‌کند، تسلط بر QEMU یکی از ضرورت‌هاست.

سوالات متداول

خیر، QEMU یک ابزار Cross-Platform است. اگرچه بهترین عملکرد و بیشترین هماهنگی را با لینوکس به دلیل وجود KVM دارد، اما دارای نسخه‌‎های مخصوص ویندوز و مک نیز هست. 

این دو اغلب با هم استفاده می‌شوند اما یکی نیستند.

  • KVM: یک ماژول در هسته لینوکس است که به پردازنده اجازه می‌دهد به عنوان یک هایپروایزر عمل کند.
  • QEMU: نرم افزاری است که سخت افزارهای دیگر را شبیه سازی می‌‎کند. 

وقتی شما معماری متفاوتی را شبیه سازی می‌کنید، مثلا اجرای ARM روی یک سیستم x86، این ابزار باید تک تک دستورالعمل‌های کد مقصد را ترجمه کند. این فرایند Binary Translation نام دارد که ذاتا سنگین است و باعث می‌شود سرعت کند شود.

این ابزار به صورت پیش فرض یک ابزار خط فرمان است و با این حال، برای کسانی که محیط گرافیکی را ترجیح می‌دهند، ابزارهای جانبی بسیار قدرتمندی مانند Virt-Manager و UTM نیز وجود دارد.

منابع

  • https://www.qemu.org/

به این مقاله امتیاز دهید!

میانگین امتیاز 0 / 5. تعداد رأی ها : 0

هنوز هیچ رأیی داده نشده. اولین نفر باشید!

اشتراک گذاری در تلگرام اشتراک گذاری در لینکدین اشتراک گذاری در ایکس کپی کردن لینک پست

و در ادامه بخوانید

اولین دیدگاه را اضافه کنید.

    برچسب ها

    مجازی سازی