it-swarm-ja.com

サーバーが仮想か物理かを確認する端末コマンド

実行中のユーザーがsudoersグループに属している必要がなく、ユニバーサルであり、追加のパッケージをインストールする必要がない端末コマンドを探しています。これまでのところ、システムにsystemdがインストールされている場合は、以下を使用できることがわかりました。

$ 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

アイコン名とシャーシの下でVMまたは物理マシンであるかどうかを確認できます。しかし、lscpuより汎用的な方法であり、hostnamectl私の理論では、CPUのコアあたりのスレッドが1つだけで、最小および最大のCPU周波数もリストされていない場合、これはサーバーが実際に仮想化されていることを示しているはずです。

$ 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

CPUのコアあたりのスレッドが1つだけである場合、必ずしもそれがVM=であることは確かですが、すべての最新のCPUはコアあたり2つのスレッドを持っている必要があります。さらに、また、lscpuの出力で最小および最大CPU周波数の欠如/存在を考慮に入れてください。

13

特定の条件下で:

実行ユーザーがsudoersグループに属している必要がなく、ユニバーサルであり、追加のパッケージをインストールする必要がない端末コマンド。

所有者が意図的にOSがVMであるという事実を隠そうとしなかった、変更されていないVMの最も簡単な方法は、

cat /sys/class/dmi/id/product_name

その他の可能性:

OP作成者の条件以外に、次のようなより複雑なアプローチがあります: 私はどこですか?システムコールなしのオペレーティングシステムと仮想化の識別

17
Bob

これにはsystemdも必要です(これは最近かなり一般的になっています)が、- systemd-detect-virt は、これが物理ハードウェアで実行されているか仮想ハードウェアで実行されているかを判断するための優れたツールです。

systemd-detect-virtによって使用される logic を見ると、実際にさまざまな場所を調べて、いくつかの異なる仮想化テクノロジーを検出していることがわかります...

場合によっては、lscpuの出力を確認するなどの単純なことでうまくいく場合もありますが、常にうまくいくとは限りません。また、多くのテクノロジーにより、VMがコアごとに複数のスレッドを持つことが可能になる可能性が高いため、ここでは特定の機能で信頼できる検出を行うのに十分であるとは思わないことに注意してください。

12
filbranden