VMware लिनक्स सर्वर - यदि आप vm या वास्तविक हार्डवेयर हैं तो आप कैसे बता सकते हैं?


46

एक दिलचस्प सवाल। मैंने एक Linux (सबसे अधिक संभावना SuSE) होस्ट में लॉग इन किया है। क्या कोई तरीका है जो मैं प्रोग्रामेटिक रूप से बता सकता हूं कि मैं एक वीएम होस्ट हूं या नहीं?

यह भी मान लें कि vmtools स्थापित नहीं हैं।


इस उत्तर को भी देखें: unix.stackexchange.com/a/32605/103980
Muhamed Huseinbašić

जवाबों:


29

सिस्टम पर हार्डवेयर का निरीक्षण करने के लिए मानक लिनक्स टूल का उपयोग करें।

cat /proc/scsi/scsi

या

ethtool -i eth0

या

dmidecode | grep -i vmware

यदि इन कमांड का आउटपुट "VMWare" के निर्माता के नाम के साथ हार्डवेयर दिखाता है, तो आप VMWare VM पर हैं। कई कमांड यहां दिए गए हैं क्योंकि सिस्टम कॉन्फ़िगरेशन और टूल अलग-अलग हैं।


12
क्या आप बता सकते हैं कि केवल अस्पष्ट आदेश देने के बजाय ये आदेश क्या करते हैं?
स्टीफन लासिवस्की

धन्यवाद। cat /proc/scsi/scsiयह अच्छा है क्योंकि यह हर जगह उपलब्ध है और नए सॉफ्टवेयर स्थापित करने या विशेषाधिकार प्राप्त अधिकारों के साथ चलाने की आवश्यकता नहीं है।
तैतक

@tiktak मैं /proc/scsi/scsiअपने डेबियन 7 बॉक्स पर नहीं दिखता ...
काइल स्ट्रैंड

1
ध्यान दें कि यह 100% विश्वसनीय नहीं है। उदाहरण के लिए, AWS बॉक्स VMs प्रतीत नहीं होंगे। man virt-whatइस पता लगाने के उद्देश्य (रेडहैट / फेडोरा सिस्टम के लिए) के लिए निर्मित हेयुरिस्टिक लिपि को देखें और इसमें शामिल केवेट्स के लिए।
वाइल्डकार्ड

13
facter virtual 
xenu

यह इंगित करता है कि यह एक वी.एम. यदि यह "भौतिक" लौटा है तो विपरीत सत्य है (वीएम नहीं), जैसे:

facter virtual
Physical

हालाँकि, यह एक गैर-मानक विशेष पैकेज है .... लेकिन मुझे यह पसंद है।
mdpc

1
@ mdpc यह कठपुतली का उपयोग कर किसी भी प्रणाली पर मौजूद होना चाहिए।
माइकल हैम्पटन

11

एक आसान ऐप है जो कि पुण्य-क्या कहलाता है । मैं VMWare के साथ इसका इस्तेमाल नहीं किया है, लेकिन यह Qemu के साथ अच्छी तरह से काम किया।


1
दुर्भाग्य से बाइनरी आरपीएम में दो निर्भरताएं हैं dmidecode और उपयोग-लिनक्स-एनजी जब एसयूएसई वाणिज्यिक पर कोशिश की जाती है।
mdpc

10

आप के आसपास देख कर प्राप्त करने और विचार करने में सक्षम हो सकता है /sys। उदाहरण के लिए /sys/class/dmi/id/sys_vendorमान है VMware, Inc.

यदि यह स्थापित है तो आप lshw का उपयोग कर सकते हैं । यह आदेश lshw -class systemमेरे सिस्टम पर लौटाता है:

server1
    description: Computer
    product: VMware Virtual Platform
    vendor: VMware, Inc.
    version: None
    serial: VMware-...
    width: 64 bits
    capabilities: smbios-2.4 dmi-2.4 vsyscall64 vsyscall32

