Sao lưu và phục hồi cấu hình ESXi Host bằng PowerCLI và ESXCLI: Cứu cụm ảo hóa khi máy chủ gặp sự cố

VMware tutorial - IT technology blog
VMware tutorial - IT technology blog

Bối cảnh & Vì sao bạn không thể bỏ qua backup cấu hình ESXi?

Phần lớn sysadmin đều đầu tư kỹ lưỡng cho việc sao lưu máy ảo (VM) qua Veeam, Nakivo hay Synology Active Backup. Điều này hoàn toàn đúng vì dữ liệu là tài sản cốt lõi. Tuy nhiên, nhiều kỹ sư vận hành lại bỏ quên tầng nền tảng: cấu hình của chính máy chủ ESXi (Host Configuration).

Thực tế vận hành cho thấy, thanh USB boot hoặc thẻ nhớ SD cài đặt ESXi rất dễ hỏng sau 2-3 năm ghi log liên tục. Khi ổ boot chết, server sập hoàn toàn. Bạn mất trắng cấu hình vSwitch, port group, VLAN tag, VMkernel port cho iSCSI/NFS storage, firewall rule và user cục bộ.

Dữ liệu máy ảo trên SAN/NAS vẫn an toàn. Dù vậy, bạn sẽ phải dựng lại host từ đầu. Việc gán lại hàng chục dải IP, subnet và VLAN thủ công vừa ngốn nửa ngày làm việc, vừa tiềm ẩn rủi ro gõ nhầm thông số mạng khiến VM không khởi động được.

Trong cụm cluster 8 host Dell R640 mình đang quản trị, thẻ nhớ trên host 03 từng chết đột ngột vào đúng 8 giờ sáng thứ Hai. Nhờ có sẵn file backup cấu hình lưu trên NAS Synology, mình thay thẻ mới, cài lại ESXi và nạp lại toàn bộ cấu hình chỉ mất đúng 12 phút. Host tái gia nhập cluster mượt mà, không gián đoạn dịch vụ production.

Bản sao lưu cấu hình ESXi nằm gói gọn trong file nén configBundle.tgz (thường chỉ 80KB đến 300KB) nhưng lưu đầy đủ:

  • Cấu hình Virtual Switch (vSwitch tiêu chuẩn và proxy switch của Distributed Virtual Switch).
  • Cấu hình Storage Fabric (Software iSCSI IQN, NFS mount path, Fibre Channel zoning info).
  • Thông số mạng lõi: IP tĩnh, Gateway, DNS, NTP Server và Syslog exporter.
  • Chứng chỉ SSL tự tạo, tài khoản root/local user và key bản quyền.

Chuẩn bị môi trường thao tác

Tùy theo tình huống mạng thực tế, bạn có hai hướng xử lý: dùng ESXCLI/vim-cmd trực tiếp qua SSH (cứu hộ tại chỗ) hoặc dùng VMware PowerCLI (quản trị tập trung, tự động hóa).

1. Bật dịch vụ SSH trên ESXi Host

ESXi mặc định tắt SSH để đảm bảo an toàn. Khi cần thao tác dòng lệnh trực tiếp:

  1. Truy cập vào ESXi Host Client qua trình duyệt: https://<IP-ESXi>/ui.
  2. Vào Manage > chọn tab Services.
  3. Tìm service TSM-SSH, click chuột phải và bấm Start.

2. Cài đặt VMware PowerCLI trên máy quản trị

PowerCLI tương thích tốt trên PowerShell 7 cho cả Windows, Linux và macOS. Đây là lựa chọn tối ưu nếu bạn muốn tự động hóa sao lưu theo lịch cho nhiều server.

Khởi chạy PowerShell với quyền Administrator rồi thực thi:

# Cài đặt module PowerCLI chính thức từ PowerShell Gallery
Install-Module -Name VMware.PowerCLI -Scope CurrentUser -Confirm:$false

# Bỏ qua cảnh báo SSL đối với chứng chỉ tự ký (Self-signed)
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false

Quy trình Sao lưu & Phục hồi chi tiết

Thao tác bắt buộc: Đồng bộ dữ liệu RAM xuống phân vùng Boot

ESXi có cơ chế giữ tạm thời các thay đổi trên bộ nhớ RAM. Nếu vừa đổi IP hay tạo port group mới mà bạn trích xuất cấu hình ngay, file backup sẽ thiếu dữ liệu. Hãy luôn ép hệ điều hành ghi đồng bộ xuống ổ boot trước:

vim-cmd hostsvc/firmware/sync_config

Phương pháp 1: Thực thi lệnh vim-cmd qua SSH

Giải pháp này thích hợp khi bạn cần backup nhanh một host đơn lẻ hoặc khi máy chủ vCenter Server đang offline.

Các bước sao lưu:

# 1. Ép hệ thống đồng bộ cấu hình từ RAM
vim-cmd hostsvc/firmware/sync_config

# 2. Tạo bundle sao lưu cấu hình
vim-cmd hostsvc/firmware/backup_config

Màn hình terminal sẽ xuất ra đường link tải về, dạng:

Bundle can be downloaded at : http://*/downloads/123456/configBundle-esxi01.local.tgz

