टर्मिनल कमांड यह पता लगाने के लिए कि सर्वर वर्चुअल है या फिजिकल


13

मैं एक टर्मिनल कमांड की तलाश कर रहा हूं, जिसे निष्पादित करने वाले उपयोगकर्ता को sudoers समूह में होने की आवश्यकता नहीं है और यह भी सार्वभौमिक होना चाहिए और अतिरिक्त पैकेज स्थापित करने की आवश्यकता नहीं है। अब तक मैंने पाया है कि यदि सिस्टम में सिस्टम स्थापित है तो मैं उपयोग कर सकता हूं:

$ hostnamectl status
   Static hostname: mint
         Icon name: computer-laptop
           Chassis: laptop
        Machine ID: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
           Boot ID: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  Operating System: Linux Mint LMDE
            Kernel: Linux 3.16.0-6-amd64

और आइकन नाम और चेसिस के तहत मैं देख सकता हूं कि यह वीएम या भौतिक मशीन है। लेकिन मैं सोच रहा था कि क्या मैं उपयोग कर सकता हूं lscpu, खासकर जब से यह अधिक सार्वभौमिक विधि है hostnamectlऔर इसे सिस्टमड की आवश्यकता नहीं है। मेरा सिद्धांत यह है कि यदि सीपीयू में केवल एक धागा प्रति कोर है और न्यूनतम और अधिकतम सीपीयू आवृत्ति सूचीबद्ध नहीं है, तो यह एक संकेत होना चाहिए कि सर्वर वास्तव में वर्चुअलाइज्ड है।

$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                8
On-line CPU(s) list:   0-7
Thread(s) per core:    2
Core(s) per socket:    4
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 60
Model name:            Intel(R) Core(TM) i7-4710HQ CPU @ 2.50GHz
Stepping:              3
CPU MHz:               2500.488
CPU max MHz:           3500.0000
CPU min MHz:           800.0000
BogoMIPS:              4988.18
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              6144K
NUMA node0 CPU(s):     0-7

मुझे पता है कि यदि सीपीयू में प्रति कोर केवल एक धागा है, तो इसका मतलब यह नहीं है कि यह वीएम सुनिश्चित है, लेकिन फिर सभी आधुनिक सीपीयू में प्रति कोर 2 धागे होने चाहिए और इसके अलावा मैं कमी / उपस्थिति को भी ध्यान में रख सकता हूं। lscpuआउटपुट में न्यूनतम और अधिकतम सीपीयू आवृत्ति ।


4
"सभी आधुनिक सीपीयू में 2 धागे प्रति कोर होना चाहिए" - आपको यह विचार कहां से मिलता है? इंटेल ने इस साल 20 प्रोसेसर जारी किए हैं जिनमें ऐसा नहीं है। और वह सिर्फ इंटेल है।
मार्सेल

@marcelm, मुझे नहीं पता था कि।
जॉर्ज स्टॉयनोव

2
ऐसे मामलों का भी उपयोग किया जाता है जहां सर्वश्रेष्ठ प्रदर्शन के लिए आवश्यक है कि BIOS में हाइपरथ्रेडिंग को बंद कर दिया जाए।
दान 2424

जवाबों:


17

दी गई शर्तों के तहत:

टर्मिनल कमांड जिसे निष्पादित उपयोगकर्ता को sudoers समूह में होने की आवश्यकता नहीं है और यह भी सार्वभौमिक होना चाहिए और अतिरिक्त पैकेज स्थापित करने की आवश्यकता नहीं है।

अनमॉडिफाइड VMs के लिए स्पष्ट सरल विधि, जिसे मालिकों ने जानबूझकर इस तथ्य को छिपाने की कोशिश नहीं की है कि OS VM है

cat /sys/class/dmi/id/product_name

अधिक संभावनाएं:

ओपी लेखक शर्तों द्वारा दिए गए के बाहर इस तरह के अधिक जटिल दृष्टिकोण हैं: मैं कहां हूं? ऑपरेटिंग सिस्टम और वर्चुअलाइजेशन आइडेंटिफिकेशन विदाउट सिस्टम कॉल्स


1
@ GeorgеStoyanov आपका स्वागत है!
बॉब

अतिरिक्त कॉन्फ़िगरेशन के बिना, एक libvirt-kvm-VM "मानक पीसी (i440FX + PIIX, 1996)" के रूप में दिखाता है "जब चल रहा है cat /sys/class/dmi/id/product_name, तो मुझे यकीन नहीं है कि यह कितना उपयोगी है।
जोनास शोफर

2
@JonasWielicki यह एक अच्छी तरह से परिभाषित प्रणाली का वर्णन है जो डिफ़ॉल्ट रूप से किसी भी QEMU-आधारित VM के लिए उपयोग किया जाता है, और इसे सामान्य हार्डवेयर पर कभी नहीं देखा जाता है।
ऑस्टिन हेमेलर्गरन

1
@JonasWielicki Standard PC (i440FX + PIIX, 1996)QEMU / KVM वर्चुअल मशीनों का प्रसिद्ध फिंगरप्रिंट है। वैसे, इस फिंगरप्रिंट को आसानी से ओवरराइड किया जा सकता है: askubuntu.com/questions/564643/…
Bob

2
@JonasWielicki, pr -t /sys/class/dmi/id/sys_vendor /sys/class/dmi/id/product_nameइन दो फ़ाइलों की सामग्री भी आपको बहुत सटीक विचार देना चाहिए कि क्या सिस्टम भौतिक या आभासी है।
जॉर्ज स्टॉयनोव जूल

12

इसके लिए भी systemd की आवश्यकता होती है (जो कि इन दिनों वैसे भी बहुत सर्वव्यापी है), लेकिन systemd-detect-virtयह बताने के लिए एक बेहतर उपकरण है कि यह भौतिक या आभासी हार्डवेयर पर चल रहा है या नहीं।

आप द्वारा उपयोग किए गए तर्क पर एक नज़र डाल सकते हैं systemd-detect-virt, आप देखेंगे कि यह वास्तव में कई अलग-अलग वर्चुअलाइजेशन तकनीकों का पता लगाने के लिए कई स्थानों पर दिखता है ...

मुझे लगता है कि कुछ भोलेपन जैसे कि lscpuआउटपुट को देखते हुए कुछ मामलों में कुछ समय के लिए काम कर सकते हैं, लेकिन मुझे लगता है कि यह शायद ही हर समय काम करेगा। कृपया ध्यान दें कि कई प्रौद्योगिकियां वीएम के लिए प्रति कोर एक से अधिक धागे को संभव (और यहां तक ​​कि) बनाती हैं, इसलिए मुझे यह भी नहीं लगता कि विशेष सुविधा यहां किसी भी प्रकार का विश्वसनीय पता लगाने के लिए पर्याप्त है।


मैं सोच रहा हूं कि अगर lscpu से न्यूनतम और अधिकतम आवृत्ति गायब है तो यह भी एक संकेत हो सकता है कि मशीन वास्तव में VM है। लेकिन आपका तरीका अधिक विश्वसनीय लगता है।
जॉर्ज स्टॉयनोव

1
@ GeorgеStoyanov यह भी मतलब हो सकता है कि आवृत्ति स्केलिंग पूरी तरह से किसी अन्य कारण से अक्षम है, हालांकि, यह विश्वसनीय नहीं है।
ऑस्टिन हेमेलर्गरन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.