Vấn đề thực tế khi vận hành ESXi cluster
Mình quản lý cluster VMware với 8 host ESXi tại công ty, và cứ mỗi lần VMware release security patch, cả team lại “toát mồ hôi”. Quy trình chuẩn trước đây là: migrate tất cả VM sang host khác bằng vMotion, đưa host vào Maintenance Mode, cài patch, reboot, chờ host lên lại, rồi migrate VM về. Với 8 host, mỗi đợt patch kéo dài 4–6 tiếng, chưa kể rủi ro trong quá trình migrate.
Vấn đề thực tế còn tệ hơn trong các tình huống:
- Host không đủ tài nguyên để nhận VM từ host đang patch
- Có VM “pinned” — không migrate được (GPU passthrough, SR-IOV, USB passthrough)
- Khách hàng yêu cầu uptime 24/7, không chấp nhận downtime dù vài phút
- Patch khẩn cấp zero-day cần triển khai ngay trong giờ hành chính
Tại sao patch ESXi truyền thống lại tốn thời gian?
ESXi là hypervisor bare-metal — chạy trực tiếp trên hardware. Khi patch, hầu hết các bản vá cần ghi đè module kernel đang hoạt động. Không thể “hot-swap” kernel module khi VM đang chạy, nên cách duy nhất là reboot toàn bộ hệ thống.
Full hardware reboot một ESXi host thường mất 10–15 phút, cộng thêm:
- vMotion migrate VMs đi: 10–30 phút tùy số lượng VM và dung lượng RAM
- Chờ host vào Maintenance Mode: 2–5 phút
- vMotion migrate VMs về: 10–30 phút
Tổng mỗi host mất 30–60 phút, nhân với 8 host là cả buổi sáng.
Các cách giải quyết
Cách 1: Maintenance Mode + Full Reboot (cách cũ)
Đây là cách kinh điển. Dùng vSphere Lifecycle Manager hoặc esxcli để cài patch rồi reboot:
# Kiểm tra VIBs đang cài trên host
esxcli software vib list | grep -i vmware
# Cài patch từ offline bundle
esxcli software vib update -d /vmfs/volumes/datastore/patch.zip
# Reboot host sau khi cài xong
reboot
Nhược điểm rõ ràng: vẫn cần Maintenance Mode, vẫn cần reboot, vẫn gây downtime cho VM không migrate được.
Cách 2: Quick Boot (ESXi 6.7+)
VMware giới thiệu Quick Boot từ ESXi 6.7. Thay vì reboot toàn bộ hardware (POST, BIOS, disk scan), Quick Boot chỉ restart ESXi kernel layer — nhanh hơn full reboot khoảng 50–70%.
# Kiểm tra Quick Boot có được support không
/usr/lib/vmware/loadesx/bin/loadESX.py --check
# Kết quả mong đợi: quickboot: supported
# Bật Quick Boot
vim-cmd hostsvc/quickboot/enable
# Kiểm tra trạng thái
vim-cmd hostsvc/quickboot/status
Vẫn cần Maintenance Mode, nhưng thời gian reboot giảm từ 15 phút xuống còn 4–6 phút.
Cách 3: VMware vSphere 8 Live Patching — Không cần Maintenance Mode
Đây là tính năng mình chờ đợi nhất trong vSphere 8. Live Patching cho phép áp một số loại patch — đặc biệt là security patches và critical bug fixes — mà không cần đưa host vào Maintenance Mode và không cần migrate VM.
Cơ chế hoạt động: vSphere 8 dùng kỹ thuật kernel live patching (tương tự kpatch trên Linux) — patch được inject trực tiếp vào memory của kernel đang chạy, thay thế function cụ thể mà không restart bất kỳ process nào.
Cách tốt nhất: Triển khai Live Patching với vSphere 8
Điều kiện tiên quyết
- vSphere 8.0 Update 1 trở lên — cả vCenter lẫn ESXi host đều phải là vSphere 8
- License: vSphere Enterprise Plus hoặc vSphere+ (Live Patching không có trong Standard)
- Hardware nằm trong Hardware Compatibility List (HCL) của VMware
- Cluster đã cấu hình vSphere Lifecycle Manager (vLCM) ở chế độ Image
Bước 1: Kiểm tra host có support Live Patching không
# SSH vào ESXi host
# Kiểm tra version
vmware -v
# Kiểm tra Live Patching capability
esxcli software component list | grep -i livepatch
# Xem thông tin chi tiết platform
esxcli hardware platform get
# PowerCLI từ workstation — kiểm tra toàn bộ cluster
Connect-VIServer -Server vcenter.company.com
$cluster = Get-Cluster -Name "Production-Cluster"
Get-VMHost -Location $cluster | Select Name, Version, Build | Sort Name
Bước 2: Đảm bảo cluster dùng vLCM Image mode
vLCM có 2 chế độ: Baselines (cũ) và Image (mới). Live Patching chỉ hoạt động với Image mode:
- Mở vSphere Client → chọn Cluster
- Tab Updates → vSphere Lifecycle Manager
- Nếu thấy “Manage with a single image” → đã dùng Image mode (tốt rồi)
- Nếu vẫn là Baselines → cần migrate sang Image mode trước khi dùng Live Patching
# PowerCLI: Kiểm tra cluster đang dùng Image hay Baselines
$clusterView = Get-Cluster "Production-Cluster" | Get-View
$clusterView.ConfigurationEx.VsanConfigInfo
Bước 3: Check compliance và xác nhận patch support Live Install
vLCM tự động phân tích patch nào áp được Live và patch nào cần reboot. Mình hay dùng PowerCLI để có cái nhìn tổng quan trước:
# PowerCLI: Kiểm tra compliance toàn cluster
$complianceResult = Test-Compliance -Entity (Get-Cluster "Production-Cluster")
# Xem host nào Non-Compliant
$complianceResult | Where-Object {$_.Status -ne "Compliant"} |
Select Entity, Status
# Xem chi tiết: patch nào live được, patch nào cần reboot
$complianceResult | ForEach-Object {
Write-Host "Host: $($_.Entity.Name)"
$_.PatchResults | Select PatchName, LiveInstall, RequiresReboot
}
Bước 4: Áp Live Patch qua vSphere Client
Đây là bước thực thi. Làm theo đúng thứ tự để tránh áp nhầm patch cần reboot lên production:
- Vào Cluster → Updates → vSphere Lifecycle Manager
- Click Check Compliance — đợi 2–3 phút
- Chọn host Non-Compliant → click Remediate
- Trong cửa sổ Remediation, xem mục “Remediation Impact”
- Nếu patch support Live Patching, sẽ thấy option “Apply patches without reboot (Live Patching)” — tick vào đây
- Click Remediate để bắt đầu
# Trên ESXi host, theo dõi tiến trình live patch qua log
tail -f /var/log/esxupdate.log
# Xem các live patch đã áp thành công
esxcli software vib list | grep -i patch
Trong quá trình Live Patching diễn ra:
- Host không vào Maintenance Mode
- VMs không bị migrate hay restart
- Thời gian áp patch: 2–5 phút tùy kích thước
- vCenter vẫn hiển thị host online và VMs running bình thường
Bước 5: Verify sau khi patch
# SSH vào ESXi host, kiểm tra version đã update chưa
vmware -v
# Xác nhận VMs vẫn đang chạy bình thường
esxcli vm process list
# Xem log xác nhận không có lỗi
cat /var/log/esxupdate.log | tail -30
# PowerCLI: Verify compliance sau khi remediate
Test-Compliance -Entity (Get-Cluster "Production-Cluster") |
Select Entity, Status, LastCheckedTime
Lưu ý từ 6 tháng dùng thực tế
Từ trải nghiệm vận hành cluster 8 host, có vài điểm thực tế cần nắm:
- Không phải patch nào cũng Live được: VMware Release Notes của từng patch ghi rõ “Supports Live Install: Yes/No”. Major version update (8.0 → 8.0 U2) luôn cần full reboot.
- Critical security patches thường hỗ trợ Live Patching: Đây là use case chính — áp CVE patch nhanh mà không downtime.
- Vẫn cần maintenance window định kỳ: Live Patching xử lý patch nhỏ, còn major update vẫn cần reboot. Mình lên lịch maintenance mỗi quý để patch lớn.
- Monitor 30 phút sau khi patch: Dù không reboot, mình vẫn giữ thói quen theo dõi cluster sau Live Patch để đảm bảo không có bất thường.
- Test trên non-prod trước: Dù nhanh và tiện, vẫn phải test trên dev/staging cluster trước khi áp lên production — đây là nguyên tắc bất biến.
Live Patching trong vSphere 8 thực sự thay đổi cách mình làm việc. Từ chỗ mỗi đợt patch mất cả buổi và phải lên lịch ngoài giờ hành chính, giờ security patch quan trọng có thể áp trong 5 phút ngay giữa ngày làm việc mà không ai hay biết — đặc biệt là các VM dùng GPU passthrough hay SR-IOV mà trước đây buộc phải tắt khi patch host.