Bạn đổi ký tự * thành IP của ESXi host (ví dụ: http://192.168.10.50/downloads/123456/configBundle-esxi01.local.tgz). Dán link vào trình duyệt để tải file nén về máy tính.

Quy trình phục hồi:

Sau khi cài lại ESXi trắng (phải cùng build number với bản cũ):

  1. Đổi tên file đã tải về thành định dạng chuẩn: configBundle.tgz (hệ thống không nhận file nếu giữ tên chứa hostname dài).
  2. Dùng SCP hoặc WinSCP copy file vào thư mục /tmp/ trên host:
scp configBundle.tgz [email protected]:/tmp/
  1. Mở phiên SSH vào host và chạy lệnh restore:
# Đưa host về Maintenance Mode
esxcli system maintenanceMode set --enable true

# Khôi phục cấu hình (số 1 là cờ yêu cầu host tự reboot ngay sau khi áp dụng)
vim-cmd hostsvc/firmware/restore_config /tmp/configBundle.tgz 1

Server sẽ nạp lại file, bung cấu hình và khởi động lại. Khi máy khởi động xong, toàn bộ vSwitch, port group và datastore sẽ xuất hiện trở lại như ban đầu.

Phương pháp 2: Tự động hóa bằng VMware PowerCLI

Nếu quản lý từ 3 host trở lên, bạn nên tận dụng PowerCLI để sao lưu đồng loạt thay vì gõ lệnh trên từng node.

Sao lưu một host đơn lẻ:

# Kết nối vào ESXi host
Connect-VIServer -Server 192.168.10.50 -User root -Password 'MatKhauESXi'

# Xuất bản backup ra ổ đĩa quản trị
Get-VMHostFirmware -VMHost 192.168.10.50 -BackupConfiguration -DestinationPath "D:\VMware_Backups\"

Disconnect-VIServer -Confirm:$false

Script quét và backup toàn bộ Cluster:

Đoạn script dưới đây tự động lấy danh sách host từ vCenter, tạo thư mục theo ngày rồi tải file cấu hình về máy:

$vCenter = "vcenter.itfromzero.local"
$DateFolder = Get-Date -Format 'yyyy-MM-dd'
$BackupDir = "D:\ESXi_AutoBackup\$DateFolder"

if (!(Test-Path -Path $BackupDir)) {
    New-Item -ItemType Directory -Path $BackupDir | Out-Null
}

Connect-VIServer -Server $vCenter -User [email protected] -Password 'MatKhauAdmin'

$AllHosts = Get-VMHost
foreach ($HostNode in $AllHosts) {
    Write-Host "[+] Dang sao luu: $($HostNode.Name)" -ForegroundColor Cyan
    Get-VMHostFirmware -VMHost $HostNode -BackupConfiguration -DestinationPath $BackupDir
}

Disconnect-VIServer -Confirm:$false
Write-Host "[✓] Hoan tat backup toan bo $($AllHosts.Count) host!" -ForegroundColor Green

Khôi phục cấu hình bằng PowerCLI:

Connect-VIServer -Server 192.168.10.50 -User root -Password 'MatKhauESXi'

# Bật Maintenance Mode
Set-VMHost -VMHost 192.168.10.50 -State "Maintenance"

# Phục hồi cấu hình (ESXi sẽ tự reboot sau lệnh này)
Set-VMHostFirmware -VMHost 192.168.10.50 -Restore -SourcePath "D:\VMware_Backups\configBundle-192.168.10.50.tgz" -HostUser root -HostPassword 'MatKhauESXi'

Hai nguyên tắc kỹ thuật bắt buộc phải nhớ khi Restore

  • Đồng nhất Build Number: ESXi đích phải cài đúng bản patch với host cũ (ví dụ: cùng là ESXi 7.0 Update 3k, Build 21313628). Nạp file backup của bản cũ lên bản build cao hơn hoặc lệch phiên bản lớn (từ 7.0 lên 8.0) sẽ gây hỏng vmx kernel và fail boot.
  • Kiểm tra UUID phần cứng: Khi bạn restore file backup sang một chassis hoàn toàn mới (khác MAC card mạng, khác serial bo mạch), lệnh restore của PowerCLI sẽ cảnh báo lỗi lệch UUID. Lúc này, hãy thêm tham số -Force trong cmdlet Set-VMHostFirmware để ép ghi đè. Sau khi reboot, bạn cần kiểm tra lại bảng ánh xạ card mạng vật lý (vmnic0, vmnic1).

Kiểm tra và thiết lập giám sát định kỳ

Backup mà không test khôi phục định kỳ thì rủi ro vẫn còn nguyên.

1. Kiểm tra dung lượng và tính toàn vẹn của file

File configBundle.tgz hợp lệ thường có kích thước từ 50KB đến 300KB. Nếu file tải về chỉ có 0KB hoặc vài byte, tiến trình export đã đứt gãy giữa chừng. Hãy mở nhanh bằng 7-Zip hoặc lệnh tar trên Linux để đảm bảo có 2 file bên trong: state.tgz và Manifest.txt.

# Kiem tra cau truc file tren Linux/macOS
tar -ztvf configBundle.tgz

2. Lập lịch tự động bằng Windows Task Scheduler

Đừng dựa vào trí nhớ. Bạn hãy đưa script PowerCLI nói trên vào Windows Task Scheduler để chạy cố định vào 23:00 mỗi Chủ Nhật. Ngoài ra, hãy duy trì nguyên tắc cứng: bất cứ khi nào cấu hình lại VLAN, đổi vSwitch uplink hoặc thay card HBA, hãy chạy script backup ngay lập tức.

3. Phân vùng lưu trữ an toàn

Tuyệt đối không lưu file backup ngay trên local datastore của chính máy chủ đó. Hãy đẩy file tự động về NAS nội bộ, VM quản trị ở cluster phụ hoặc đưa lên cloud storage có cấu hình phân quyền chặt chẽ. Dành ra 15 phút thiết lập tự động hôm nay sẽ giúp bạn xử lý sự cố máy chủ một cách bình tĩnh và an toàn.

Share: