| VIRT-WHAT(1) | Virtualization Support | VIRT-WHAT(1) |
نام (NAME)
virt-what - تشخیص نوع و فناوری مجازیسازی سیستم جاری
خلاصه (SUMMARY)
virt-what [options]
توضیحات (DESCRIPTION)
"virt-what" یک اسکریپت شل است که میتواند برای تشخیص اینکه آیا برنامه در یک ماشین مجازی در حال اجرا است یا خیر، استفاده شود.
این برنامه فهرستی از «حقایق» (facts) درباره ماشین مجازی را بر اساس روشهای اکتشافی (heuristics) در خروجی چاپ میکند. در هر خط یک حقیقت چاپ میشود.
اگر هیچ متنی چاپ نشود و اسکریپت با کد ۰ (بدون خطا) خارج شود، میتواند به این معنی باشد که یا برنامه روی سختافزار واقعی (bare-metal) در حال اجرا است، یا در نوعی ماشین مجازی اجرا میشود که برنامه از آن اطلاعی ندارد یا قادر به تشخیص آن نیست.
حقایق (FACTS)
- alibaba_cloud
- alibaba_cloud-ebm
- یک سرویس
رایانش
ابری مبتنی
بر
علیبابا
کلود (Alibaba Cloud).
وضعیت: مشارکت توسط Weisson.
- aws
- سرویسهای
وب آمازون (Amazon
Web Services).
توجه داشته باشید که virt-what این حقیقت را برای نمونههای baremetal در AWS نیز چاپ میکند، که ممکن است شما آن را یک مجازیسازی واقعی در نظر نگیرید. در این حالت، سایر حقایق (مانند "kvm" یا "xen") وجود نخواهند داشت.
وضعیت: مشارکت توسط Qi Guo و Vitaly Kuznetsov، تأیید شده توسط RWMJ.
- bhyve
- یک مهمان در
هایپروایزر
bhyve
(هایپروایزر
FreeBSD).
وضعیت: مشارکت توسط Leonardo Brondani Schenkel.
- crio
- مهمان درون
یک کانتینر
CRI-O در حال
اجرا است.
وضعیت: پیشنهاد شده توسط Alessandro Taufer، تأیید شده توسط RWMJ و Xiaodai Wang.
- docker
- یک کانتینر
داکر (Docker).
وضعیت: تأیید شده توسط Charles Nguyen.
- google_cloud
- سیستم بر
روی Google Cloud Platform / Google Compute Engine
در حال اجرا
است.
وضعیت: تأیید شده توسط RWMJ.
- hyperv
- هایپروایزر
مایکروسافت
هایپروی (Microsoft
Hyper-V).
وضعیت: تأیید شده توسط RWMJ.
- ibm_power-kvm
- یک سیستم
مهمان روی IBM
POWER KVM.
وضعیت: مشارکت توسط Adrian Likins.
- ibm_power-lpar_shared
- ibm_power-lpar_dedicated
- یک LPAR
(پارتیشن
سختافزاری)
در IBM POWER در
حالت
اشتراکی (shared)
یا اختصاصی
(dedicated).
وضعیت: مشارکت توسط Adrian Likins.
- ibm_systemz
- یک سیستم پارتیشنبندی سختافزاری IBM SystemZ (یا سایر سیستمهای S/390). حقایق تکمیلی فهرستشده در ادامه نیز ممکن است چاپ شوند.
- ibm_systemz-direct
- لینوکسی که
مستقیماً
روی یک
سیستم
پارتیشنبندی
سختافزاری
IBM SystemZ در حال
اجرا است.
انتظار میرود این یک پیکربندی بسیار نامعمول باشد - اگر چنین نتیجهای دیدید، باید با تردید با آن برخورد کنید.
وضعیت: تأیید نشده.
- ibm_systemz-lpar
- لینوکسی که
مستقیماً
روی یک LPAR در
یک سیستم
پارتیشنبندی
سختافزاری
IBM SystemZ در حال
اجرا است.
وضعیت: تأیید شده توسط Thomas Huth.
- ibm_systemz-zvm
- یک مهمان z/VM
که در یک LPAR
روی یک
سیستم
پارتیشنبندی
سختافزاری
IBM SystemZ در حال
اجرا است.
وضعیت: تأیید شده توسط RWMJ با استفاده از یک مهمان فدورا در z/VM.
- ibm_systemz-kvm
- یک مهمان KVM
که روی یک
سیستم
سختافزاری
IBM System Z در حال
اجرا است.
وضعیت: مشارکت توسط Thomas Huth.
- illumos-lx
- مهمان بر
روی Illumos با
لایه
شبیهسازی
فراخوانهای
سیستمی
لینوکس (Linux syscall emulation
layer) در حال
اجرا است.
وضعیت: مشارکت توسط Steve Mokris.
- ldoms
- به نظر
میرسد
مهمان روی
یک سیستم
لینوکس SPARC با
پشتیبانی
از سرور Oracle VM
برای SPARC
(دامنههای
منطقی یا Logical Domains)
در حال اجرا
است.
وضعیت: مشارکت توسط Darren Kenny.
- ldoms-control
- دامنه
کنترلی (control domain)
در سرور Oracle VM
برای SPARC
(دامنههای
منطقی).
وضعیت: مشارکت توسط Darren Kenny.
- ldoms-guest
- دامنه
مهمان (guest domain) در
سرور Oracle VM
برای SPARC
(دامنههای
منطقی).
وضعیت: مشارکت توسط Darren Kenny.
- ldoms-io
- دامنه
ورودی/خروجی
(I/O domain) در سرور Oracle VM
برای SPARC
(دامنههای
منطقی).
وضعیت: مشارکت توسط Darren Kenny.
- ldoms-root
- دامنه ریشه
(Root domain) در سرور Oracle VM
برای SPARC
(دامنههای
منطقی).
وضعیت: مشارکت توسط Darren Kenny.
- linux_vserver
- این مورد برای سازگاری با نسخههای قدیمیتر virt-what چاپ میشود که نمیتوانستند بین کانتینر مهمان و میزبان در Linux VServer تفاوت قائل شوند.
- linux_vserver-guest
- این پردازش
در یک
کانتینر Linux VServer
در حال اجرا
است.
وضعیت: مشارکت توسط Barış Metin.
- linux_vserver-host
- این پردازش
به عنوان
میزبان Linux VServer
اجرا
میشود (VxID 0).
وضعیت: مشارکت توسط Barış Metin و Elan Ruusamäe.
- lxc
- این پردازش
در یک
کانتینر Linux LXC
در حال اجرا
است.
وضعیت: مشارکت توسط Marc Fournier.
- kvm
- این مهمان
روی
هایپروایزر
KVM با
استفاده از
شتابدهنده
سختافزاری
در حال اجرا
است.
توجه داشته باشید اگر هایپروایزر از شبیهسازی نرمافزاری استفاده میکند، نباید این مورد را ببینید، بلکه در عوض باید حقیقت "qemu" را مشاهده کنید.
وضعیت: تأیید شده توسط RWMJ.
- lkvm
- این مهمان
روی
هایپروایزر
KVM با
استفاده از
شتابدهنده
سختافزاری
اجرا
میشود و
کامپوننت
فضای
کاربری
هایپروایزر
lkvm
(شناختهشده
با نام kvmtool)
است.
وضعیت: مشارکت توسط Andrew Jones.
- nutanix_ahv
- مهمان درون
هایپروایزر
Nutanix Acropolis (AHV) در حال
اجرا است.
وضعیت: تأیید شده توسط RWMJ.
- oci
- مهمان درون
یک کانتینر
OCI در حال
اجرا است.
وضعیت: مشارکت توسط Alessandro Valentini، تأیید شده توسط RWMJ.
- openvz
- به نظر
میرسد
مهمان درون
یک کانتینر
OpenVZ یا Virtuozzo در
حال اجرا
است.
وضعیت: مشارکت توسط Evgeniy Sokolov.
- ovirt
- مهمان روی
یک گره oVirt در
حال اجرا
است.
(همچنین بخش
"rhev" را در
ادامه
ببینید).
وضعیت: مشارکت توسط RWMJ، تأیید نشده.
- parallels
- مهمان درون
بستر مجازی
Parallels Virtual Platform (شامل Parallels
Desktop، Parallels Server) در
حال اجرا
است.
وضعیت: مشارکت توسط Justin Clift.
- podman
- یک کانتینر
پادمن (Podman).
(همچنین
"oci" را در
بالا
ببینید).
وضعیت: مشارکت توسط Jordan Webb.
- powervm_lx86
- مهمان درون
شبیهساز IBM
PowerVM Lx86 Linux/x86 در حال
اجرا است.
وضعیت: دادهها در ابتدا توسط Jeffrey Scheel ارائه شدند، تأیید شده توسط Yufang Zhang و RWMJ.
- qemu
- هایپروایزر
QEMU با
استفاده از
شبیهسازی
نرمافزاری.
توجه داشته باشید که برای مهمانهای KVM (با شتابدهنده سختافزاری) نباید این مورد را ببینید.
وضعیت: تأیید شده توسط RWMJ.
- rhev
- مهمان روی
یک گره Red Hat Enterprise
Virtualization (RHEV) در حال
اجرا است.
وضعیت: تأیید شده توسط RWMJ.
- redhat
- مهمان روی
هایپروایزر
رد هت (Red Hat) در
حال اجرا
است.
وضعیت: تأیید شده توسط RWMJ.
- uml
- یک مهمان
لینوکس
حالت کاربر
(User-Mode Linux یا UML).
وضعیت: مشارکت توسط Laurent Léonard.
- upcloud
- سیستم بر
روی UpCloud در حال
اجرا است.
وضعیت: مشارکت توسط Ville Skyttä.
- virt
- به نظر میرسد نوعی از مجازیسازی وجود دارد، اما نوع دقیق آن مشخص نیست. در برخی موارد گوشهای و بسیار نادر که میدانیم تشخیص مجازیسازی دشوار است، از حمله زمانبندی (timing attack) استفاده میکنیم تا بررسی شود آیا دستورالعملهای خاص ماشین بسیار کندتر از حالت عادی اجرا میشوند یا خیر، که این میتواند نشاندهنده مجازیسازی باشد. در این حالت، حقیقت عمومی "virt" چاپ میشود.
- virtage
- سیستم
پارتیشنبندی
سختافزاری
هیتاچی Virtage در
Hitachi Virtualization Manager (HVM).
وضعیت: دادهها توسط Bhavna Sarathy ارائه شده، تأیید نشده.
- virtualbox
- یک مهمان در
ویرچوالباکس
(VirtualBox).
وضعیت: مشارکت توسط Laurent Léonard.
- virtualpc
- به نظر
میرسد
مهمان روی
Microsoft VirtualPC در حال
اجرا است.
وضعیت: تأیید نشده.
- vmm
- یک مهمان در
هایپروایزر
vmm
(هایپروایزر
OpenBSD).
وضعیت: مشارکت توسط Jasper Lievisse Adriaanse.
- vmware
- به نظر
میرسد
مهمان روی
هایپروایزر
VMware در حال
اجرا است.
وضعیت: تأیید شده توسط RWMJ.
- xen
- به نظر
میرسد
مهمان روی
هایپروایزر
Xen در حال
اجرا است.
وضعیت: تأیید شده توسط RWMJ.
- xen-dom0
- دامنه
دارای
امتیاز Xen dom0
(دامنه
ممتاز).
وضعیت: تأیید شده توسط RWMJ.
- xen-domU
- دامنه
مهمان
شبهمجازیشده
Xen domU (دامنه
غیرممتاز
paravirtualized).
وضعیت: تأیید شده توسط RWMJ.
- xen-hvm
- یک مهمان Xen
با
مجازیسازی
سختافزاری
کامل (HVM).
وضعیت: تأیید شده توسط RWMJ.
وضعیت خروج (EXIT STATUS)
برنامههایی که از "virt-what" استفاده کرده یا آن را دربرمیگیرند، باید پیش از تلاش برای پردازش خروجی دستور، بررسی کنند که وضعیت خروج برابر با ۰ باشد.
وضعیت خروج غیرصفر نشاندهنده بروز خطا است، برای مثال ارائه یک آرگومان نامعتبر در خط فرمان. اگر وضعیت خروج غیرصفر باشد، صحت «حقایق» خروجی (در صورت چاپ شدن) قابل تضمین نیست و باید نادیده گرفته شوند.
وضعیت خروج هیچ ارتباطی با اجرای برنامه روی سختافزار واقعی یا تحت مجازیسازی ندارد، و همچنین نشاندهنده موفقیت "virt-what" در تشخیص «صحیح» نیست (که با توجه به تنوع بسیار زیاد سیستمهای مجازیسازی و شبیهسازی عمدی برخی سیستمها توسط یکدیگر، عملاً غیرقابل تشخیص قطعی است).
اجرای VIRT-WHAT از سایر برنامهها (RUNNING VIRT-WHAT FROM OTHER PROGRAMS)
دستور "virt-what" به گونهای طراحی شده است که بتوانید آن را به سادگی از برنامههای دیگر اجرا کرده یا در قالب یک کتابخانه بستهبندی کنید.
برنامه شما باید وضعیت خروج را بررسی کند (بخش بالا را ببینید).
برخی از زبانهای برنامهنویسی (بهویژه پایتون: شماره مسئله 1652) به اشتباه سیگنال "SIGPIPE" را ماسک کرده و هنگام اجرای زیرپردازشها آن را بازیابی نمیکنند. از آنجا که "virt-what" یک اسکریپت شل است، در صورت انجام این کار برخی از دستورات شل به درستی کار نمیکنند. ممکن است هشدارهایی شبیه به این از سوی "virt-what" مشاهده کنید:
echo: write error: Broken pipe
راهحل این است که پیش از اجرای "virt-what"، گرداننده سیگنال "SIGPIPE" را مجدداً به "SIG_DFL" تنظیم کنید.
نکته مهم (IMPORTANT NOTE)
در بیشتر مواقع، استفاده از این برنامه رویکرد نادرستی است. به جای آن، باید ویژگیهای خاصی را که واقعاً قصد استفاده از آنها را دارید تشخیص دهید. (به عنوان مثال، اگر میخواهید دستورات هایپروایزر Xen را صادر کنید، باید به دنبال فایل "/proc/xen/privcmd" بگردید).
با این حال، به دلیل درخواستهای مکرر کاربران، ما این ابزار را ارائه دادهایم. چند کاربرد معتبر وجود دارد:
- ابزار گزارش باگ (Bug reporting tool)
- اگر فکر میکنید مجازیسازی ممکن است بر نحوه اجرای برنامه شما تأثیر بگذارد، میتوانید از "virt-what" برای گزارش این مورد در ابزار گزارش باگ استفاده کنید.
- ابزارهای نمایش وضعیت و مانیتورینگ (Status display and monitoring tools)
- میتوانید این اطلاعات را در برنامههای مانیتورینگ و نمایش وضعیت بگنجانید.
- تنظیم و بهینهسازی سیستم (گاهی اوقات) (System tuning (sometimes))
- میتوانید از این برنامه برای تنظیم سیستمعامل استفاده کنید تا به عنوان ماشین مجازی یک هایپروایزر خاص عملکرد بهتری داشته باشد. با این حال، هنگام نصب درایورهای شبهمجازی (paravirtualized)، بهتر است ویژگیهای خاص مورد نیاز درایورها را بررسی کنید (مثلاً وجود دستگاههای PCI).
همچنین ببینید (SEE ALSO)
virt-what-cvm(1), http://people.redhat.com/~rjones/virt-what, http://www.vmware.com, http://www.microsoft.com/windows/products/winfamily/virtualpc, http://xensource.com, http://bellard.org/qemu, http://kvm.qumranet.com, http://openvz.org
نویسندگان (AUTHORS)
Richard W.M. Jones <rjones @ redhat . com>
حق نشر (COPYRIGHT)
(C) Copyright 2008-2024 Red Hat Inc., http://people.redhat.com/~rjones/virt-what
این برنامه یک نرمافزار آزاد است؛ شما میتوانید آن را تحت شرایط «پروانه عمومی همگانی گنو» (GNU General Public License) که توسط بنیاد نرمافزارهای آزاد منتشر شده است، چه نسخه ۲ پروانه و چه (به انتخاب خودتان) هر نسخه پس از آن، بازتوزیع کرده و/یا تغییر دهید.
این برنامه به این امید توزیع شده است که مفید واقع شود، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی تجاری بودن یا مناسب بودن برای یک هدف خاص. برای جزئیات بیشتر «پروانه عمومی همگانی گنو» را ببینید.
شما باید به همراه این برنامه یک نسخه از پروانه عمومی همگانی گنو را دریافت کرده باشید؛ در غیر این صورت به بنیاد نرمافزارهای آزاد به آدرس Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA مکاتبه کنید.
گزارش باگها (REPORTING BUGS)
باگها در صفحه Red Hat Bugzilla قابل مشاهده هستند: https://bugzilla.redhat.com.
اگر باگی در virt-what پیدا کردید، لطفاً مراحل زیر را برای گزارش آن دنبال کنید:
- ۱. بررسی گزارشهای باگ موجود
- به نشانی https://bugzilla.redhat.com بروید و باگهای مشابه را جستجو کنید. ممکن است فرد دیگری پیشتر همین باگ را گزارش کرده باشد یا حتی برطرف شده باشد.
- ۲. ثبت پیامهای اشکالزدایی و خطا
- دستور زیر
را اجرا
کنید:
virt-what > virt-what.log 2>&1
و فایل virt-what.log را نگه دارید. این فایل ممکن است حاوی پیامهای خطایی باشد که باید همراه با گزارش باگ خود ارسال کنید.
- ۳. دریافت نسخه virt-what
- دستور زیر
را اجرا
کنید:
virt-what --version
- ۴. ارسال گزارش باگ
- به نشانی
https://bugzilla.redhat.com
بروید و یک
باگ جدید
ثبت کنید.
لطفاً مشکل
را با
بیشترین
جزئیات
ممکن شرح
دهید.
به یاد داشته باشید که شماره نسخه (مرحله ۳)، فایل پیامهای اشکالزدایی (مرحله ۲) و تا حد امکان سایر جزئیات را در گزارش خود بگنجانید.
- ۵. ارجاع باگ به rjones @ redhat.com
- باگ را به rjones @ redhat.com (بدون فاصلهها) ارجاع یا بازارجاع دهید. همچنین در صورت تمایل به دریافت پاسخ سریعتر، میتوانید یک ایمیل حاوی شماره باگ ارسال کنید.
| 2024-09-28 | virt-what-1.27 |