EsxiNotes
Jump to navigation
Jump to search
1 read
1.1 show VMs
vim-cmd vmsvc/getallvms | grep -v Vmid | awk '{print $1":"$2}' | grep '^[0-9]'
getAllVms(){ echo -e "ID \t PowerState \t vmName" echo "----------------------------------" vim-cmd vmsvc/getallvms | grep -v Vmid | awk '{print $1":"$2}' | grep '^[0-9]' | while read vm do vmId=`echo $vm | cut -d: -f1` vmName=`echo $vm | cut -d: -f2` vmPower=`vim-cmd vmsvc/power.getstate $vmId | grep Power` echo -e "$vmId \t $vmPower\t $vmName" done }
2 power
2.1 start vm
startupvmName (){ vmName=$1 echo "INFO: `date '+%Y.%m.%d_%H:%M'`: startup $vmName" echo "`vim-cmd vmsvc/getallvms | grep " $vmName " | cut -d\ -f1 | xargs vim-cmd vmsvc/power.on` $vmName" }
2.2 shutdown vm
shutdownvmName (){ vmName=$1 echo "INFO: `date '+%Y.%m.%d_%H:%M'`: shutdown $vmName" echo "`vim-cmd vmsvc/getallvms | grep " $vmName " | cut -d\ -f1 | xargs vim-cmd vmsvc/power.shutdown` $vmName" }
2.3 shutdown vm and wait for powerdown
shutdownWaitvmName (){ vmName=$1 vmId=`vim-cmd vmsvc/getallvms | grep " $vmName " | cut -d\ -f1` echo $vmId | grep -q '[0-9]' if [ $? -ne 0 ] then echo "vm $vmName not found" return 1 exit 1 kill -9 $$ fi echo "INFO: `date '+%Y.%m.%d_%H:%M'`: shutdown and wait: $vmName" vim-cmd vmsvc/power.shutdown $vmId for i in `seq 300` do if (vim-cmd vmsvc/power.getstate $vmId | grep -q ' off') then echo break fi sleep 1 echo -n . done if (vim-cmd vmsvc/power.getstate $vmId | grep -q ' on') then echo "WARNING: `date '+%Y.%m.%d_%H:%M'`: VM $vmName is still on, do poweroff now" vim-cmd vmsvc/power.off $vmId fi }
2.4 list snapshots
listAllSnapshots(){ vim-cmd vmsvc/getallvms | grep -v Vmid | awk '{print $1":"$2}' | grep '^[0-9]' | while read VM do VMID=$(echo $VM | cut -d: -f1) vmName=$(echo $VM | cut -d: -f2) echo echo "INFO: `date '+%Y.%m.%d_%H:%M'`: snapshots of VM: $vmName ---" vim-cmd vmsvc/get.snapshot $VMID | egrep 'name = |createTime = ' | sed 's/createTime = / createTime = /' done }
3 snapshot
3.1 remove all snapshots
removeAllSnapshots(){ vim-cmd vmsvc/getallvms | grep -v Vmid | awk '{print $1":"$2}' | grep '^[0-9]' | while read VM do VMID=$(echo $VM | cut -d: -f1) vmName=$(echo $VM | cut -d: -f2) echo "INFO: `date '+%Y.%m.%d_%H:%M'`: search Snapshots of VM: $vmName ---" vim-cmd vmsvc/get.snapshot $VMID | grep -A5 'snapshot = ' | sed '/id =/!d;s/.*id = //g;s/,//g' | while read SNAPID do echo exec: vim-cmd vmsvc/snapshot.remove $VMID $SNAPID vim-cmd vmsvc/snapshot.remove $VMID $SNAPID done done }
3.2 create snapshots
createSnapshotOfAllVms(){ vim-cmd vmsvc/getallvms | grep -v Vmid | awk '{print $1":"$2}' | grep '^[0-9]' | while read VM do VMID=$(echo $VM | cut -d: -f1) vmName=$(echo $VM | cut -d: -f2) echo "INFO: `date '+%Y.%m.%d_%H:%M'`: create Snapshot of VM: $vmName ---" echo exec: vim-cmd vmsvc/snapshot.create $VMID backup-`date '+%Y%m%d%H%M%S'` includeMemory vim-cmd vmsvc/snapshot.create $VMID backup-`date '+%Y%m%d%H%M%S'` done }
4 copy/clone
4.1 thin copy vm/folder
thincopyFolder (){ FROM="$1" TO="$2" mkdir -p "$TO" echo "INFO: `date '+%Y.%m.%d_%H:%M'`: tincopy "$FROM/" "$TO/$F" find $FROM -type f -not -iname '*.vmdk' -exec cp -a "{}" "$TO/" \; find $FROM -type f -iname '*.vmdk' | while read vmdk do F=`basename $vmdk` vmkfstools -i "$vmdk" -d thin "$TO/$F" done echo "INFO: `date '+%Y.%m.%d_%H:%M'`: thincopy done ----------" ls -als "$TO/$F" du -hcs "$FROM" "$TO/$F" }
5 networking
5.1 custom firewall rule
- Create custom firewall rule on ESXi Server
vi /etc/vmware/firewall/syslog-1516upd.xml
<configRoot> <service> <id>syslog_1516udp</id> <rule id='0000'> <direction>outbound</direction> <protocol>udp</protocol> <porttype>dst</porttype> <port>1516</port> </rule> <enabled>true</enabled> <required>false</required> </service> </configRoot>
esxcli network firewall refresh esxcli network firewall unload esxcli network firewall load
6 Component Overview
6.1 Andvanced System Settings
- Settings are not tracked
- ESXi Upgrade will keep all the settings
6.1.1 Host Profiles
- Extract HostProfile from ESXi can export settings
- (host specific values will not work for other hosts)
- For bundling a bunch of values into a host-profile and apply them to needed hosts
6.2 vSphere HA
- vCenter > Cluster > Configure > Services > vSphere Availability
- How to handle fault tolerance (Host HW failure)
6.3 vNUMA
Numa means that memory is accessed by cpu on shortest way
Crossing NUMA nodes by VM will result in performance loss (unless OS/APP is NUMA aware)
- less than 8 vCPUs are automatically placed on same (single) NUMA node
- more CPUs are placed on different NUMA nodes and OS/App must be NUMA aware
6.4 CPU ready time
- How long has a vCPU to wait for compute time within a physical cpu