خانه » چگونه بفهمیم که یک CPU از فناوری مجازی سازی (VT) پشتیبانی می کند؟
آموزش لینوکس

چگونه بفهمیم که یک CPU از فناوری مجازی سازی (VT) پشتیبانی می کند؟

در مقالات گذشته گفتیم که چگونه بررسی کنیم یک سیستم عامل لینوکس 32 بیتی است یا 64 بیتی و چگونه بفهمیم یک سیستم لینوکس فیزیکی است یا ماشین مجازی . امروز، ما می‌خواهیم موضوع مفید دیگری را بیاموزیم، یعنی اینکه چگونه بفهمیم یک CPU از فناوری مجازی‌سازی (VT) پشتیبانی می‌کند یا خیر. این اولین مرحله ای است که باید قبل از نصب برنامه های مجازی سازی مانند KVM ، Proxmox ، Gnome Boxes ، Quickemu ، VirtualBox و ایستگاه کاری VMWare برای اجرای ماشین های مجازی بر روی سیستم لینوکس خود انجام دهید. حالا اجازه دهید جلو برویم و بفهمیم که آیا CPU ما از VT پشتیبانی می کند یا خیر.

ببینید آیا یک CPU از فناوری مجازی سازی (VT) در لینوکس پشتیبانی می کند

ما می توانیم با روش های مختلف بررسی کنیم که آیا CPU ما از VT پشتیبانی می کند یا خیر. در اینجا من چهار روش را بررسی کرده ام.

روش ۱: با استفاده از دستور egrep

Egrep یکی از انواع ابزار خط فرمان Grep است که برای جستجوی فایل های متنی با عبارات منظم استفاده می شود.

برای اینکه بفهمید CPU شما از VT با استفاده از دستور egrep پشتیبانی می کند یا خیر، اجرا کنید:

$ egrep "(svm|vmx)" /proc/cpuinfo

این دستور grep را فایل /cpu/procinfo بررسی می کند و نمایش می دهد که CPU از VT پشتیبانی کند یا خیر

خروجی نمونه:

اگر پردازنده شما از مجازی سازی پشتیبانی کند، شما یا “vmx” (فناوری Intel-VT) یا “svm” (پشتیبانی از AMD-V) را در خروجی دریافت خواهید کرد.

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nxscall rdtscp lm konstant_tsc non-topspertspfdni pl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave avx lahf_lm epb pti tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm apts
[...]

از آنجایی که خروجی بسیار طولانی است، پیدا کردن کلمات “vmx” یا “svm” ممکن است کمی سخت باشد. جای نگرانی نیست! می توانید آن اصطلاحات را با رنگ هایی مانند زیر تشخیص دهید.

$ egrep --color -i "svm|vmx" /proc/cpuinfo

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

لطفا توجه داشته باشید که این پرچم های CPU (vmx یا svm) در فایل /proc/cpuinfo نشان می دهد که سیستم شما از VT پشتیبانی می کند. در برخی از مدل های CPU، پشتیبانی VT ممکن است به طور پیش فرض در بایوس غیرفعال باشد. در چنین مواردی، باید تنظیمات BIOS خود را بررسی کنید تا پشتیبانی VT را فعال کنید.

روش ۲ – استفاده از دستور lscpu

دستور lscpu برای نمایش اطلاعات معماری CPU شما استفاده می شود. این اطلاعات را از فایل sysfs و /proc/cpuinfo جمع‌آوری می‌کند و تعداد CPUها، Threadها، هسته‌ها، سوکت‌ها و … سیستم شما را نمایش می‌دهد 

برای اینکه بفهمید پشتیبانی VT فعال است یا خیر، به سادگی اجرا کنید:

$ lscpu

خروجی نمونه:

ببینید آیا یک CPU از مجازی سازی با استفاده از دستور lscpu در لینوکس پشتیبانی می کند یا خیر؟

روش ۳ – استفاده از ابزار Cpu-checker

Cpu-checker یکی دیگر از ابزارهای مفید برای آزمایش CPU شما برای پشتیبانی مجازی سازی است. تا جایی که من در وب جستجو کردم، این ابزار فقط برای سیستم های مبتنی بر اوبونتو در دسترس است. برای نصب آن، اجرا کنید:

$ sudo apt-get install cpu-checker

پس از نصب بسته cpu-checker، دستور زیر را اجرا کنید تا بررسی کنید که آیا پشتیبانی VT فعال است یا خیر:

$ kvm-ok

اگر CPU شما از VT پشتیبانی کند، خروجی زیر را دریافت خواهید کرد:

INFO: /dev/kvm exists
KVM acceleration can be used

اگر CPU شما از VT پشتیبانی نمی کند، خروجی مشابه زیر را مشاهده خواهید کرد.

