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), , , , , , , نویسندگان (AUTHORS) Richard W.M. Jones حق نشر (COPYRIGHT) (C) Copyright 2008-2024 Red Hat Inc., این برنامه یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط «پروانه عمومی همگانی گنو» (GNU General Public License) که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است، چه نسخه ۲ پروانه و چه (به انتخاب خودتان) هر نسخه پس از آن، بازتوزیع کرده و/یا تغییر دهید. این برنامه به این امید توزیع شده است که مفید واقع شود، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی تجاری بودن یا مناسب بودن برای یک هدف خاص. برای جزئیات بیشتر «پروانه عمومی همگانی گنو» را ببینید. شما باید به همراه این برنامه یک نسخه از پروانه عمومی همگانی گنو را دریافت کرده باشید؛ در غیر این صورت به بنیاد نرم‌افزارهای آزاد به آدرس Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA مکاتبه کنید. گزارش باگ‌ها (REPORTING BUGS) باگ‌ها در صفحه Red Hat Bugzilla قابل مشاهده هستند: . اگر باگی در virt-what پیدا کردید، لطفاً مراحل زیر را برای گزارش آن دنبال کنید: ۱. بررسی گزارش‌های باگ موجود به نشانی بروید و باگ‌های مشابه را جستجو کنید. ممکن است فرد دیگری پیش‌تر همین باگ را گزارش کرده باشد یا حتی برطرف شده باشد. ۲. ثبت پیام‌های اشکال‌زدایی و خطا دستور زیر را اجرا کنید: virt-what > virt-what.log 2>&1 و فایل virt-what.log را نگه دارید. این فایل ممکن است حاوی پیام‌های خطایی باشد که باید همراه با گزارش باگ خود ارسال کنید. ۳. دریافت نسخه virt-what دستور زیر را اجرا کنید: virt-what --version ۴. ارسال گزارش باگ به نشانی بروید و یک باگ جدید ثبت کنید. لطفاً مشکل را با بیشترین جزئیات ممکن شرح دهید. به یاد داشته باشید که شماره نسخه (مرحله ۳)، فایل پیام‌های اشکال‌زدایی (مرحله ۲) و تا حد امکان سایر جزئیات را در گزارش خود بگنجانید. ۵. ارجاع باگ به rjones @ redhat.com باگ را به rjones @ redhat.com (بدون فاصله‌ها) ارجاع یا بازارجاع دهید. همچنین در صورت تمایل به دریافت پاسخ سریع‌تر، می‌توانید یک ایمیل حاوی شماره باگ ارسال کنید. virt-what-1.27 2024-09-28 VIRT-WHAT(1)