Difference between revisions of "EsxiNotes"
Jump to navigation
Jump to search
(→vNUMA) |
(No difference)
|
Latest revision as of 12:20, 17 December 2019
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