INFO: Your CPU does not support KVM extensions
KVM acceleration can NOT be used

روش ۴ – با استفاده از ابزار virt-host-validate

این ابزار به طور خاص برای توزیع های مبتنی بر RHEL مانند CentOS و Scientific Linux است. بسته libvirt-client ابزار virt-host-validate را ارائه می دهد. بنابراین برای استفاده از این ابزار باید بسته “libvert-client” را نصب کنید.

$ sudo yum install libvirt-client

اکنون، دستور “virt-host-validate” را اجرا کنید تا متوجه شوید آیا VT در سیستم های مبتنی بر RHEL شما فعال است یا خیر.

$ sudo virt-host-validate

اگر نتیجه PASS دریافت کنید ، سیستم شما از VT پشتیبانی می کند.

 QEMU: Checking for hardware virtualization : PASS
 QEMU: Checking if device /dev/vhost-net exists : PASS
 QEMU: Checking if device /dev/net/tun exists : PASS
 QEMU: Checking for cgroup 'memory' controller support : PASS
 QEMU: Checking for cgroup 'memory' controller mount-point : PASS
 QEMU: Checking for cgroup 'cpu' controller support : PASS
 QEMU: Checking for cgroup 'cpu' controller mount-point : PASS
 QEMU: Checking for cgroup 'cpuacct' controller support : PASS
 QEMU: Checking for cgroup 'cpuacct' controller mount-point : PASS
 QEMU: Checking for cgroup 'cpuset' controller support : PASS
 QEMU: Checking for cgroup 'cpuset' controller mount-point : PASS
 QEMU: Checking for cgroup 'devices' controller support : PASS
 QEMU: Checking for cgroup 'devices' controller mount-point : PASS
 QEMU: Checking for cgroup 'blkio' controller support : PASS
 QEMU: Checking for cgroup 'blkio' controller mount-point : PASS
 QEMU: Checking for device assignment IOMMU support : PASS
 LXC: Checking for Linux >= 2.6.26 : PASS
 LXC: Checking for namespace ipc : PASS
 LXC: Checking for namespace mnt : PASS
 LXC: Checking for namespace pid : PASS
 LXC: Checking for namespace uts : PASS
 LXC: Checking for namespace net : PASS
 LXC: Checking for namespace user : PASS
 LXC: Checking for cgroup 'memory' controller support : PASS
 LXC: Checking for cgroup 'memory' controller mount-point : PASS
 LXC: Checking for cgroup 'cpu' controller support : PASS
 LXC: Checking for cgroup 'cpu' controller mount-point : PASS
 LXC: Checking for cgroup 'cpuacct' controller support : PASS
 LXC: Checking for cgroup 'cpuacct' controller mount-point : PASS
 LXC: Checking for cgroup 'cpuset' controller support : PASS
 LXC: Checking for cgroup 'cpuset' controller mount-point : PASS
 LXC: Checking for cgroup 'devices' controller support : PASS
 LXC: Checking for cgroup 'devices' controller mount-point : PASS
 LXC: Checking for cgroup 'blkio' controller support : PASS
 LXC: Checking for cgroup 'blkio' controller mount-point : PASS

اگر سیستم شما از VT پشتیبانی نمی کند، خروجی زیر را مشاهده خواهید کرد.

QEMU: Checking for hardware virtualization : FAIL (Only emulated CPUs are available, performance will be significantly limited)
[...]

نتیجه

در این راهنما، ما روش‌های مختلفی را مورد بحث قرار داده‌ایم تا بفهمیم آیا یک CPU از VT پشتیبانی می‌کند یا خیر. همانطور که قبلا ذکر شد، بررسی اینکه آیا پردازنده شما از مجازی سازی سخت افزاری پشتیبانی می کند، قبل از نصب هایپروایزر الزامی است.

مهدی منصوری

من مهدی منصوری و کارشناس حوزه نرم افزار و امنیت اطلاعات هستم. کارشناسی ارشد خودم را در رشته امنیت اطلاعات از دانشگاه مالک اشتر تهران گرفتم. هم اکنون در زمینه DevOPS مشغول هستم. و در زمان های ممکن در این سایت و چند سایت دیگه مطلب می گذارم

درباره نویسنده

مهدی منصوری

من مهدی منصوری و کارشناس حوزه نرم افزار و امنیت اطلاعات هستم. کارشناسی ارشد خودم را در رشته امنیت اطلاعات از دانشگاه مالک اشتر تهران گرفتم.
هم اکنون در زمینه DevOPS مشغول هستم. و در زمان های ممکن در این سایت و چند سایت دیگه مطلب می گذارم

افزودن نظر

برای ارسال نظرات خود اینجا را کلیک کنید