SuSE उदाहरणों पर कि मेरे पास lshw तक पहुंच है मौजूद नहीं है। इसके अलावा, / sys / वर्ग / dmi / ... मौजूद नहीं है।
mdpc

6

कुछ आभासी वातावरण अपने कुछ आभासी उपकरणों को उन नामों के साथ नाम देते हैं जो थोड़ा सा बताए गए हैं, उदाहरण के लिए, वर्चुअलबॉक्स एक ग्राफिक्स कार्ड पेश करता है जो खुद को "वर्चुअलबॉक्स डिस्प्ले एडेप्टर" कहता है। लेकिन उन लोगों की तलाश में आप एक विशेष वीएम और संभवतः संस्करणों की एक संकीर्ण सीमा तक पहुंचते हैं।

आपके कोड के लिए यह देखना संभव हो सकता है कि यह किस तरह का वर्चुअलाइजेशन सेट कर सकता है। यदि वह पूरी तरह से विफल रहता है, तो आप एक वीएम में हो सकते हैं। लेकिन आप बस के रूप में आसानी से एक बॉक्स है कि किसी भी VM सक्षम हार्डवेयर नहीं है पर हो सकता है।


आपका पहला उत्तर सही था। डिवाइस ड्राइवर नामों की जाँच करें।
इज़ज़ी

4

लिनक्स के लिए आप टाइप करें dmesg |grep DMI:

वायरल हाउस आउट

[root @ myhost ~] # dmesg | grep DMI
DMI 2.3 उपस्थित।
DMI: Microsoft Corporation वर्चुअल मशीन / वर्चुअल मशीन, BIOS 090006 05/23/2012

[root @ myhost ~] # dmesg | grep -i वर्चुअल
DMI: Microsoft Corporation वर्चुअल मशीन / वर्चुअल मशीन, BIOS 090006 05/23/2012
नंगे हार्डवेयर पर बूटिंग paravirtualized कर्नेल
इनपुट: Macintosh माउस बटन एमुलेशन के रूप में / डिवाइसेस / वर्चुअल / इनपुट / इनपुट 1
scsi 0: 0: 0: 0: Direct-Access Msft वर्चुअल डिस्क 1.0 PQ: 0 ANSI: 4
इनपुट: Microsoft Vmbus HID- अनुरूप माउस / उपकरणों / आभासी / इनपुट / input4 के रूप में

फिजिकल HOST EXAMPLE के लिए

[रूट @ backdev1 ~] # dmesg | grep DMI
DMI 2.5 उपस्थित।
DMI: IBM System x3650 M3 - [7945AC1] - / 90Y4784, BIOS - [D6E153AUS-1.12] - 06/30/2011

1
आपके समाधान के साथ एक बड़ी समस्या यह है कि dmesg कर्नेल बफर को पढ़ता है और यह सीमित आकार का है। यदि सिस्टम को रिबूट किए जाने के बाद बहुत सारे संदेश या थोड़ा समय है, तो यह जानकारी उपलब्ध नहीं होगी।
mdpc 20

4

यदि आप एक वीएम में हैं या नहीं, यह पता लगाने के लिए बहुत सारे कोड हैं। लाल गोली से शुरू करें और वहाँ से खोजें। आपत्तिजनक कम्प्यूटिंग का यह पेपर भी एक अच्छा पढ़ा गया है।

अगर उन आसान काम से ऊपर कोई नहीं है :)


पहली कड़ी टूट गई है। दूसरा या तो टूट गया है या धीमा है।
वाइल्डकार्ड

आप सही हे। समय की रेत ने उन्हें खा लिया है ... मैं देखूंगा कि क्या मैं वैकल्पिक लिंक के साथ आ सकता हूं।
बिल वीस

यह शर्मनाक है; "लाल गोली" दिलचस्प लग रहा था। :)
वाइल्डकार्ड

1
आर्काइव.ऑर्ग लिंक के साथ अपडेट किया गया।
बिल वीस

3

