2017年1月6日 星期五

用 virt-what 判斷是否為虛擬機、了解為何 OpenStack / VMWare 為何沒有 disk by-id

剛好翻到一篇以前我想過的一個問題「如何知道你目前所在的設備是不是虛擬機?」,為何會有這個問題?

 

  • 當你身為一個廠商連到客戶端的設備時,是否也有過質疑客戶使用虛擬機造成效能不彰的問題?

  • 抑或是 host 造成的 bugs 影響 guest

  • 或是單純你只想知道目前所使用的 host software 是哪一種


 

記得當時找了蠻久的,都沒有相對應的 solution,結果就在我一個無意間的 Google 逛街下看到「7 Ways to Detect Virtualization from your VM

從文中選了一個號稱能在任何的 Linux 編譯成功,並且在我目前環境中都能判斷成功的 virt-what



 

On Parallels
$ virt-what  
parallels

 

On VirtualBox
$ virt-what 
virtualbox

 

On OpenStack
$ virt-what 
kvm

由於用 virt-what 判斷 OpenStack 不會明顯的提示為 OpenStack,僅會顯示 kvm,這樣就無法判別是 OpenStack 或 KVM 了。

 

好在可以從 /dev/disk/by-id 這個目錄來確認是不是 OpenStack !! 如果是 OpenStack 通常不會存在 /dev/disk/by-id 這個目錄。

 

 

Why

在一般的 Virtual Machine 都會在 /dev/disk/by-id 替 disk 產生一個 UUID link 到實際硬碟位置 (sda、sda1、sdb ... etc)
$ ls -l /dev/disk/by-id/ 
total 0
lrwxrwxrwx 1 root root 9 Jan 2 00:33 ata-u02-Ubuntu-0_SSD_H27AXNE0H76MV18T13AG -> ../../sda
lrwxrwxrwx 1 root root 10 Jan 2 00:33 ata-u02-Ubuntu-0_SSD_H27AXNE0H76MV18T13AG-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Jan 2 00:33 ata-u02-Ubuntu-0_SSD_H27AXNE0H76MV18T13AG-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Jan 2 00:33 ata-u02-Ubuntu-0_SSD_H27AXNE0H76MV18T13AG-part5 -> ../../sda5
..
..
etc

 

但是在 OpenStack 在新增 disk 的時候就會自動生成 UUID 了,所以不會在 /dev/disk/by-id 裡面產生 UUID link,這個在 Cinder bugs 有提到是 VMWare 的 default 設定
The work around given is to set disk.EnableUUID to True for the Linux VM. In case of Openstack volumes, as the uuid of virtual disk/VMDK disk is autogenerated, if user tries to enable this property the /dev/disk/by-id shows the autogenerated uuids for the VMDK disks. Due to this the user/application has no means to identify the Openstack volume. Instead if the uuid of VMDK disk is same as the Openstack volume ID, it helps in identifying the Openstack created volumes.

 

但是他也可以透過修改 vmx 啟動啦,不過通常沒有這個必要。
disk.EnableUUID = True

 

 

 

參考資料:

Cinder VMDK driver : uuid of VMDK disk file needs to be the same as of corresponding Cinder volume ID

7 Ways to Detect Virtualization from your VM [Xen,VirtualBox,KVM,OpenStack with KVM]

Orignal From: 用 virt-what 判斷是否為虛擬機、了解為何 OpenStack / VMWare 為何沒有 disk by-id

沒有留言:

張貼留言