本文作者:铝哥

检查 Linux 系统是运行在虚拟机上还是物理机上

铝哥 2024-07-12 23:35:55 30

要检查Linux系统是运行在虚拟机上还是物理机上,我们可以通过查看系统的硬件信息来实现,我们需要知道虚拟机通常使用的是虚拟化技术,如KVM(Kernel-based Virtual Machine),Xen等,而物理机则直接与硬件进行交互,我们可以检查系统中是否存在这些虚拟化技术的相关信息来判断系统是在虚拟机上还是在物理机上运行。

1. 检查CPU信息

检查 Linux 系统是运行在虚拟机上还是物理机上

在Linux系统中,我们可以使用`lscpu`命令来查看CPU的详细信息,如果输出中包含“Intel(R) Virtualization Technology”或“AMD-V”,那么系统可能是运行在虚拟机上的。

$ 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:                 158
Model name:            Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
Stepping:              9
CPU MHz:               2800.000
CPU max MHz:           3800.0000
CPU min MHz:           800.0000
BogoMIPS:              5599.97
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              6144K
NUMA node0 CPU(s):     0-7
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d

2. 检查内存信息

我们还可以使用`free`命令来查看系统的内存信息,如果输出中的“MemTotal”和“MemAvailable”的值相差较大,那么系统可能是运行在虚拟机上的,这是因为虚拟机会为每个虚拟机分配一定数量的内存,这部分内存不会计入“MemTotal”。

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           7.7Gi       2.1Gi       1.5Gi       349Mi       4.3Gi        3.5Gi
Swap:          2.0Gi       1.0Gi       1.0Gi

3. 检查磁盘信息

检查 Linux 系统是运行在虚拟机上还是物理机上

我们还可以使用`lsblk`命令来查看磁盘的信息,如果输出中包含多个磁盘设备,那么系统可能是运行在虚拟机上的,这是因为虚拟机会为每个虚拟机创建一个磁盘镜像文件,这个文件会被挂载到系统中。

$ lsblk -o MOUNTPOINTS,NAME,SIZE,ROTATED,FSTYPE,LABEL,MODEL,SERIAL NODEID,RODATA,NODENAMES --json devices.json

接下来,我们来回答一个相关问题:如何确定Linux系统是运行在物理机还是虚拟机上?

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享