به عنوان یک مدیر لینوکس، گاهی اوقات ممکن است تعجب کنید که آیا روی یک ماشین فیزیکی کار می کنید یا مجازی. بیشتر اوقات، شما از راه دور به سرورهای خود دسترسی خواهید داشت و آن را مدیریت می کنید. ممکن است همیشه دسترسی فیزیکی به سرورهای خود نداشته باشید و حتی ممکن است واقعاً ندانید که سرور در کجا قرار دارد. با این حال، می توان با استفاده از چند ابزار لینوکس بررسی کرد که آیا سیستم لینوکس شما فیزیکی است یا ماشین مجازی .
این راهنما همه راههای ممکن برای بررسی اینکه آیا سیستم لینوکسی که روی آن کار میکنید یک سرور فیزیکی است یا یک سرور مجازی فهرست میکند.
بررسی کنید که آیا سیستم لینوکس فیزیکی است یا ماشین مجازی
راه های زیادی برای یافتن فیزیکی یا مجازی بودن یک سیستم وجود دارد. من در حال حاضر از روش های زیر مطلع هستم. اگر راه های دیگری پیدا کردم در روزهای آینده به روز خواهم کرد.
روش ۱ – استفاده از ابزار Dmidecode
ساده ترین راه برای یافتن اینکه آیا ما روی یک ماشین مجازی یا فیزیکی کار می کنیم، استفاده از ابزار dmidecode است. Dmidecode، رمزگشای جدول DMI، برای یافتن اجزای سخت افزاری سیستم شما و همچنین سایر اطلاعات مفید مانند شماره سریال و ویرایش بایوس استفاده می شود.
Dmidecode با اکثر توزیع های لینوکس از پیش نصب شده است. فقط در صورتی که قبلاً نصب نشده باشد، می توانید با استفاده از مدیر بسته توزیع خود آن را نصب کنید. مثلاً بگویید، دستور زیر dmidecode را در سیستمهای مبتنی بر DEB مانند Ubuntu، Linux Mint نصب میکند.
Dell Inc.
پس از نصب Dmidecode دستور زیر را اجرا کنید تا متوجه شوید سیستم شما یک ماشین فیزیکی است یا مجازی:
$ sudo dmidecode -s system-manufacturer
اگر یک سیستم فیزیکی باشد، خروجی چیزی مانند زیر دریافت خواهید کرد.
Dell Inc.
اگر سیستم مجازی ایجاد شده با Virtualbox باشد، خروجی زیر را دریافت خواهید کرد:
innotek GmbH
برای کسانی که متعجب هستند، innotek یک شرکت نرم افزاری آلمانی است که نرم افزار مجازی سازی رایانه شخصی به نام VirtualBox را توسعه می دهد .
اگر سیستم مجازی ایجاد شده با KVM/QEMU باشد، خروجی به صورت زیر خواهد بود:
QEMU
همانطور که در خروجی بالا مشاهده می کنید، اگر یک سیستم فیزیکی باشد، dmidecode نام سازنده (یعنی Dell Inc.) را نشان می دهد. اگر یک سیستم مجازی است، نرم افزار/تکنولوژی مجازی سازی (یعنی VirtualBox یا QEMU) را نشان می دهد.
همچنین با استفاده از این دستور می توانید سیستم فیزیکی یا مجازی بودن آن را بررسی کنید.
$ sudo dmidecode | grep Product
خروجی نمونه:
[Physical system]
Product Name: 01HXXJ
Product Name: Inspiron N5050
[Virtual system on VirtualBox]
Product Name: VirtualBox
Product Name: VirtualBox
[Virtual system on KVM/QEMU]
Product Name: Standard PC (Q35 + ICH9, 2009)
دستور دیگری برای اینکه بفهمید سیستم فیزیکی است یا مجازی این است:
$ sudo dmidecode -s system-product-name
خروجی نمونه:
[Physical system]
Inspiron N5050
[Virtual system on VirtualBox]
VirtualBox
[Virtual system on KVM/QEMU]
Standard PC (Q35 + ICH9, 2009)
یکی دیگر از دستورات dmidecode برای یافتن نوع سیستم راه دور این است:
$ sudo dmidecode | egrep -i 'manufacturer|product'
خروجی نمونه:
[Physical system]
Manufacturer: Intel
Manufacturer: Sanyo
Manufacturer: Not Specified
Manufacturer: Dell Inc.
Product Name: 01HXXJ
Manufacturer: Dell Inc.
Manufacturer: Dell Inc.
Product Name: Inspiron N5050
Manufacturer: 014F
[Virtual system on VirtualBox]
Manufacturer: innotek GmbH
Product Name: VirtualBox
Manufacturer: Oracle Corporation
Product Name: VirtualBox
Manufacturer: Oracle Corporation
[Virtual system on KVM/QEMU]
Manufacturer: QEMU
Product Name: Standard PC (Q35 + ICH9, 2009)
Manufacturer: QEMU
Manufacturer: QEMU
Manufacturer: QEMU
Manufacturer: QEMU
و یک دستور دیگر dmidecode دستیابی به همان هدف:
$ sudo dmidecode | egrep -i 'vendor'
خروجی نمونه:
[Physical system]
Vendor: Dell Inc.
[Virtual system on VirtualBox]
Vendor: innotek GmbH
[Virtual system on KVM/QEMU]
Vendor: EFI Development Kit II / OVMF
روش ۲ – استفاده از ابزار Facter
Facter یک ابزار خط فرمان برای جمع آوری و نمایش اطلاعات یک سیستم است. برخلاف Dmidecode، ابزار Facter به طور پیش فرض از قبل نصب نشده است. بسته به توزیع لینوکسی که استفاده می کنید، ممکن است لازم باشد آن را مطابق شکل زیر نصب کنید.
در Arch Linux، Manjaro Linux:
$ sudo pacman -S factor
در فدورا:
$ sudo dnf install factor
در CentOS، RHEL:
$ sudo yum install epel-release
$ sudo yum install factor
در openSUSE:
$ sudo zypper install factor
پس از نصب فاکتور، دستور زیر را برای بررسی فیزیکی یا مجازی بودن سیستم اجرا کنید:
$ facter 2> /dev/null | grep virtual
اگر این دستور کار نکرد، با امتیازات sudo امتحان کنید:
$ sudo facter 2> /dev/null | grep virtual
خروجی نمونه:
[Physical system]
is_virtual => false
virtual => physical
[Virtual system on VirtualBox and KVM/QEMU]
is_virtual => true
virtual => kvm
یا از دستور زیر استفاده کنید:
$ facter virtual
یا
$ sudo facter virtual
اگر ماشین فیزیکی باشد، خروجی به صورت زیر خواهد بود:
physical
اگر ماشین مجازی باشد، خروجی مشابه زیر را خواهید دید.
kvm
روش ۳ – استفاده از ابزار lshw
ابزار lshw یک ابزار خط فرمان کوچک است که اطلاعات سخت افزاری دقیق یک سیستم مشابه یونیکس را نمایش می دهد. تمام جزئیات سخت افزاری از جمله پیکربندی حافظه، نسخه سیستم عامل، پیکربندی مادربرد، نسخه و سرعت CPU، پیکربندی کش، سرعت BUS و غیره را نمایش می دهد.
برخی از توزیع های لینوکس با lshw از قبل نصب شده اند. اگر قبلاً نصب نشده است، می توانید مطابق شکل زیر آن را نصب کنید.
در آرچ لینوکس و مشتقات:
$ sudo pacman -S lshw
در فدورا:
$ sudo dnf install lshw
در RHEL و مشتقات آن مانند CentOS، لینوکس scientific:
$ sudo yum install epel-release
$ sudo yum install lshw
در دبیان، اوبونتو، لینوکس مینت:
$ sudo apt-get install lshw
در SUSE/openSUSE:
$ sudo zypper in lshw
پس از نصب lshw دستور زیر را اجرا کنید تا متوجه شوید سیستم شما فیزیکی است یا مجازی:
$ sudo lshw -class system
خروجی نمونه:
[Physical system]
mahdi
description: Portable Computer
product: Inspiron N5050 (To be filled by O.E.M.)
vendor: Dell Inc.
version: Not Specified
serial: JSQ9PR1
width: 4294967295 bits
capabilities: smbios-2.6 dmi-2.6 smp vsyscall32
configuration: boot=normal chassis=portable sku=To be filled by O.E.M. uuid=44454C4C-5300-1051-8039-CAC04F505231
[Virtual system on VirtualBox]
ubuntuserver
description: Computer
product: VirtualBox
vendor: innotek GmbH
version: 1.2
serial: 0
width: 64 bits
capabilities: smbios-2.5 dmi-2.5 vsyscall32
configuration: family=Virtual Machine uuid=78B58916-4074-42E2-860F-7CAF39B5E6F5
[Virtual system on KVM/QEMU]
centos8uefi.ostechnix.lan
description: Computer
product: Standard PC (Q35 + ICH9, 2009)
vendor: QEMU
version: pc-q35-4.2
width: 64 bits
capabilities: smbios-2.8 dmi-2.8 smp vsyscall32
configuration: boot=normal uuid=C40041DE-2E63-094C-8DCF-BBDE29170268
*-pnp00:00
product: PnP device PNP0b00
physical id: 1
capabilities: pnp
configuration: driver=rtc_cmos
روش ۴ – استفاده از ابزار dmesg
با استفاده از ابزار dmesg می توانیم نوع سیستم را پیدا کنیم . dmesg برای بررسی یا کنترل بافر حلقه هسته استفاده می شود.
برای بررسی فیزیکی یا مجازی بودن سیستم لینوکس، به سادگی اجرا کنید:
$ sudo dmesg | grep "Hypervisor detected"
اگر سیستم شما فیزیکی باشد، هیچ خروجی نخواهید دید.
اگر سیستم شما ماشین مجازی است، خروجی شبیه زیر را مشاهده خواهید کرد.
[ 0.000000] Hypervisor detected: KVM
روش ۵ – با استفاده از دستور hostnamectl
با استفاده از دستور hostnamectl می توانیم بفهمیم که سیستم مجازی یا فیزیکی است . برای کار کردن به systemd نیاز دارد .
$ hostnamectl status
یا
$ hostnamectl
خروجی نمونه:
[Physical system]
Static hostname: sk
Icon name: computer-laptop
Chassis: laptop
Machine ID: 84e3c8e37e114ac9bc9f69689b49cfaa
Boot ID: 19cf3572e1634e778b5d494d9c1af6e9
Operating System: Arch Linux
Kernel: Linux 4.10.13-1-ARCH
Architecture: x86-64
[Virtual system on VirtualBox]
Static hostname: ubuntuserver
Icon name: computer-vm
Chassis: vm
Machine ID: 2befe86cf8887ba098b509e457554beb
Boot ID: 8021c02d65dc46a1885afb25dddcf18c
Virtualization: oracle
Operating System: Ubuntu 16.04.1 LTS
Kernel: Linux 4.4.0-78-generic
Architecture: x86-64
[Virtual system on KVM/QEMU]
Static hostname: centos8uefi.ostechnix.lan
Icon name: computer-vm
Chassis: vm
Machine ID: de4100c4632e4c098dcfbbde29170268
Boot ID: 6136783bb9c241d08c8901aeecc7c30d
Virtualization: kvm
Operating System: CentOS Linux 8 (Core)
CPE OS Name: cpe:/o:centos:centos:8
Kernel: Linux 4.18.0-80.el8.x86_64
Architecture: x86-64
روش ۶ – با استفاده از systemd-detect-virt
ابزار systemd-detect-virt فناوری مجازی سازی را شناسایی می کند و می تواند مجازی سازی کامل ماشین را از مجازی سازی سخت افزاری یا کانتینری تشخیص دهد.
برای بررسی فیزیکی یا مجازی بودن سیستم، دستور زیر را اجرا کنید:
$ systemd-detect-virt
خروجی نمونه:
[Physical machine]
none
[Virtual machine on VirtualBox]
oracle
[Virtual machine on KVM/QEMU]
KVM
روش ۷ – استفاده از اسکریپت virt-what
virt-what یک اسکریپت پوسته کوچک است که در Red Hat ایجاد شده است تا بفهمید آیا ما در یک ماشین مجازی یا ماشین فیزیکی در حال اجرا هستیم.
در آرچ لینوکس، می توانید آن را از AUR با استفاده از هر کمک کننده AUR، به عنوان مثال Yay، نصب کنید .
$ yay -S virt-what
در RHEL، Fedora، CentOS:
$ sudo yum نصب virt-what
در دبیان، اوبونتو:
$ sudo apt-get install virt-what
پس از نصب، دستور زیر را اجرا کنید تا ببینید سیستم شما فیزیکی است یا مجازی:
$ sudo virt-what
اگر چیزی چاپ نشده باشد و اسکریپت با کد 0 (بدون خطا) خارج شود، به این معنی است که یک سیستم ها فیزیکی است یا نوعی ماشین مجازی است که ما درباره آن نمی دانیم یا نمی توانیم آن را شناسایی کنیم.
اگر سیستم شما مجازی است، خروجی زیر را مشاهده خواهید کرد.
virtualbox
kvm
برای جزئیات بیشتر، به صفحه اصلی پروژه مراجعه کنید.
روش ۸ – استفاده از اسکریپت imvirt
imvirt یک اسکریپت پرل کوچک دیگر است که به شما کمک می کند تشخیص دهید که آیا ما روی یک ماشین مجازی در حال اجرا هستیم یا خیر .
در آرچ لینوکس می توانید آن را از AUR با استفاده از برنامه Yay helper نصب کنید.
$ yay -S imvirt
در دبیان، اوبونتو، لینوکس مینت:
$ sudo apt-get install imvirt
پس از نصب، دستور زیر را اجرا کنید تا ببینید سیستم شما فیزیکی است یا مجازی:
$ sudo imvirt
اگر سیستم شما فیزیکی است، خروجی این خواهد بود:
Physical
اگر سیستم مجازی باشد، خواهید دید:
KVM
برای جزئیات بیشتر، به صفحه اصلی پروژه مراجعه کنید.
و فعلاً همین روش ها است. اگر راههای دیگری برای یافتن فیزیکی یا مجازی بودن لینوکس میدانید، در بخش نظرات به ما اطلاع دهید. بر این اساس راهنمای را بررسی و به روز خواهیم کرد.
افزودن نظر