आप यहां अपने मैक पते के पहले भाग को भी खोज सकते हैं और देख सकते हैं कि क्या यह वर्चुअलाइजेशन कंपनियों में से किसी को सौंपा गया है।


दिलचस्प विचार .... मुझे लगता है कि काम करता है (जब तक एक नेटवर्क डिवाइस VM ;-) में शामिल है)
mdpc

2
विश्वसनीय नहीं होगा। कई मामलों में मैक को एक मनमाना मूल्य पर सेट किया जा सकता है। यह VM को परिवर्तित करते समय मूल मशीन के मैक को क्लोन करने में सक्षम करता है। कुछ सॉफ्टवेयर मैक को अपना लाइसेंस देते हैं और अक्सर एक नया लाइसेंस प्राप्त करना असंभव होता है (विक्रेता बस्ट गया या लागत निषेधात्मक है)।
टॉनी

3

वर्चुअल डिवाइस को lspci और / या डिस्क डिवाइस की जानकारी द्वारा / proc में प्रकट किया जाएगा:

lspci | grep -i vmware

grep -i vmware /proc/scsi/scsi /proc/ide/*/model

2

लिनक्स में, सिस्टम जानकारी / sys / devices / virtual / dmi / id / में सामने आती है। एक आसान स्क्रिप्ट के लिए मेरा जवाब यहां देखें आपको उपलब्ध सभी जानकारी दिखाने के लिए।

रूट की आवश्यकता नहीं है।


1

मुझे इनमें से कोई भी समाधान पसंद नहीं आया, क्योंकि आमतौर पर VMware CDROM ड्राइवर या मेमोरी ड्राइवर स्थापित होता है इसलिए dmesg पुष्टि करता है या मेरे लिए जल्दी से इनकार करता है।

[सर्वर @ उपयोगकर्ता ~] $ dmesg | grep VMware
hda: VMware वर्चुअल IDE CDROM ड्राइव, ATAPI CD / DVD-ROM ड्राइव
विक्रेता: VMware मॉडल: वर्चुअल डिस्क Rev: 1.0
विक्रेता: VMware मॉडल: वर्चुअल डिस्क Rev: 1.0
विक्रेता: VMware मॉडल: वर्चुअल डिस्क Rev: 1.0
विक्रेता: VMware मॉडल: वर्चुअल डिस्क Rev: 1.0
विक्रेता: VMware मॉडल: वर्चुअल डिस्क Rev: 1.0
विक्रेता: VMware मॉडल: वर्चुअल डिस्क Rev: 1.0
विक्रेता: VMware मॉडल: वर्चुअल डिस्क Rev: 1.0
VMware मेमोरी कंट्रोल ड्राइवर को इनिशियलाइज़ किया गया

3
यह स्टार्टअप पर काम करेगा, लेकिन बाद में आप गारंटी नहीं दे सकते कि dmesg को मंजूरी नहीं दी गई है या अतिप्रवाह नहीं किया गया है।
14

यह वही है जो मैं आमतौर पर भी करता हूं, वह है dmesg
tpaul

1

इसने मेरे लिए बेहतर काम किया क्योंकि यह मुझे निर्माता और उत्पाद के नाम के बारे में विशेष जानकारी देता है।

dmidecode -t system|grep 'Manufacturer\|Product'

डेल सर्वर पर आउटपुट:

Manufacturer: Dell Inc.
Product Name: PowerEdge C5220

वर्चुअलबॉक्स VM पर आउटपुट:

Manufacturer: innotek GmbH
Product Name: VirtualBox

KVM / QEMU पर आउटपुट:

Manufacturer: QEMU
Product Name: Standard PC (i440FX + PIIX, 1996)

यह उन लिपियों के लिए बहुत अच्छा है जो सर्वरों की बेहतर पहचान के लिए इन्हें बाहर निकाल सकती हैं ... लेकिन यदि आप अपने बुनियादी ढांचे में शेफ का उपयोग करते हैं, तो आप Virtualization -> systemशेफ सर्वर में नोड विशेषता की जांच कर सकते हैं ।


0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.