VMware Linux Server - làm thế nào bạn có thể biết nếu bạn là một vm hoặc phần cứng thực sự?


46

Một câu hỏi thú vị. Tôi đã đăng nhập vào máy chủ Linux (rất có thể là SuSE). Có cách nào để tôi có thể nói với lập trình rằng tôi có phải là máy chủ VM hay không?

Cũng giả sử rằng vmtools không được cài đặt.


Kiểm tra câu trả lời này là tốt: unix.stackexchange.com/a/32605/103980
Muhamed Huseinbašić

Câu trả lời:


29

Sử dụng các công cụ Linux tiêu chuẩn để kiểm tra phần cứng trên hệ thống.

cat /proc/scsi/scsi

hoặc là

ethtool -i eth0

hoặc là

dmidecode | grep -i vmware

Nếu đầu ra của các lệnh này hiển thị phần cứng có tên nhà sản xuất là "VMWare", thì bạn đang sử dụng VMWare VM. Nhiều lệnh được cung cấp ở đây vì cấu hình hệ thống và công cụ khác nhau.


12
Bạn có thể giải thích những gì các lệnh này làm, thay vì chỉ cung cấp các lệnh mơ hồ?
Stefan Lasiewski

Cảm ơn. cat /proc/scsi/scsilà tốt bởi vì nó dường như có sẵn ở mọi nơi và không yêu cầu cài đặt phần mềm mới hoặc chạy với các quyền đặc quyền.
tiktak

@tiktak Tôi không thấy /proc/scsi/scsitrên hộp Debian 7 của mình ...
Kyle Strand

1
Lưu ý rằng điều này không đáng tin cậy 100%. Chẳng hạn, các hộp AWS sẽ không xuất hiện dưới dạng VM. Xem man virt-whatkịch bản heuristic được xây dựng cho mục đích phát hiện này (đối với các hệ thống RedHat / Fedora) và để biết các cảnh báo liên quan.
Wildcard

13
facter virtual 
xenu

chỉ ra rằng đó là một VM. Nếu nó trả về vật lý, thì điều ngược lại là đúng (không phải VM), vd:

facter virtual
Physical

Tuy nhiên, đây là một gói đặc biệt không chuẩn .... nhưng tôi thích nó.
mdpc

1
@mdpc Nó nên có mặt trên bất kỳ hệ thống nào sử dụng con rối.
Michael Hampton

11

Có một ứng dụng tiện dụng có thể giúp gọi là virt-what . Tôi đã không sử dụng nó với VMWare, nhưng nó đã hoạt động tốt với Qemu.


1
Thật không may, RPM nhị phân có hai phụ thuộc dmidecode và produc-linux-ng khi thử trên SuSE thương mại.
mdpc

10

Bạn có thể có thể có được và ý tưởng bằng cách nhìn xung quanh bên dưới /sys. Ví dụ /sys/class/dmi/id/sys_vendorcó một giá trị là VMware, Inc..

Nếu nó được cài đặt, bạn có thể sử dụng lshw . Lệnh lshw -class systemtrả về điều này trên hệ thống của tôi:

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

Trong các trường hợp SuSE mà tôi có quyền truy cập vào lshw không tồn tại. Hơn nữa, / sys / class / dmi / ... không tồn tại.
mdpc

6

Một số môi trường ảo đặt tên cho một số thiết bị ảo của chúng có tên hơi khó hiểu, ví dụ, VirtualBox trình bày một card đồ họa tự gọi là "Bộ điều hợp hiển thị VirtualBox". Nhưng tìm kiếm những mối quan hệ đó với bạn với một VM cụ thể và có thể là một phạm vi phiên bản hẹp.

Mã của bạn có thể thấy loại ảo hóa nào có thể được thiết lập. Nếu thất bại hoàn toàn, bạn có thể đang ở trong một VM. Nhưng bạn có thể dễ dàng ở trên một hộp không có phần cứng có khả năng VM.


Câu trả lời đầu tiên của bạn là đúng. Kiểm tra tên trình điều khiển thiết bị.
Izzy

4

Đối với Linux, bạn gõ dmesg |grep DMI:

VIRTUAL HOST OUTPUT

[root @ myhost ~] # dmesg | grep DMI
DMI 2.3 hiện tại.
DMI: Microsoft Virtual Machine / Virtual Machine, BIOS 090006 05/23/2012

[root @ myhost ~] # dmesg | grep -i ảo
DMI: Microsoft Virtual Machine / Virtual Machine, BIOS 090006 05/23/2012
Khởi động kernel paravirtualized trên phần cứng trần
đầu vào: mô phỏng nút chuột Macintosh dưới dạng / thiết bị / ảo / đầu vào / đầu vào1
scsi 0: 0: 0: 0: Truy cập trực tiếp Msft Đĩa ảo 1.0 PQ: 0 ANSI: 4
đầu vào: Chuột tương thích HID Vmbus HID dưới dạng / thiết bị / ảo / đầu vào / đầu vào4

