I spend a lot of time on the command line of ESXi 4.1 due to my development duties at Sumavi. There are quite a few things you can do on the command line that make it pretty cool to work with. As such, in many instances I don’t install vSphere Server nor vSphere client. I just log in and do my duties. Notice that everything I post below you can do without vSphere Server nor vSphere client. Let me know if these are useful to you!
1. Get a list of all VMs on the Hypervisor:
# vim-cmd vmsvc/getallvms Vmid Name File Guest OS Version Annotation 16 Vcenter1 [Storage1-ESX01] Vcenter1/Vcenter1.vmx windows7Server64Guest vmx-07 32 Vcenter [Storage1-ESX01] Vcenter/Vcenter.vmx winLonghorn64Guest vmx-07
Notice the vmid. That vmid is used in many commands that follow when you want to perform actions on individual VMs.
2. Check which Physical NICS are up
There are a few commands in the esxcfg-* family that are used to configure the hypervisor network. For example, if you want to see which NICs have network connections, you can use:
~ # esxcfg-nics -l Name PCI Driver Link Speed Duplex MAC Address MTU Description vmnic0 0000:02:00.00 bnx2x Up 1000Mbps Full d8:d3:85:da:f8:30 1500 Broadcom Corporation NetXtreme II 57711E/NC532i 10Gigabit Ethernet vmnic1 0000:02:00.01 bnx2x Down 0Mbps Half d8:d3:85:da:f8:34 1500 Broadcom Corporation NetXtreme II 57711E/NC532i 10Gigabit Ethernet vmnic2 0000:02:00.02 bnx2x Up 9000Mbps Full d8:d3:85:da:f8:31 1500 Broadcom Corporation NetXtreme II 57711E/NC532i 10Gigabit Ethernet vmnic3 0000:02:00.03 bnx2x Down 0Mbps Half d8:d3:85:da:f8:35 1500 Broadcom Corporation NetXtreme II 57711E/NC532i 10Gigabit Ethernet vmnic4 0000:02:00.04 bnx2x Down 0Mbps Half d8:d3:85:da:f8:32 1500 Broadcom Corporation NetXtreme II 57711E/NC532i 10Gigabit Ethernet vmnic5 0000:02:00.05 bnx2x Down 0Mbps Half d8:d3:85:da:f8:36 1500 Broadcom Corporation NetXtreme II 57711E/NC532i 10Gigabit Ethernet vmnic6 0000:02:00.06 bnx2x Down 0Mbps Half d8:d3:85:da:f8:33 1500 Broadcom Corporation NetXtreme II 57711E/NC532i 10Gigabit Ethernet vmnic7 0000:02:00.07 bnx2x Down 0Mbps Half d8:d3:85:da:f8:37 1500 Broadcom Corporation NetXtreme II 57711E/NC532i 10Gigabit Ethernet
Notice that only vmnic0 and vmnic2 are up. This mostly has to do with the way I configured my blades with the Flex-10 Virtual connect. (A feature of HP Blades). If I am now to configure the network, its best that I do only vmnic0 and vmnic2 since they’re the only ones that have a link. For you Linux masters out there, there’s no ‘service network status’ nor restart that you can do. It just always seems to be on.
3. Creating a quick network connection
Since we know vmnic2 is up, let’s make a connection to it so that we can SSH into it, or at least ping out of it:
# add vSwitch1 esxcfg-vswitch-a vSwitch1 # link vSwitch1 to vmnic2 as an uplink esxcfg-vswitch -L vmnic2 vSwitch1 # add the DATA portgroup to this switch esxcfg-vswitch -A DATA vSwtich1 # uplink DATA to vmnic2 esxcfg-vswitch -M vmnic2 -p DATA vSwitch1 # put DATA on VLAN70 esxcfg-vswitch -v 70 -p DATA vSwitch1
4. Create a new vmdk and add to existing VM
Here we have a VM (vmid 32 ) that we want to add a 60GB vmdk to. We run:
# create the 60GB hard drive in foo's directory vmkfstools -c 60G /vmfs/volumes/datastore1/foo/newfoo.vmdk # add the disk to foo's inventory. (The 0 and 1 is the scsi ID numbers vim-cmd vmsvc/device.diskaddexisting 32 /vmfs/volumes/datastore1/foo/newfoo.vmdk 0 1
5. Check/Toggle VM power stat
You can turn nodes off and on and check power status. You need to know the vmid as shown in #1 above:
# get power stat vim-cmd vmsvc/power.getstat 16 # turn off vim-cmd vmsvc/power.off 16 # turn on vim-cmd vmsvc/power.on 16
6. Add the Physical USB Device to a VM
If you want to add the USB device that’s plugged into the physical machine to the virtual machine with vmid 16 you can do this:
#make sure usbarbitrator is started /etc/init.d/usbarbitrator start # add to vmid 16 vim-cmd vmsvc/device.connusbdev 16 "path:1/0/0 autoclean:1"
Note that the VM should be powered off when you do this for best results.
7. Register a VM to the Hypervisor
If you copied all the vmx and vmdk files to an ESXi 4.1 hypervisor you can simply register them with that hypervisor and turn them on:
vim-cmd solo/registervm /vmfs/volumes/datastore1/foo/foo.vmx # then turn it on using the stuff in tip 5!
8. Enable SSH from the command line
This is an easy one:
9. Add the license to the ESXi 4.1 hypervisor
This came up in a few places and I already documented it in this blog, but figured I’d do it again. If you have a license and you want to add it to your hypervisor because its about to expire in 1 day you can log in and just run:
vim-cmd vimsvc/license --set XXXXX-XXXXX-XXXXX-XXXXX-XXX11
10. Writing output to main console
In your kickstart files, you may want to redirect output to the main console that people watch as an installation takes place. This is /dev/tty2. Therefore, if in your kickstart file you are cloning a vmdk using vmdkfstools, you can let people see how the progress is going by just piping it out. Here’s an example:
vmkfstools -i $DATASTOREREMOTE/stage/stage.vmdk -d zeroedthick $DATASTOREOTHER/new/new.vmdk | tee -a /dev/tty2
This is cool in that you’ll see the percentage points pop up as you go along. The thing to remember is that you’ll have to send some carriage return escape sequences a la echo -e “\r\n” to line things up better.