ESXi on QEMU and use ghettoVCB VIB --- ## 在archlinux安裝qemu準備安裝esxi > sudo pacman -Ss qemu-full virt-manager libvirt > sudo systemctl enable libvirtd > sudo pacman -S dnsmasq > reboot > sudo virt-manager 1. 請注意,esxi8之後有要求bios需要使用uefi的,不能用legacy的,所以記得新增虛擬機同時,要勾選「在安裝前自訂配置」 參考: https://community.clearlinux.org/t/efi-in-virt-manager/1788/3 ![](https://hackmd.io/_uploads/Sk696zOka.png) 然後要選UEFI ![](https://hackmd.io/_uploads/H116af_yp.png) 2. 網卡要選e1000 ![](https://hackmd.io/_uploads/H1hJRfdy6.png) 3. 硬碟要選SATA ![](https://hackmd.io/_uploads/H16bXGO1T.png) 4. disk device does not support OSDATA,硬碟大小要到30G才會正常 參考: https://mogashi.hateblo.jp/entry/2022/10/27/182425 ![](https://hackmd.io/_uploads/ry8ot7dyp.png) 參考: https://community.clearlinux.org/t/efi-in-virt-manager/1788/3 5. 網路問題可以啟用default網卡 > sudo virsh net-start default //目前每次重開機都要重新啟動網卡 6. NTP問題 > esxcli system ntp set --reset # reset ntp to factory state > esxcli system ntp set --server time.cloudflare.com --enabled true > esxcli system ntp get ### 注意,nested VM會有很多裝置掛載限制,如TPM、usb裝置等,會有一些異常情形 ## 下載ghettoVCB ### 設定 1. 下載source.zip ![](https://hackmd.io/_uploads/ryl94XEd1T.png) 2. 先上傳zip到esxi的運行datastore 3. 啟動ssh ![](https://hackmd.io/_uploads/HyTnamdJ6.png) 4. ssh登入 ![](https://hackmd.io/_uploads/r1qMCm_ka.png) 5. unzip解壓縮 ### 備份架構 1. 2 SANs,1主要,1備份 2. 5 ESXi,同時mount兩個SAN,都先解壓縮好ghettoVCB,設定好crontab排程 ### 執行 > vi /opt/ghettovcb/ghettovcb.conf 修改conf,backup路徑可以設定第二個datastore ``` VM_BACKUP_VOLUME=/vmfs/volumes/dlgCore-NFS-bigboi.VM-Backups/WILLIAM_BACKUPS DISK_BACKUP_FORMAT=thin VM_BACKUP_ROTATION_COUNT=3 POWER_VM_DOWN_BEFORE_BACKUP=0 ENABLE_HARD_POWER_OFF=0 ITER_TO_WAIT_SHUTDOWN=3 POWER_DOWN_TIMEOUT=5 ENABLE_COMPRESSION=0 VM_SNAPSHOT_MEMORY=0 VM_SNAPSHOT_QUIESCE=0 ALLOW_VMS_WITH_SNAPSHOTS_TO_BE_BACKEDUP=0 ENABLE_NON_PERSISTENT_NFS=0 UNMOUNT_NFS=0 NFS_SERVER=172.30.0.195 NFS_VERSION=nfs NFS_MOUNT=/nfsshare NFS_LOCAL_NAME=nfs_storage_backup NFS_VM_BACKUP_DIR=mybackups SNAPSHOT_TIMEOUT=15 EMAIL_ALERT=0 EMAIL_LOG=0 EMAIL_SERVER=auroa.primp-industries.com EMAIL_SERVER_PORT=25 EMAIL_DELAY_INTERVAL=1 EMAIL_USER_NAME= EMAIL_USER_PASSWORD= EMAIL_TO=auroa@primp-industries.com EMAIL_ERRORS_TO= EMAIL_FROM=root@ghettoVCB WORKDIR_DEBUG=0 VM_SHUTDOWN_ORDER= VM_STARTUP_ORDER= ``` 重要的設定只有以下幾個: * VM_BACKUP_VOLUME:你的備份路徑 * VM_BACKUP_ROTATION_COUNT:你要備份的代數 * ALLOW_VMS_WITH_SNAPSHOTS_TO_BE_BACKEDUP:如果允許ESXi有快照,如果有,那它會合併起來然後刪除,如果不允許,遇到有快照,備份就會停止,無法進行 其他EMAIL可以考慮設定使用,其他就是建議使用 -l 把日誌拋出來。 > vi /opt/ghettovcb/vm_to_backup 設定要備份的vm清單 ``` VM1 VM2 ``` > cd /opt/ghettovcb > ./ghettoVCB.sh -f ../vm_to_backup -g /opt/ghettovcb/ghettoVCB.conf -d dryrun 先dryrun確認conf > ./ghettoVCB.sh -f ../vm_to_backup -g /opt/ghettovcb/ghettoVCB.conf 正式執行,備份10G大概55秒 ![](https://hackmd.io/_uploads/S1WMQJfnn.png) ### 還原 先在datastore正式區的SAN建立一個待還原的資料夾ubuntu1 > vi /opt/ghettovcb/vm_to_restore "/vmfs/volumes/data2/ubuntu/ubuntu-2023-08-10_02-01-17;/vmfs/volumes/datastore/ubuntu1;3;ubuntu1" 指定備份的路徑,還原的路徑,還原的4種disk format選擇,新的vm name > ./ghettoVCB-restore.sh -c ../vm_to_restore 還原完成畫面,實測還原10GB的image大概約55秒 ![](https://hackmd.io/_uploads/BklxwyGhn.png) ![](https://hackmd.io/_uploads/rkZcYJGh3.png) ### 排程 > crontab -e ``` 0 0 * * 1-5 /vmfs/volumes/dlgCore-NFS-bigboi.VM-Backups/ghettoVCB.sh -f /vmfs/volumes/dlgCore-NFS-bigboi.VM-Backups/backuplist > /vmfs/volumes/dlgCore-NFS-bigboi.VM-Backups/ghettoVCB-backup-$(date +\%s).log ``` 語法說明: MIN HOUR DOM MON DOW CMD 分 時 日 月 周 指令 上面指的是每星期1-5,凌晨0點0分,執行備份,並產製log > crontab -l 可以看設定的結果 [ghettovcb github](https://github.com/lamw/ghettoVCB) [backup參考](https://communities.vmware.com/t5/VI-VMware-ESX-3-5-Documents/ghettoVCB-sh-Free-alternative-for-backing-up-VM-s-for-ESX-i-3-5/ta-p/2773570) [restore參考](https://communities.vmware.com/t5/VI-VMware-ESX-3-5-Documents/Ghetto-Tech-Preview-ghettoVCB-restore-sh-Restoring-VM-s-backed/ta-p/2792996) ## 注意事項 1. ghettoVCB的備份會需要合併(其實就是刪除調)或是無snapshot的狀態 2. ESXi時區會使用UTC,所以crontab的時間要使用UTC