VÍ DỤ VẬT LÝ HOST

[root @ backdev1 ~] # dmesg | grep DMI
DMI 2.5 hiện tại.
DMI: Hệ thống IBM x3650 M3 - [7945AC1] - / 90Y4784, BIOS - [D6E153AUS-1.12] - 30/12/2011

1
một vấn đề lớn với giải pháp của bạn là dmesg đọc ra bộ đệm kernel và nó có kích thước hạn chế. Nếu có nhiều tin nhắn hoặc một chút thời gian kể từ khi hệ thống được khởi động lại, thì thông tin này sẽ không có sẵn.
mdpc

4

Có rất nhiều mã ngoài đó để phát hiện xem bạn có trong VM hay không. Bắt đầu với viên thuốc màu đỏ và tìm kiếm từ đó. Bài viết này tại Offensive Computing cũng là một bài đọc tốt.

Đó là nếu không ai trong số những người dễ dàng ở trên làm việc :)


Liên kết đầu tiên bị hỏng. Thứ hai là bị hỏng hoặc chậm.
Wildcard

Bạn đúng. Hàng ngàn thời gian đã ăn chúng ... Tôi sẽ xem liệu tôi có thể đưa ra các liên kết thay thế không.
Bill Weiss

Thật là xấu hổ; "viên thuốc màu đỏ" nghe có vẻ thú vị. :)
Thẻ đại diện

1
Cập nhật với các liên kết archive.org.
Bill Weiss

3

Bạn cũng có thể tìm kiếm phần đầu tiên của địa chỉ mac của mình tại đây và xem liệu nó có được liệt kê như được gán cho bất kỳ công ty ảo hóa nào không.


Ý tưởng thú vị .... Tôi nghĩ rằng nó hoạt động (miễn là một thiết bị mạng được bao gồm trong VM ;-))
mdpc

2
Sẽ không đáng tin cậy. Trong nhiều trường hợp, mac có thể được đặt thành một giá trị tùy ý. Điều này để cho phép nhân bản mac của máy ban đầu khi chuyển đổi nó thành VM. Một số phần mềm liên kết giấy phép của nó với mac và thường không thể có được giấy phép mới (nhà cung cấp đã phá sản hoặc chi phí bị cấm).
Tonny

3

Các thiết bị ảo cũng sẽ được tiết lộ bởi lspci và / hoặc thông tin thiết bị đĩa trong / Proc:

lspci | grep -i vmware

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

2

Trong Linux, thông tin hệ thống được tiết lộ trong / sys / thiết bị / ảo / dmi / id /. Xem câu trả lời của tôi ở đây cho một kịch bản tiện dụng để hiển thị cho bạn tất cả các thông tin có sẵn.

root không bắt buộc.


1

Tôi không thích bất kỳ giải pháp nào trong số này, vì thường có trình điều khiển hoặc trình điều khiển bộ nhớ VMware CDROM được cài đặt để dmesg xác nhận hoặc từ chối nó một cách nhanh chóng.

[máy chủ @ người dùng ~] $ dmesg | grep VMware
hda: Ổ đĩa CDROM VMware Virtual IDE, ổ đĩa CD / DVD ATAPI
Nhà cung cấp: VMware Model: Đĩa ảo Rev: 1.0
Nhà cung cấp: VMware Model: Đĩa ảo Rev: 1.0
Nhà cung cấp: VMware Model: Đĩa ảo Rev: 1.0
Nhà cung cấp: VMware Model: Đĩa ảo Rev: 1.0
Nhà cung cấp: VMware Model: Đĩa ảo Rev: 1.0
Nhà cung cấp: VMware Model: Đĩa ảo Rev: 1.0
Nhà cung cấp: VMware Model: Đĩa ảo Rev: 1.0
Trình điều khiển bộ nhớ VMware khởi tạo

3
Điều này sẽ hoạt động khi khởi động, nhưng sau đó bạn không thể đảm bảo rằng dmesg chưa bị xóa hoặc tràn.
mattdm

Đây cũng là điều tôi thường làm, đó là grepping dmesg
tpaul

1

Điều này làm việc tốt hơn cho tôi vì nó cung cấp cho tôi thông tin cụ thể về nhà sản xuất và tên sản phẩm.

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

Đầu ra trên máy chủ Dell:

Manufacturer: Dell Inc.
Product Name: PowerEdge C5220

Đầu ra trên Virtualbox VM:

Manufacturer: innotek GmbH
Product Name: VirtualBox

Đầu ra trên KVM / QEMU:

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

Điều này rất tốt cho các tập lệnh có thể phân tích những cái này để nhận dạng máy chủ tốt hơn ... nhưng nếu bạn sử dụng Chef trong cơ sở hạ tầng của mình, bạn có thể kiểm tra thuộc tính nút Virtualization -> systemtrong máy chủ đầu bếp.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.