Applying the strings method as described in my last article, I decided to also take a look at /opt/vmware/vpxa/vpx/vpxa binary to see if there were anymore hidden goodies. To my surprise, I was able to locate additional HA and VPXA advanced configuration options. While going through and testing some of the HA advanced options, I found that only 19 out of 47 have not been documented and much of the documentation I found online was from Mr. Duncan Epping's blog. This really shows how open Duncan has been around the advanced options with VMware HA, if only VMware as a whole could be so open with the other advanced options that are used throughout VMware but left undocumented.
1200+ undocumented .vmx parameters
Recently while performing some skunkworks testing in my personal lab, I came across a slew of documented and undocumented virtual machine .vmx configuration parameters. Using one of my favorite UNIX/Linux utility strings, I was able to uncover some interesting things in the /usr/lib/vmware/bin/vmware-vmx binary which is used to load a virtual machines configuration file.
Here are some of the interesting observations I have made:
vSphere is hypervisor aware?
%s: %s detected by CPUID
%s: VMware detected
Microsoft Hyper-V
%s: Xen detected by hypercall
Xen detected but hypervisor unrecognized (Xen variant?)
I noticed the following strings around detecting certain guest hypervisors, is this a hint that VMware is going to support other virtual "hypervisors", specifically Microsoft and Xen?
vSphere to support Mac OSX?
Linux Host
Windows Host
Mac OS Host
There were some text that listed the various types of host, including Mac OSX.
Make sure that you have installed all available Mac OS X software updates.
@&!*@*@(msg.cdrom.darwindisconnect)Your Mac OS guest is using this CD-ROM device. The safest way to disconnect this virtual CD-ROM is by pressing %s, then ej
ecting the media from inside the guest%s. To continue anyway, press %s.%s
@&!*@*@(msg.Backdoor.OsNotMacOSXServer)The guest operating system is not Mac OS X Server.
@&!*@*@(msg.cpuid.darwinWithBTHV)Mac OS X is not supported with software virtualization. Change the execution mode to automatic.
@&!*@*@(msg.cpuid.darwinWithBT)Mac OS X is not supported with software virtualization. To run Mac OS X you need a host on which %s supports hardware virtuali
zation.
isolation.bios.IsGOS.Darwin
There were some text that listed various messages regarding Mac OSX
sbios
vbios
bios440
efi32
efi64
nvram
lsibios
nbios
nxbios
nx3bios
e1000bios
vmibios
vmmmods
sas1068bios
pvscsibios
As you can see, there is mention of EFI support which is required to boot Mac OSX. Does this mean future version of vSphere will support virtualizing Mac OSX?
New guestOS types?
darwin10
darwin10-64
darwin-64
mandrake-64
opensuse
opensuse-64
winServer2008Cluster-32
winServer2008Cluster-64
winServer2008Datacenter-32
winServer2008Datacenter-64
winServer2008DatacenterCore-32
winServer2008DatacenterCore-64
winServer2008Enterprise-32
winServer2008Enterprise-64
winServer2008EnterpriseCore-32
winServer2008EnterpriseCore-64
winServer2008SmallBusiness-32
winServer2008SmallBusiness-64
winServer2008SmallBusinessPremium-32
winServer2008SmallBusinessPremium-64
winServer2008Standard-32
winServer2008Standard-64
winServer2008StandardCore-32
winServer2008StandardCore-64
winServer2008Web-32
winServer2008Web-64
XenVMMXenVMM
There was a section that I came across which listed all supported guestOS types, here you can see there have been a few more that were added between vSphere 4.0 and 4.1. One interesting thing that I am not sure if a lot of people have noticed, is the VirtualMachineGuestOsIdentifier in the vSphere API. This basically provides the guestos identifier that is supported in each release of VI/vSphere. Interesting enough, a darwin guestos support has been documented as of vSphere 4.0:
Though we all know we can not run Mac OSX on ESX(i) ... at least not just yet from what the above is hinting at.
These were just a few of the interesting things I found while parsing through the strings output when looking at the ESX 4.1's vmware-vmx binary.
Here is a collection of over 1200+ documented and undocumented .vmx configuration parameters.
http://https://s3.amazonaws.com/virtuallyghetto-download/hidden_vmx_params.html
Some of these hidden .vmx entries have been shared by the VMware and the community, here are just a few:
- http://www.virtuallyghetto.com/2010/10/how-to-control-maximum-number-of-vmware.html
- Â snapshot.maxSnapshots = Control the maximum number of VMware snapshots
- http://www.vcritical.com/2009/05/vmware-esx-4-can-even-virtualize-itself/
- monitor_control.restrict_backdoor = Run virtual ESX(i) hosts on top of ESX or ESXi
- http://vinf.net/2009/06/07/vsphere-cannot-enable-ft-for-a-nested-vm/Â
- Â replay.allowBTOnly = Allow FT to be enabled on vVM running on vESX(i)
- Â replay.allowBT = Allow FT to be enabled on vVM running on vESX(i)
- http://kb.vmware.com/kb/1010184
- cpuid.coresPerSocket = Specify the number of cores per physical socket
- http://www.sanbarrow.com/vmx/vmx-advanced.htmlÂ
How to control maximum number of VMware snapshots
There are currently no methods of controlling the number of VMware snapshots using vCenter or ESX(i) permissions today, you either provide the snapshot privilege or you deny it all together. I recently discovered an undocumented .vmx entry that allows you to control the maximum number of VMware snapshots for a given virtual machine. By default, a virtual machine can have a snapshot tree depth of 31, in the worse case scenario supporting up to a maximum of 496 snapshots.
Here is what a VM looks like with 496 snapshots (unexpanded):
Note: If you are interested in what this looks like fully expanded, take a look at the screenshot at the very bottom of this post.
If you like to prevent the above or at least control the maximum number of snapshots for a given virtual machine, you can add the following into a VM's .vmx configuration file. Ideally, this is deployed using vSphere API as there is no need to directly edit the VMX's file and this can also be applied to a live running VM (another benefit of using the vSphere API).
Here is an example using PowerCLI:
$vm = Get-VM -Name TestVM
New-AdvancedSetting -Name snapshot.maxSnapshots -Value 1 -Entity $vm
For those that prefer using another vSphere SDK, you just need to use the ReconfigVM_Task() to add the VM Advanced Setting. Please take a look at this sample for here for how to add/update VM Advanced Settings.
snapshot.maxSnapshots = "n"
where n = max number of snapshots and n <= 496
Here is a screenshot of adding this .vmx parameter using the vSphere Client:
The virtual machine above already has one snapshot and per the configuration change, we should not be able to take any additional snapshots:
Next, we will try to take a second snapshot:
As you can see, an error is thrown that we have reached the maximum number of permitted snapshots. If you would like to disable snapshots all together, you can set the value to be 0 and this will prevent anyone from taking snapshots, including administrators.
Here is a an screenshot of the expanded view of a VM with 496 snapshots:
Note: These snapshots were created with a VM running in an vESXi host and script to exhaust the maximum snapshot depth of 31. Each snapshot level was also exhausted with the maximum number of snapshots. Starting from level-1: it was the maximum depth minus 1, level-2: it was maximum depth minus 2, and so fourth. This was just a test to see what the system could handle, you should not try this a home or on a production VM 😉 Use at your own risk
- « Previous Page
- 1
- …
- 533
- 534
- 535
- 536
- 537
- …
- 557
- Next Page »