Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7605523
  • 博文数量: 1769
  • 博客积分: 18684
  • 博客等级: 上将
  • 技术积分: 16352
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-02 10:28
个人简介

啥也没写

文章分类

全部博文(1769)

文章存档

2024年(15)

2023年(44)

2022年(39)

2021年(46)

2020年(43)

2019年(27)

2018年(44)

2017年(50)

2016年(47)

2015年(15)

2014年(21)

2013年(43)

2012年(143)

2011年(228)

2010年(263)

2009年(384)

2008年(246)

2007年(30)

2006年(38)

2005年(2)

2004年(1)

分类: LINUX

2010-10-14 16:24:30

Update: You may be interested in [[the perl module|perl-module-for-virtualization-detection]] implementing these tricks.

Frequently, our customers want to install our software in a virtual machine. This can be OK, but frequently they hit a CPU, memory, or IO limit caused by running in a constrained virtual environment. When this happens, we really like to know if they're running under virtualization when we try to support them. Here's some tricks to detect, from a shell, if the system is virtualized.

The first thing to check is dmesg. On a recently-booted system, checking the 'dmesg' command output may be sufficient. Otherwise, try "cat /var/log/dmesg" instead of "dmesg"

  • VMWare:

     # dmesg | grep -i virtual
     VMware vmxnet virtual NIC driver
       Vendor: VMware    Model: Virtual disk      Rev: 1.0 
     hda: VMware Virtual IDE CDROM Drive, ATAPI CD/DVD-ROM drive
    
  • QEmu or KVM:

    If the "-cpu host" option has not been used, QEmu and KVM will identify themselves as:

     # dmesg | grep -i virtual
     CPU: AMD QEMU Virtual CPU version 0.9.1 stepping 03
    

    otherwise, the host's CPU information will be used both in dmesg, or in /proc/cpuinfo.

    However, you should see something like:

     $ dmesg | grep -i virtual
     [    0.000000] Booting paravirtualized kernel on KVM
    

    on newer kernels that understand that they're running under paravirtualization. (Thanks to for pointing this out)

  • Microsoft VirtualPC:

     # dmesg | grep -i virtual
     hda: Virtual HD, ATA DISK drive
     hdc: Virtual CD, ATAPI CD/DVD-ROM drive
    
  • Xen (thanks, and others)

    # dmesg | grep -i xen
    Xen virtual console successfully installed as tty1
    
  • Virtuozzo

    # dmesg
    (returns no output)
    
    
    # cat /var/log/dmesg
    (returns no output)
    
    
    # ls -al /proc/vz
    veinfo  veinfo_redir  veredir  vestat  vzaquota  vzdata
    

On longer-running systems, you may need to grep /var/log/dmesg instead.

If that doesn't produce anything useful, try using dmidecode to look at the BIOS information. Frequently, there will be at least one component identifying itself as virtualized:

  • VMWare:

     # dmidecode | egrep -i 'manufacturer|product'
     Manufacturer: VMware, Inc.
     Product Name: VMware Virtual Platform
    
  • Microsoft VirtualPC:

     # dmidecode | egrep -i 'manufacturer|product'
     Manufacturer: Microsoft Corporation
     Product Name: Virtual Machine
    
  • QEMU or KVM:

     # dmidecode | egrep -i 'vendor'
     Vendor: QEMU
    
  • Virtuozzo:

     # dmidecode
     /dev/mem: Permission denied
    
  • Xen:

     # dmidecode | grep -i domU
           Product Name: HVM domU
    

You should just examine the output of dmidecode directly rather than trying to grep as above, in case the output changes. QEMU, for example, doesn't report the vendor in all versions.

Next, check disk devices for identification as virtualized:

  • VMWare:

    # cat /proc/ide/hd*/model
    VMware Virtual IDE CDROM Drive
    # cat /proc/scsi/scsi
    Attached devices:
    Host: scsi0 Channel: 00 Id: 00 Lun: 00
      Vendor: VMware   Model: Virtual disk     Rev: 1.0 
      Type:   Direct-Access                    ANSI SCSI revision: 02
    
  • Microsoft VirtualPC:

    # cat /proc/ide/hd*/model
    Virtual HD
    Virtual CD
    
  • QEMU, KVM, or Xen:

    # cat /proc/ide/hd*/model
    QEMU HARDDISK
    QEMU DVD-ROM
    
  • Virtuozzo:

    # ls -al /dev/vzfs
    b-----x--- 1 root root 0, 19 2009-04-06 15:04 /dev/vzfs
    

If you've got tips for other virtualized environments, let me know and I'll add them to the list.

阅读(1347) | 评论(1) | 转发(0) |
0

上一篇:tomcat6集群

下一篇:nginx防止跨站攻击

给主人留下些什么吧!~~

chinaunix网友2010-10-15 16:18:16

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com