虛擬化為備份和恢復操作提供了幾個優勢,這是數據保護、運營連續性和可用性的支柱。最重要的是,虛擬化使得無代理和基於映像的主機級備份成為可能。這些類型的備份可以捕獲完整的虛擬機,包括虛擬機的配置和數據。
然而,保護主機也很重要,健康的 ESXi 主機對於虛擬機的正常運行至關重要。建議您還要備份 ESXi 配置,因為可用的主機備份可以幫助您在幾分鐘內恢復主機配置,而無需從頭設置 ESXi 服務器。繼續閱讀以了解 ESXi 主機備份的不同方法。
方法 1:使用 ESXi 命令行備份 ESXi 主機
使用 ESXi 命令行是備份 ESXi 主機配置的最經濟實惠的方法。您無需安裝任何額外的軟件即可使用 ESXi 命令行。您只需要啟用 ESXi shell 和遠程 SSH 訪問 ESXi 主機。連接到 ESXi 主機通過 SSH 之後,您可以運行命令。
ESXi 配置每小時自動保存到/bootblank/state.tgz文件中。因此,您應該確保當前的 ESXi 配置立即寫入 ESXi 配置文件,以確保自上次自動保存以來所做的所有 ESXi 配置更改都得到保存。要做到這一點:
vim-cmd hostsvc/firmware/sync_config
- 檢查並同步ESXi配置與持久性儲存:
vim-cmd hostsvc/firmware/sync_config
- 在同步完成後備份ESXi配置:
vim-cmd hostsvc/firmware/backup_config
因此,您將收到一個下載configBundle.tgz檔案從ESXi主機的連結。
http://*/downloads/UUID/configBundle-ESXiNameOrIPAddress.tgz
- * ESXi 主機的 IP 地址。包含 ESXi 配置備份的存檔文件將暫存到 /scratch/downloads 目錄中,存儲時間為幾分鐘。
您可以在 ESXi 直接控制台界面或使用以下命令在命令行中找到 ESXi 主機的 IP 地址:
esxcli network ip interface ipv4 get
當前示例中使用的 ESXi 主機的 IP 地址為 192.168.101.208
- 請儘快下載 ESXi 備份存檔並將其存儲在安全的位置。
如何在 ESXi 命令行中自動備份 ESXi 配置
命令行界面的優勢在於能夠自動化,ESXi 配置備份也不例外。讓我們來看一下如何執行這個操作:
- 在 ESXi 數據存儲器上創建一個目錄來存儲備份文件。
mkdir /vmfs/volumes/datastore1/ESXi_backup
-
vi /vmfs/volumes/datastore1/ESXi_backup/esxi_backup.sh
- 將以下行添加到腳本中:
vim-cmd hostsvc/firmware/sync_config
vim-cmd hostsvc/firmware/backup_config
find /scratch/downloads/ -name \*.tgz -exec cp {} /vmfs/volumes/datastore1/ESXi_backup/ESXi_config_backup_$(date +'%Y%m%d_%H%M%S').tgz \;
- 保存文件並退出vi:
:wq
注意:
為了更方便,您也可以將ESXi主機名稱或IP地址包含在備份文件名中。這將幫助您避免多個ESXi主機的混淆。
- 使腳本可執行:
chmod +x /vmfs/volumes/datastore1/ESXi_backup/esxi_backup.sh
- 進入腳本所在的目錄:
cd /vmfs/volumes/datastore1/ESXi_backup/
- 運行腳本:
./esxi_backup.sh
- 確認已創建備份文件:
ls -al
- 確保 ESXi 配置備份腳本按計劃運行(自動)。為此編輯計劃程序配置:
vi /var/spool/cron/crontabs/root
- 添加以下字符串以在每天凌晨 02:10 執行 ESXi 配置備份:
10 02 * * * /vmfs/volumes/datastore1/ESXi_backup/esxi_backup.sh
- 儲存檔案更改。為了在唯讀檔案中保存更改,輸入:
:wq!
作為替代方案,您可以在編輯檔案之前更改檔案權限:
chmod +w /var/spool/cron/crontabs/root
一旦設置完成,ESXi配置將在每天凌晨02:10自動備份到名為ESXi_config_bakup_date_time.tgz的檔案中。
如何在ESXi命令行中恢復ESXi配置
您應該在想要還原ESXi配置的機器上安裝與已備份ESXi主機相同版本和建置號的ESXi。這個規則對於本文考慮的所有ESXi配置恢復方法都是真實的。
如果您打算在從頭開始安裝的ESXi主機上還原ESXi配置,您需要為用於ESXi管理網路的網路介面設置IP地址並啟用SSH訪問。
UUID 必須在備份的 ESXi 伺服器和將恢復配置的 ESXi 伺服器上保持一致。如果 UUID 值不同,請參閱下一節中的步驟。
要恢復 ESXi 配置:
- 一旦您已經準備好從備份中恢復 ESXi 配置的新安裝 ESXi 主機,通過 SSH 連接到 ESXi 主機,並將主機進入維護模式(在此模式下停止 VM)。
esxcli system maintenanceMode set --enable yes
或
vim-cmd hostsvc/maintenance_mode_enter
- 使用 SCP 客戶端(例如 WinSCP)將包含 ESXi 配置備份的存檔複製到 ESXi 主機上的目錄,讓我們將 configBundle-xxxx.tgz 存檔從本地機器複製到目的地 ESXi 伺服器上的 /tmp/ 目錄。
- 將configBundle-xxxx.tgz檔案重新命名為configBundle.tgz後,再輸入恢復 ESXi 配置的命令。否則,您將收到錯誤訊息:「找不到檔案 /tmp/configBundle.tgz」。
您可以在通過 SSH 連接的 ESXi shell 中將檔案重新命名:
mv /tmp/configBundle-esxi6-7b.localdomain.tgz /tmp/configBundle.tgz
- 恢復 ESXi 配置:
vim-cmd hostsvc/firmware/restore_config /tmp/configBundle.tgz
執行此命令後,ESXi 主機將自動重新啟動。
- 重新啟動 ESXi 伺服器後,退出維護模式,此後您可以像平常一樣使用主機。
esxcli system maintenanceMode set --enable no
或
vim-cmd hostsvc/maintenance_mode_exit
如何更改 UUID 以恢復 ESXi 配置
您可以使用以下 2 种方式之一来检查 ESXi 服务器的 UUID:
- 在 ESXi 命令行界面中:
esxcfg-info -u
- 在您使用上述命令创建的 Manifest.txt 文件中的 configBundle.tgz 备份存档中。
您无法更改 ESXi 服务器的 UUID,因为标识符是根据硬件生成的。但是,在更改了存储在 Manifest.txt 文件中的 ESXi 配置备份存档 configBundle.tgz 中的 UUID 后,您可以将 ESXi 主机 A 的 ESXi 配置恢复到 ESXi 主机 B。
现在让我们来看一下如何更改 UUID,以将备份的配置应用到另一台物理服务器。 服务器 A 是备份配置的服务器,服务器 B 是将应用配置的服务器。
阶段 1
检查您要应用备份配置(服务器 B)的 ESXi 主机上的 UUID。这可以通过至少两种方法来完成,但第二种方法还允许您检查 ESXi 版本:
- 运行
esxcfg-info -u
- 備份 ESXi 伺服器 B 的配置:
vim-cmd hostsvc/firmware/sync_config
vim-cmd hostsvc/firmware/backup_config
- 將備份存檔複製到臨時目錄並進入該目錄:
cp /scratch/downloads/_hash_value_/configBundle-localhost.localdomain.tgz /tmp
cd /tmp/
- 從存檔中提取檔案:
tar zxvf configBundle.tgz
- 使用 vi 開啟 Manifest.txt 檔案並檢查 UUID 值(您會看到一個獨立的帶有 UUID 的行)。寫下 UUID。
vi Manifest.txt
在我們的案例中,UUID 為 1E9E4D56-B724-DFBE-D19D-4C2D827E0188
- 您可以刪除 /tmp/ 目錄中的臨時檔案:
rm configBundle-localhost.localdomain.tgz Manifest.txt state.tgz
階段 2
- 將 ESXi Server A 的 configBundle.tgz 配置備份存檔複製到 Server B,例如,到 /tmp/ 目錄並進入該目錄。
- 從 configBundle.tgz 存檔中提取文件:
tar zxvf configBundle.tgz
- 使用 vi 打開 Manifest.txt 文件並將 Server A 的 UUID 值更新為 Server B 的 UUID:
vi Manifest.txt
在我們的案例中,將 9EA94D56-7E39-96A8-AB45-DF31EF0971EC 更改為 1E9E4D56-B724-DFBE-D19D-4C2D827E0188
保存文件並退出文字編輯器:
:wq
- 將您的源 configBundle.tgz 文件重命名為 configBundle1.tgz,例如(如果您的 ESXi 配置備份文件名與 configBundle.tgz 不同,則可以跳過此步驟):
mv configBundle.tgz configBundle1.tgz
- Manifest.txt、state.tgz 和 jumpstrt.gz 檔案到新的 configBundle.tgz 壓縮檔中:
tar zcvf configBundle.tgz Manifest.txt state.tgz jumpstrt.gz
- 將 ESXi 主機置於維護模式並還原配置:
esxcli system maintenanceMode set --enable yes
vim-cmd hostsvc/firmware/restore_config /tmp/configBundle.tgz
方法 2:使用 vSphere CLI 備份 ESXi 主機
VMware 提供的另一個命令行界面用於管理 ESXi 主機是 vSphere CLI(請勿混淆為 VMware PowerCLI)。您應該在運行 Linux 或 Windows 的機器上安裝 vSphere CLI 以遠程管理 ESXi 主機。Perl 需要安裝 vSphere CLI。
使用 vSphere CLI 的優勢在於方便性和 Linux 中的 bash 功能。此方法尤其適用於 ESXi 6.x。如果您使用的是 ESXi 8,請選擇本文中解釋的其他方法。
安裝和配置 vCLI
- 從 VMware 的網站 下載適用於您操作系統的 vSphere CLI 版本。本示例使用 Ubuntu Linux。
- 前往下載檔案的目錄並從存檔中提取檔案:
tar -zxvf VMware-vSphere-CLI-6.5.0-4566394.x86_64.tar.gz
- 安裝所需的套件:
apt-get install -y perl-doc libmodule-build-perl libssl-dev libxml-libxml-perl libsoap-lite-perl libuuid-perl build-essential
官方的 VMware 建議是安裝這組套件:
apt-get install ia32-libs build-essential gcc uuid uuid-dev perl libssl-dev perl-doc liburi-perl libxml-libxml-perl libcrypt-ssleay-perl
- 前往提取檔案的目錄並執行安裝程式:
./vmware-install.pl
- 閱讀並接受許可協議。 如果安裝程序要求您安裝一些必需的模塊,輸入 y 並安裝這些模塊。
- 在我們的情況下,某些模塊必須手動安裝。 它們可以通過使用 Perl 的交互式 shell 來安裝。
進入 Perl 的交互式 shell:
perl -MCPAN -e shell
- 運行以下命令以安裝所需的 Perl 模塊:
install Devel::StackTrace
同樣地安裝其他模塊。
注意:在我們的情況下,有一個模塊無法在交互式 Perl shell 中安裝,但我們可以使用 Ubuntu 控制台中的命令安裝該模塊:
apt-get install libcrypt-ssleay-perl
- 安裝 Perl 模組後,請再次运行 VMware vSphere CLI 安裝程序。
- 安裝已成功完成,您將在此 caso 看到以下屏幕:
- 現在,讓我們嘗試使用 vSphere CLI 並在 Linux 控制台中輸入命令,以顯示 ESXi 服務器(192.168.101.208 是 ESXi 服務器的 IP 地址)的裝置清單。
esxcli --server 192.168.101.208 storage core device list
- 服務器的 SHA-1 指紋不受信任,與 ESXi 主機的連接失敗了。這意味著您應該出於安全考慮定義指紋。讓我們試試另一個命令:
esxcli --server 192.168.101.208 --thumbprint B3:63:9F:67:E2:D9:C4:53:7D:A9:2A:4A:37:DC:AE:73:3C:83:C7:DA system maintenanceMode get
用戶名和密碼將在控制台中以交互模式提示。
盡量不要使用輸入明文的命令,像這樣:
esxcli --server 192.168.101.208 --username root --password TestPass_555 --thumbprint B3:63:9F:67:E2:D9:C4:53:7D:A9:2A:4A:37:DC:AE:73:3C:83:C7:DA system maintenanceMode get
注意:這是出於安全考慮。執行的命令在 Linux 中保存,直到您運行 history -c 命令來清除歷史記錄。如果需要避免使用交互模式和手動輸入登錄名和密碼,您可以將 ESXi 會話保存到文件中,並在運行命令時使用該文件。保存會話是安全的,不像在命令中以明文形式輸入密碼。保存會話的詳細信息如下。
將指紋保存在連接 ESXi 主機時
每次執行命令來輸入 ESXi 指紋都不方便。unately,可以將指紋保存下來,並在未定義指紋的情況下使用 vSphere CLI 執行進一步的命令。
-
轉到目錄:
cd /usr/lib/vmware-vcli/apps/general/
-
/usr/lib/vmware-vcli/apps/general/credstore_admin.pl add -s server -t thumbprint
在我們的特定示例中,該命令是:
/usr/lib/vmware-vcli/apps/general/credstore_admin.pl add -s 192.168.101.208 -t B3:63:9F:67:E2:D9:C4:53:7D:A9:2A:4A:37:DC:AE:73:3C:83:C7:DA
- 現在您可以在vSphere CLI中運行命令,而無需每次輸入指紋:
esxcli --server 192.168.101.208 system maintenanceMode get
但是,您仍然需要輸入用戶名和密碼。但是,您可以根據以下各節的示例配置vSphere CLI,以避免每次輸入密碼。
使用會話文件連接到ESXi主機
- 建立一個儲存 ESXi 組態備份檔案的目錄,例如 /backup/
mkdir /backup
- 轉換到該目錄:
cd /usr/lib/vmware-vcli/apps/session
- 使用 Perl 指令將授權 ESXi 主機工作階段儲存到檔案中:
perl save\_session.pl --savesessionfile /backup/192-168-101-208session --server 192.168.101.208 --username root --password TestPass\_555
其中:
——savesessionfile /backup/192-168-101-208session 是創建的工作階段檔案名稱
——server 192.168.101.208 是要儲存工作階段的 ESXi 主機名稱(在多個示例中使用此 ESXi 主機)
——username root 是連接 ESXi 主機的使用者名稱
——password TestPass\_555 是連接 ESXi 主機的使用者密碼
現在您可以運行命令而無需輸入密碼,但您應該輸入––sessionfile鍵(選項)並定義會話文件的路徑。
例如:
esxcli --sessionfile /backup/192-168-101-208session system maintenanceMode get
使用配置文件連接到ESXi主機
該方法的理念是將憑據保存為純文本格式的配置文件中,並在運行vSphere CLI中的ESXi命令時參照此文件。
- 創建一個配置文件:
vim /backup/vcli-config
- 輸入以下憑據:
VI_USERNAME=root
VI_PASSWORD=TestPass_555
- 保存文件。
- 執行以下命令在遠端 ESXi 伺服器上使用 vSphere CLI:
esxcli --server 192.168.101.208 --config vcli-config system maintenanceMode get
注意: 鑑於憑證以明文保存,此方法不安全。
使用憑證存儲庫連接到 ESXi 主機
A credential store is the xml file located in the user directory in the vmware subdirectory ~/.vmware/credstore/vicredentials.xml. The advantage of using the credentials store to run commands on remote ESXi hosts is that the password is not saved as plain text. As a result, this method provides higher security.
- 為了將憑證添加到憑證存儲庫,運行以下命令:
/usr/lib/vmware-vcli/apps/general/credstore_admin.pl add --server 192.168.101.208 --username root
- 列出在憑證存儲庫中保存的憑證,以確保所需的憑證已存在:
/usr/lib/vmware-vcli/apps/general/credstore_admin.pl list
-
# esxcli –server 192.168.101.208 –credstore /root/.vmware/credstore/vicredentials.xml system maintenanceMode get
如果您使用非根用户,则凭据文件保存在/home/user_name/.vmware/credstore/vicredentials.xml
在下面的屏幕截图中,您可以看到凭据是如何保存在凭据存储文件中的。
使用 vSphere CLI 备份 ESXi 主机配置
现在您已经在 Ubuntu Linux 机器上配置了 vSphere CLI,您可以运行命令并备份 ESXi 配置:
- 进入 /usr/bin/ 目录:
cd /usr/bin
-
- 若要在不輸入使用者名稱和密碼的情況下備份 ESXi 配置,請使用以下其中一個命令。
vicfg-cfgbackup --server 192.168.101.208 --credstore /root/.vmware/credstore/vicredentials.xml -s /backup/192-168-101-208-esxi-cfg.tgz
- 或者在將會話保存到會話檔後,使用以下命令:
- 如果您想在互動模式中輸入密碼的情況下備份 ESXi 配置,可以運行以下命令:
vicfg-cfgbackup --sessionfile /backup/192-168-101-208session -s /backup/192-168-101-208-esxi-cfg.tgz
注意: vicfg- 命令已棄用。如果 vicfg 在您的情況下不起作用,請在與最新版本的 ESXi 主機一起使用命令行介面時,使用 ESXCLI 相應的命令。查看其他 ESXi 配置備份方法的命令。
使用 ––sessionfile 選項的缺點是在運行 vSphere CLI 中最後一個命令後,閒置 30 分鐘後會超時。之後,您必須重新進行身份驗證並創建會話檔。
vicfg-cfgbackup --server 192.168.101.208 -s /backup/192-168-101-208-esxi-cfg.tgz
如何自動化ESXi配置備份
如果您的環境動態變化,並且ESXi主機的配置經常更改,則手動備份ESXi主機可能不切實際。在這種情況下,您可以通過添加備份命令或包含多個命令的備份腳本來自動備份ESXi配置。Crontab是Linux中的一個調度程序。
- 在Linux中編輯排程器配置以定期且自動地運行ESXi配置備份命令。
crontab -e
注意:
如果您是第一次編輯crontab配置,您應該選擇要用於編輯crontab配置的默認文本編輯器。在我們的示例中,我們使用/usr/bin/vim.basic。
crontab配置的格式如下:
分 鐘 小時 月份 天 星期 命令
- 讓我們在每天凌晨03:25備份ESXi主機配置,添加以下行到crontab配置中:
25 03 * * * /usr/bin/vicfg-cfgbackup ––server 192.168.101.208 ––config /backup/vcli-config -s /backup/192-168-101-208-esxi-cfg-cron.tgz
- 寫入 crontab 設定並退出文字編輯器 vim (在此示例中使用):
:wq
- 等待到 03:25 AM 之後檢查必須保存 ESXi 備份配置文件的目錄:
ls -al
如下面的截圖所示,ESXi 主機配置的備份文件已於 03:25 自動創建。
現在已經自動創建了ESXi配置備份,這很棒,但是存在一個缺點。每次cron運行一個定時命令來創建ESXi配置備份時,上一個tgz文件都會被新的tgz文件覆蓋。如果前天創建的具有正確ESXi配置的備份被隔天創建的包含不正確ESXi配置的文件覆蓋,這可能會引起問題。為了防止這個問題,您應該將ESXi配置備份到不同的文件中。
讓我們創建一個簡單的腳本,每次將ESXi配置保存為具有唯一文件名的單獨文件,該文件名包含了文件創建時的日期和時間。通過創建一個腳本,您可以添加命令來通過運行單個腳本來備份多個ESXi主機。
- 在/backup/目錄中創建esxi_backup.sh文件:
vim /backup/esxi_backup.sh
- 將以下行添加到文件中:
#!/bin/bash
ESXI101_208_BACKUP_NAME=”192-168-101-208-$(date +’%Y%m%d_%H%M%S’)esxi-cfg.tgz”
vicfg-cfgbackup ––server 192.168.101.208 ––config /backup/vcli-config -s /backup/$ESXI101_208_BACKUP_NAME
- 將更改寫入檔案並退出文字編輯器 vim:
:wq
- 使檔案可執行:
chmod +x /backup/esxi_backup.sh
- 編輯排程器配置:
crontab -e
- 新增如下行:
50 06 * * * /backup/esxi_backup.sh
此配置行允許我們設置 crontab 在早上 06:50 執行 ESXi 配置備份腳本。
通過在行開頭添加 # 字符來禁用您添加的上一個排定的任務。
保存配置。
- 等待設定時間後,檢查是否已建立 ESXi 配置備份存檔。
這是一個示範自動化概念的簡單腳本。您可以創建複雜的腳本來備份多個 ESXi 主機。
注意:每次 ESXi 重新啟動或閒置 30 分鐘後,ESXi 會話的身份驗證就會過期。在創建用於自動化 ESXi 備份的腳本時,請牢記此功能。
如何在 vSphere CLI 中恢復 ESXi 配置
使用 vSphere CLI 恢復 ESXi 配置的要求與其他方法的要求相似。為了恢復 ESXi 配置,請確保通過 SSH 啟用了遠程訪問,並且已知 ESXi 伺服器的 IP 地址(建議使用與備份的 ESXi 主機相同的 IP 地址)。
要恢復 ESXi 配置,運行如下命令:
vicfg-cfgbackup --server=ESXi_host_IP_address --username=root -l backup_file
在我們的特定示例中,命令是:
vicfg-cfgbackup --server=192.168.101.208 --username=root -l /backup/192-168-101-208-esxi-cfg.tgz
如果您想要恢復配置的目標 ESXi 主機的 UUID 與備份的 ESXi 伺服器的 UUID 不同(其 UUID 定義在備份存檔案 Manifest.txt 內),您可以使用 -f 鍵(強制)來覆蓋 UUID。
您可以使用以下命令檢查正在運行的 ESXi 主機的 UUID:
esxcfg-info -u
注意:從 ESXi 7.0 U2 開始,如果在 ESXi 主機上使用 TPM(可信平台模組),則 UUID 強制覆蓋功能將無法正常運作。
方法 3:使用 PowerCLI 備份 ESXi 主機
喜歡 Windows PowerShell 的用戶可以使用 用於 vSphere 管理的 PowerCLI 來備份 ESXi 配置。PowerCLI 是一組 PowerShell cmdlet,一些基本的 PowerCLI 命令在 這篇部落格文章 中有解釋。
要使用 PowerCLI 備份 ESXi 主機,您必須首先在您的操作系統上 安裝 PowerCLI:
- 以管理員身份在 Windows 中運行 PowerCLI。
- 連接到您的 ESXi 伺服器:
Connect-VIServer ESXi_IP_address -user user_name -password your_password
在我們的情況下,我們使用以下指令:
Connect-VIServer 192.168.101.208 -user root -password TestPass_555
Get-VMHostFirmware -vmhost 192.168.101.208 -BackupConfiguration -DestinationPath "C:\backup ESXi host"
- 如果您的 ESXi 主機由 vCenter Server 管理,您可以先連接到 vCenter,然後在 PowerCLI 中備份主機的 ESXi 配置,而無需在每次備份主機配置之前每次進行身份驗證:
Connect-VIServer 10.10.10.16
輸入用於訪問 vCenter Server 的管理登錄名稱和密碼。為此目的會出現彈出窗口。
- 如果您的 ESXi 主機由 vCenter Server 管理,您可以先連接到 vCenter,然後在 PowerCLI 中備份主機的 ESXi 配置,而無需在每次備份主機配置之前每次進行身份驗證:
- 備份每個主機的 ESXi 配置:
Get-VMHostFirmware -vmhost 10.10.10.61 -BackupConfiguration -DestinationPath "C:\backup ESXi host"
Get-VMHostFirmware -vmhost 10.10.10.46 -BackupConfiguration -DestinationPath "C:\backup ESXi host"
如何在PowerCLI中还原ESXi配置
- 以管理员身份运行VMware PowerCLI。
- 连接到您想要恢复配置的ESXi主机(在我们的示例中,我们将在IP地址为192.168.101.208的ESXi主机上恢复配置)。
- 将ESXi主机置于维护模式:
Set-VMHost -VMHost 192.168.101.208 -State Maintenance
- 在恢复ESXi配置之前,确保驻留在该ESXi主机上的虚拟机已关闭或迁移到另一台ESXi主机。请注意,在执行恢复配置的命令后,ESXi主机将自动重新启动。
- 使用
Set-VMHostFirmware restore
命令恢复配置:Set-VMHostFirmware -vmhost 192.168.101.208 -Restore -SourcePath "C:\backup ESXi host\configBundle-192.168.101.20
8.tgz" -HostUser root -HostPassword TestPass_555
恢復配置的ESXi主機的版本、構建號和UUID必須與您用於恢復配置的ESXi主機的版本、構建號和UUID相匹配。在命令中使用-force鍵跳過UUID檢查。
方法四:手動備份和恢復ESXi配置
您還應該準備好當您無法登錄ESXi主機時,或當ESXi主機無法啟動且您無法使用命令行界面運行備份或還原ESXi配置的命令時的情況。這可能是由於硬件故障或軟件問題引起的。在這種情況下,最好知道如何手動備份和恢復ESXi配置。
正如您記得的,在ESXi主機上的默認crontab配置中,/sbin/auto-backup.sh腳本每小時運行一次,並在ESXi主機重新啟動或關機時運行。此腳本旨在將存儲在內存中的ESXi配置保存到/bootbank/state.tgz文件中。
注意:使用此方法時,/bootbank/state.tgz文件不得加密。
ESXi配置在ESXi服务器运行时存储在计算机的RAM中(适当的RAM磁盘挂载在/etc/目录上)。当ESXi启动时,系统文件从/bootbank/state.tgz归档中提取到/etc/目录中。如果您的ESXi主机正在运行,您可以使用SCP客户端(如WinSCP)手动复制/bootbank/state.tgz文件(必须启用远程SSH访问)。作为替代,如果您的ESXi主机无法启动(例如由于硬件故障),您可以从Live DVD启动,并手动复制state.tgz文件。
手动恢复工作流程
- 准备您之前使用ESXi shell、vSphere CLI或PowerCLI创建的备份归档。在我们的情况下,文件名为configBundle-192-168-101-208.tgz。您可以将文件复制到USB闪存驱动器,然后将该闪存驱动器插入到需要恢复系统配置的ESXi服务器的USB端口中。
- 从安装ESXi的计算机上的Live CD/DVD启动。您可以使用Ubuntu安装光盘作为Live CD/DVD。
- 在Linux中打开控制台(终端)。
- 列出磁碟分割區:
ls -al /dev/sd*
fdisk -l | grep /dev/sda
在這種情況下,我們需要被標記為Microsoft基本資料的/dev/sda5/分割區。
ESXi磁碟分割區在關於從USB快閃磁碟機啟動ESXi和ESXi密碼恢復的部落格文章中被提及。
在這種情況下,我們對/dev/sda5分割區感興趣。
- 建立將掛載/dev/sda5分割區的目錄:
mkdir /mnt/sda5
- 將磁碟分割區掛載到該目錄:
mount /dev/sda5 /mnt/sda5
- 在/mnt/sda5目錄中,您可以找到state.tgz檔案,其中包含ESXi配置。當ESXi主機啟動時,此目錄(在其中存儲state.tgz)被稱為/bootblank/。
- 將ESXi配置備份檔案從USB快閃磁碟機複製到從Live DVD載入的Ubuntu的/tmp/目錄。在我們的示例中,我們複製:
cp /media/Ubuntu/Ubuntu\ 18.0/backup_ESXi_host/configBundle-192-168-101-208.tgz /tmp/configBundle.tgz
- 從備份檔案中提取檔案:
tar zxvf /tmp/configBundle.tgz
- 您可以看到從檔案中提取了state.tgz檔案:
ls -al /tmp/
- 將位於/dev/sda5分割區上掛載在/mnt/sda5/的原始state.tgz檔案重新命名
mv /mnt/sda5/state.tgz /mnt/sda5/state-old.tgz
- 複製您從ESXi配置備份檔案中提取的state.tgz文件到/tmp/目錄:
cp /tmp/state.tgz /mnt/sda5/
- 卸載已掛載的分區:
umount /dev/sda5/
- 重新啟動伺服器。彈出Ubuntu Live DVD,然後從安裝ESXi的磁碟啟動。
init 6
現在您的ESXi配置應該已經恢復。
結論
使用ESXi命令行界面很好,因為您無需安裝其他軟體。 vSphere CLI的優點是可以通過使用Linux機器遠程運行命令,以及可以自動進行ESXi配置備份。另一方面,PowerCLI可能會受到Windows用戶的青睞。
如果ESXi主機不健康,且無法啟動主機,則可以手動備份和恢復配置。請注意,引導空白資訊和有關VM的資訊並未存儲在ESXi配置備份檔案中。恢復ESXi配置後,您可能需要在庫存中註冊虛擬機器。
建議您在備份ESXi主機的同時,也備份vSphere虛擬機器。NAKIVO備份和複製是一款通用備份解決方案,可以備份您的VMware VM、Hyper-V VM、Amazon EC2實例以及物理Linux和Windows伺服器。
Source:
https://www.nakivo.com/blog/back-up-and-restore-vmware-esxi-host-configuration-guide/