Esxi
guide-by-example
Purpose
Type 1 hypervisor hosting virtual machines, running straight on metal.
Basic settings
https://www.dbappweb.com/2020/08/20/how-to-change-the-default-gateway-for-vmware-vsphere-esxi/
- esxcfg-route
- esxcfg-route 10.65.26.25
https://blog.techygeekshome.info/2021/04/vmware-esxi-esxcli-commands-to-update-host-dns-servers/
- esxcli network ip dns server add --server=8.8.8.8
- esxcli network ip dns server remove --server=1.1.1.1
- esxcli network ip dns server list
Backups using ghettoVCB
The script makes snapshot of a VM, copies the "old" vmdk and other files
to a backup location, then deletes the snapshot.
The space use of this approach where every version takes up lot of space
can be an issue, maybe solved by backup datastore having deduplication,
but thats maybe for the future.
VMs that have any existing snapshot wont get backed up.
Backup storage locations
- Local disk datastore
- NFS share
For nfs share on trueNAS scale- Maproot User -> root
- Maproot Group -> nogroup
Note the exact path from webgui of your datastore for backups.
Looks like this /vmfs/volumes/6187f7e1-c584077c-d7f6-3c4937073090
Install
- ssh in to esxi
cd /tmpesxcli network firewall ruleset set -e true -r httpClientwget https://github.com/lamw/ghettoVCB/releases/download/2021_10_20/vghetto-ghettoVCB.vib --no-check-certificateesxcli software vib install -v /tmp/vghetto-ghettoVCB.vib -f- check
ls /opt
Config and preparation
Gotta know basics how to edit files with ancient vi
- Config file template is in
/opt/ghettovcb/ghettoVCB.conf
Make copy of itcp /opt/ghettovcb/ghettoVCB.conf /opt/ghettovcb/ghetto_1.conf - Only edit this file, for starter setting where to copy backups
vi /opt/ghettovcb/ghetto_1.conf
VM_BACKUP_VOLUME=/vmfs/volumes/6187f7e1-c584077c-d7f6-3c4937073090/Backups - Create a file that will contain list of VMs to backup
touch /opt/ghettovcb/vms_to_backup_list
vi /opt/ghettovcb/vms_to_backup_list
OPNsense Arch-Docker-Host - Create a shell script that starts ghetto script using this config for listed VMs
touch /opt/ghettovcb/bin/ghetto_run.sh
vi /opt/ghettovcb/bin/ghetto_run.sh
Make the script executable#!/bin/sh /opt/ghettovcb/bin/ghettoVCB.sh \ -g /opt/ghettovcb/ghetto_1.conf \ -f /opt/ghettovcb/vms_to_backup_list \ &> /dev/null
chmod +x /opt/ghettovcb/bin/ghetto_run.sh - for my use case where TrueNAS VM cant be snapshoted while running because of a passthrough pcie HBA card there needs to be another config
- Make new config copy
cp /opt/ghettovcb/ghetto_1.conf /opt/ghettovcb/ghetto_2.conf - Edit the config, setting it to shut down VMs before backup.
vi /opt/ghettovcb/ghetto_2.conf
POWER_VM_DOWN_BEFORE_BACKUP=1 - edit the run script, add another execution for specific VM using ghetto_2.conf
vi /opt/ghettovcb/bin/ghetto_run.sh
#!/bin/sh /opt/ghettovcb/bin/ghettoVCB.sh \ -g /opt/ghettovcb/ghetto_1.conf \ -f /opt/ghettovcb/vms_to_backup_list \ &> /dev/null /opt/ghettovcb/bin/ghettoVCB.sh \ -g /opt/ghettovcb/ghetto_2.conf \ -m TrueNAS_scale \ &> /dev/null
Execution and scheduled runs
To simply execute:
/opt/ghettovcb/bin/ghetto_run.sh
To execute it periodicly cron is used.
- Make backup of roots crontab
cp /var/spool/cron/crontabs/root /var/spool/cron/crontabs/root.backup - Edit roots crontab to execute the run script at 4:00
add the following line at the end in cron format
vi /var/spool/cron/crontabs/rootTo save read only file in vi use0 4 * * * /opt/ghettovcb/bin/ghetto_run.sh:wq!
Logs about backups are in /tmp
disk reclamation
Switching from Thick to Thin disks
vmkfstools --punchzero "./TrueNAS_scale-thin.vmdk"
unmap, windows, fsck_ufs -Ey /dev/da0p3
links
- https://www.altaro.com/vmware/ghettovcb-back-up-vms/
- https://www.youtube.com/watch?v=ySMitWnNxp4
- https://forums.unraid.net/topic/30507-guide-scheduled-backup-your-esxi-vms-to-unraid-with-ghettovcb/
- https://blog.kingj.net/2016/07/03/how-to/backing-up-vmware-esxi-vms-with-ghettovcb/