Migrate VMware ESXi → Proxmox VE
Hướng dẫn toàn trình trên HPE ProLiant DL380 Gen10 Plus — xóa RAID cũ, cấu hình lại RAID 10 cho 2 cụm SSD & HDD, cài Proxmox VE 8, backup toàn bộ VM với Veeam Backup & Replication v13 và restore cross-hypervisor (VMware ESXi → Proxmox VE) với tự động inject VirtIO drivers.
| Cụm | Slot | Ổ đĩa | RAID | Dung lượng sử dụng | Mục đích |
|---|---|---|---|---|---|
| SSD | 1 – 4 | 4 × 960GB SSD | RAID 10 | ~1.87 TB | VM hiệu năng cao (I/O nặng) |
| HDD | 5 – 8 | 4 × 2.4TB HDD | RAID 10 | ~4.68 TB | OS Proxmox + ISO + VM capacity |
Chuẩn bị & Kiểm kê hiện trạng
Lên lịch thực hiện · Kiểm kê VM · Chuẩn bị storage ngoài
0.1 Kiểm kê VM hiện có trên ESXi
Ghi lại đầy đủ thông tin trước khi thao tác. Đây là tài liệu phục hồi nếu có sự cố.
0.2 Chuẩn bị storage ngoài để backup
0.3 Kế hoạch thời gian (60 giờ)
| Thời gian | Công việc | Ước tính |
|---|---|---|
| T6 20:00–03:00 | Backup toàn bộ VM (Bước 1) | ~7h (tùy dung lượng) |
| T7 03:00–07:00 | Xóa RAID cũ + Tạo RAID 10 (Bước 2 & 3) | ~4h |
| T7 07:00–10:00 | Cài Proxmox VE + cấu hình storage (Bước 4 & 5) | ~3h |
| T7 10:00–CN | Restore VM từ backup (Bước 6) | ~12h+ (tùy VM) |
| CN–T2 08:00 | Kiểm tra, nghiệm thu, bàn giao (Bước 7) | ~8h |
Backup toàn bộ VM với Veeam B&R v13
VADP · CBT · Application-Aware VSS · Verify
1.1 Điều kiện tiên quyết
| Thành phần | Yêu cầu tối thiểu | Ghi chú |
|---|---|---|
| OS | Windows Server 2019/2022 | VM hoặc physical — cùng mạng với ESXi |
| CPU / RAM | 4 vCPU · 8 GB+ | 16 GB nếu backup song song nhiều VM |
| Disk hệ thống | 100 GB SSD | Catalog + temp staging area |
| License | Veeam B&R v13 Standard+ | Community Edition: free tới 10 workloads |
| Network | LAN 1 Gbps+ | Cùng VLAN hoặc routed tới ESXi host |
| Nguồn → Đích | Port | Mục đích |
|---|---|---|
| Veeam Server → ESXi | 443, 902 | VMware management API + NFC data transfer |
| Veeam Server → ESXi | 2500–3300 | Veeam transport data channel (VDDK) |
| VM Guest → Veeam | 6160, 6162 | App-Aware Processing — VSS coordination |
1.2 Thêm VMware ESXi vào Veeam Infrastructure
<esxi-ip> — Port: 443 → Nextroot · Password: <esxi-password> → OK# Xác nhận ESXi đã add thành công qua Veeam PowerShell
Add-PSSnapin VeeamPSSnapIn -ErrorAction SilentlyContinue
Connect-VBRServer -Server localhost
# Liệt kê VMware hosts đã thêm
Get-VBRServer | Where-Object {$_.Type -eq "ESXi"} | `
Select-Object Name, Port, IsAvailable
# Xem danh sách VM mà Veeam nhìn thấy
Find-VBRViEntity -Name "*" | Where-Object {$_.Type -eq "Vm"} | `
Select-Object Name, Path | Format-Table -AutoSize
1.3 Cấu hình Backup Repository
.vbk (full) và .vib (incremental). Dung lượng cần: ≥ tổng dung lượng thực tế các VM (không phải thin-provisioned). Nên dùng NAS riêng biệt (NFS/SMB) để backup tách biệt khỏi server — an toàn hơn khi rebuild.nas-ip:/backup/esxi-migration hoặc \\nas-ip\backup\esxi-migration1.4 Tạo VMware Backup Job & Chạy
ESXi-Pre-Migration-Full — Description ghi ngày & mục đích| Setting | Giá trị | Lý do |
|---|---|---|
| Backup mode | Incremental (Forever forward) | Full lần đầu, sau chỉ backup block thay đổi via CBT |
| Compression level | Optimal | Cân bằng tốt giữa tốc độ và tỷ lệ nén |
| Storage optimization | Local target (16 TB+) | Tối ưu block size cho NAS/local storage lớn |
| Enable deduplication | Bật | Giảm dung lượng với VM cùng template/OS |
| Changed Block Tracking | Tự động bật | Veeam enable CBT trên VM — backup incremental nhanh hơn 10× |
| App-Aware Processing (VSS) | Bật | Đảm bảo consistent backup cho Exchange, SQL Server, AD DS |
# Chạy backup job qua PowerShell (thay cho GUI)
Add-PSSnapin VeeamPSSnapIn -ErrorAction SilentlyContinue
Connect-VBRServer -Server localhost
$job = Get-VBRJob -Name "ESXi-Pre-Migration-Full"
# Chạy full backup (bỏ qua incremental logic)
Start-VBRJob -Job $job -FullBackup
# Theo dõi trạng thái job session
do {
Start-Sleep -Seconds 30
$session = Get-VBRJobSession -Job $job | Sort-Object CreationTime | Select-Object -Last 1
Write-Host "[$($session.State)] Progress: $($session.Progress)%"
} while ($session.State -eq "Working")
Write-Host "=== Job completed: $($session.Result) ==="
1.5 Xác minh Backup — Bắt buộc trước khi xóa RAID
- Home → Backups → chuột phải VM quan trọng nhất
- Restore → Instant Disk Recovery
- Veeam mount disk backup dưới dạng iSCSI target
- Connect từ Windows Explorer → kiểm tra files đọc được
- Stop publishing sau khi xác nhận xong
- Configuration → SureBackup → tạo Virtual Lab
- Tạo SureBackup Job → Add Application Group
- Veeam tự boot VM từ backup trong môi trường isolated
- Kiểm tra: ping, services, Heartbeat, custom test scripts
- Report per-VM: Success / Warning / Failed
# Xuất backup report chi tiết qua PowerShell
$job = Get-VBRJob -Name "ESXi-Pre-Migration-Full"
$session = Get-VBRJobSession -Job $job | Sort-Object CreationTime | Select-Object -Last 1
Write-Host "Result : $($session.Result)"
Write-Host "Start : $($session.CreationTime)"
Write-Host "End : $($session.EndTime)"
Write-Host "Data size : $([math]::Round($session.BackupStats.DataSize/1GB,1)) GB"
Write-Host "Backup size: $([math]::Round($session.BackupStats.BackupSize/1GB,1)) GB"
# Per-VM status
$session.GetTaskSessions() | Select-Object Name, Status, Progress | Format-Table -AutoSize
# Lưu báo cáo làm bằng chứng trước khi xóa RAID
$session.GetTaskSessions() | Export-Csv -Path "C:\backup-report-$(Get-Date -f yyyyMMdd).csv" -NoTypeInformation
Write-Host "Report saved."
Xóa cấu hình RAID hiện hữu
HPE SSA · Xóa RAID 1 (SSD) & RAID 5 (HDD) · Sắp xếp ổ đĩa
2.1 Vào HPE SSA (Smart Storage Administrator)
| Phương pháp | Cách truy cập | Ghi chú |
|---|---|---|
| HPE Intelligent Provisioning | Nhấn F10 khi boot | Khuyến nghị — GUI đầy đủ |
| HPE SPP ISO | Boot từ USB SPP, chọn Smart Storage Administrator | Cần tải HPE SPP từ HPE Support |
| SSACLI (CLI) | Từ ESXi Shell hoặc Linux LiveUSB | Nhanh nhất nếu đã cài sẵn |
2.2 Xóa RAID bằng SSACLI
# ---- SSACLI commands ----
# Xem tổng quan controller và arrays
ssacli ctrl all show config
# Xem chi tiết controller slot (thường slot 0)
ssacli ctrl slot=0 show config detail
# Liệt kê các logical drive
ssacli ctrl slot=0 ld all show
# --- XÓA RAID 5 (cụm HDD) ---
# Xem array nào chứa HDD (ví dụ: Array B)
ssacli ctrl slot=0 array B show
# Xóa logical drive của Array B (HDD)
ssacli ctrl slot=0 ld 2 delete forced
# Xóa array B
ssacli ctrl slot=0 array B delete forced
# --- XÓA RAID 1 (cụm SSD) ---
# Xóa logical drive của Array A (SSD)
ssacli ctrl slot=0 ld 1 delete forced
# Xóa array A
ssacli ctrl slot=0 array A delete forced
# Xác nhận: tất cả ổ ở trạng thái "unassigned"
ssacli ctrl slot=0 pd all show
2.3 Sắp xếp vật lý ổ đĩa (nếu cần)
Tạo RAID 10 mới
RAID 10 cụm SSD · RAID 10 cụm HDD · Rapid Initialize
3.1 Tạo RAID 10 — cụm SSD (Slot 1–4)
# Xem danh sách physical drives unassigned
ssacli ctrl slot=0 pd all show
# Tạo RAID 10 cho 4 SSD (thay 1I:1:1,1I:1:2,1I:1:3,1I:1:4 theo port thực tế)
# Dùng lệnh: ssacli ctrl slot=0 pd 1I:1:1 show để xem port ID của từng ổ
ssacli ctrl slot=0 create type=ld \
drives=1I:1:1,1I:1:2,1I:1:3,1I:1:4 \
raid=10 \
stripesize=256 \
label="SSD-RAID10"
# Rapid initialize (không cần background init hoàn tất)
ssacli ctrl slot=0 ld 1 modify reenable forced
# Kiểm tra trạng thái
ssacli ctrl slot=0 ld 1 show detail
3.2 Tạo RAID 10 — cụm HDD (Slot 5–8)
# Tạo RAID 10 cho 4 HDD
ssacli ctrl slot=0 create type=ld \
drives=2I:1:5,2I:1:6,2I:1:7,2I:1:8 \
raid=10 \
stripesize=256 \
label="HDD-RAID10"
# Kiểm tra toàn bộ config
ssacli ctrl slot=0 show config
# Kết quả mong đợi:
# Logical Drive 1 (SSD-RAID10): 1.87 TB, RAID 10, OK
# Logical Drive 2 (HDD-RAID10): 4.68 TB, RAID 10, OK
ssacli ctrl slot=0 ld all show statusCài đặt Proxmox VE
Boot USB · Cài trên HDD RAID 10 · Cấu hình mạng · Post-install
4.1 Tạo USB boot Proxmox VE
4.2 Cài đặt Proxmox VE (GUI Installer)
eno1 (hoặc NIC vật lý đầu tiên)IP/Subnet: địa chỉ quản trị tĩnh theo hạ tầng
Gateway: gateway LAN
DNS: DNS nội bộ hoặc 8.8.8.8
Hostname:
pve01.domain.localhttps://<IP>:80064.3 Cấu hình post-install
# ---- SSH vào Proxmox hoặc dùng Console trên Web UI ----
# 1. Chuyển sang no-subscription repo (tránh lỗi apt update)
sed -i 's|enterprise.proxmox.com/debian/pve|download.proxmox.com/debian/pve|g' \
/etc/apt/sources.list.d/pve-enterprise.list
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" \
> /etc/apt/sources.list.d/pve-no-subscription.list
# 2. Tắt Ceph repo (không dùng)
sed -i 's|^deb|#deb|' /etc/apt/sources.list.d/ceph.list 2>/dev/null || true
# 3. Update và upgrade
apt update && apt dist-upgrade -y
# 4. Cài công cụ hỗ trợ migration
apt install -y virt-v2v ovmf libguestfs-tools
# 5. Tắt popup "no valid subscription" trong Web UI
sed -i.bak "s/data.status !== 'Active'/false/" \
/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
systemctl restart pveproxy
Cấu hình Storage Pools
Phân vùng SSD · LVM-thin pools · Upload ISO · Cấu hình Web UI
5.1 Tạo LVM-thin pool trên SSD RAID
# Xem thiết bị block — SSD RAID thường là /dev/sdb
lsblk
ls -la /dev/sd*
# Khởi tạo PV trên SSD RAID logical drive
pvcreate /dev/sdb
# Tạo Volume Group
vgcreate vg-ssd /dev/sdb
# Tạo LVM thin pool (dùng 100% VG)
lvcreate -l 100%FREE -T vg-ssd/data-ssd
# Kiểm tra
pvs && vgs && lvs
5.2 Thêm Storage vào Proxmox Web UI
Truy cập Datacenter → Storage → Add, tạo 2 storage như bảng sau:
| ID | Type | Volume Group / Base | Content | Mục đích |
|---|---|---|---|---|
| ssd-pool | LVM-Thin | vg-ssd / data-ssd | Disk image, Container | VM disk hiệu năng cao |
| local | Directory | /var/lib/vz (HDD) | ISO, Backup, Templates | ISO images, backup storage |
5.3 Upload ISO
Web UI: node pve01 → local → ISO Images → Upload — upload các ISO cần dùng (Windows Server, Ubuntu Server, v.v.)
# Hoặc download ISO trực tiếp trên Proxmox server
cd /var/lib/vz/template/iso/
wget -O ubuntu-24.04-server.iso \
https://releases.ubuntu.com/24.04/ubuntu-24.04.2-live-server-amd64.iso
# Kiểm tra ISO đã hiển thị trong storage
ls -lh /var/lib/vz/template/iso/
Restore VM với Veeam B&R v13 → Proxmox VE
Add Proxmox host · Instant Recovery · Full VM Restore Wizard · VirtIO injection
6.1 Thêm Proxmox VE vào Veeam Infrastructure
<proxmox-ip> — Port: 22 (SSH)root · Password hoặc SSH Private Key → OK# Xác nhận Veeam transport đã deploy trên Proxmox
ssh root@<proxmox-ip>
# Kiểm tra Veeam services đang chạy
systemctl status veeamtransport
ps aux | grep veeam
# Veeam tự install veeamtransport package trên Debian-based Proxmox
dpkg -l | grep veeam
6.2 Instant VM Recovery to Proxmox (tùy chọn — test nhanh)
_instant6.3 Full VM Restore Wizard → Proxmox VE (luồng chính)
ssd-pool (VM I/O cao) hoặc hdd-pool (VM thường)RAW (hiệu năng tối đa, không snapshot)# Theo dõi restore progress và kiểm tra VM trên Proxmox
# --- Trên Proxmox node (SSH) ---
# Xem danh sách VM vừa được restore
qm list
# Kiểm tra cấu hình VM (VMID 100)
qm config 100
# Xác nhận disk format là qcow2
ls -lh /var/lib/pve/local-btrfs/images/100/ 2>/dev/null || \
ls -lh /dev/pve/vm-100-disk-0 2>/dev/null || \
pvesm list ssd-pool | grep "vm-100"
# Tải VirtIO ISO nếu Veeam inject thủ công sau restore
wget -q -O /var/lib/vz/template/iso/virtio-win.iso \
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
# Boot VM lần đầu (theo thứ tự: DC trước)
qm start 100 # DC / DNS
# Chờ DC online rồi mới start VM tiếp theo
qm start 101 # Web / App server
| Tiêu chí | QCOW2 | RAW |
|---|---|---|
| Snapshot | ✅ Hỗ trợ | ❌ Không (LVM snapshot riêng) |
| I/O Performance | Tốt (overhead nhỏ) | ✅ Tối đa |
| Thin provisioning | ✅ Có | Phụ thuộc storage |
| Khuyến nghị | VM thông thường, dev/test | DB hiệu năng cao (SQL, Redis) |
6.4 Post-restore — VM Windows
Control Panel → Programs → VMware Tools → UninstallD:\guest-agent\qemu-ga-x86_64.msi)qm set <VMID> --agent 1# --- Trên Proxmox node ---
# Enable QEMU Guest Agent cho VM (VMID 100)
qm set 100 --agent 1
# Kiểm tra guest agent status sau khi cài trong Windows
qm agent 100 ping # Trả về {} = thành công
# Lấy IP của VM qua guest agent (không cần console)
qm agent 100 network-get-interfaces | \
python3 -c "import sys,json; [print(i['name'],i.get('ip-addresses','')) for i in json.load(sys.stdin)['result']]"
# Kiểm tra disk I/O đang dùng VirtIO (không phải IDE/SCSI legacy)
qm config 100 | grep -E "scsi|virtio|ide"
# Tắt memory balloon nếu VM database (giữ RAM cố định)
qm set 100 --balloon 0
Kiểm tra & Nghiệm thu
Checklist vận hành · Test kết nối · Cấu hình backup schedule · Bàn giao
https://<IP>:8006journalctl -xe7.1 Cấu hình Backup Schedule tự động
# Cấu hình backup qua Proxmox CLI
# Web UI: Datacenter → Backup → Add
pvesm set local --content backup,iso,vztmpl
# Tạo backup job — tất cả VM, mỗi tuần Chủ nhật 02:00
# Giữ 2 bản backup gần nhất
vzdump --all 1 \
--storage local \
--mode snapshot \
--compress zstd \
--maxfiles 2 \
--quiet 1 \
--mailnotification always \
--mailto [email protected]
7.2 Kiểm tra RAID và hệ thống
# Kiểm tra trạng thái RAID (từ Proxmox shell)
ssacli ctrl slot=0 ld all show status
# Kết quả mong đợi
# logicaldrive 1 (1.87 TB, RAID 10): OK
# logicaldrive 2 (4.68 TB, RAID 10): OK
# Kiểm tra disk SMART
ssacli ctrl slot=0 pd all show detail | grep -E "Failure|Status|Serial"
# Kiểm tra system logs
journalctl -xe --since "1 hour ago" | grep -i "error\|warn"
# Kiểm tra storage usage
df -hT
pvesm status
# Kiểm tra tất cả VM
qm list
| Rủi ro | Mức độ | Biện pháp giảm thiểu |
|---|---|---|
| Backup lỗi/không đủ trước khi xóa RAID | Nghiêm trọng | Xác minh checksum + test mount 2 VM quan trọng nhất trước bước 2 |
| VM Windows không boot sau migrate | Trung bình | Boot với LSI SCSI trước, inject VirtIO drivers, sau đó chuyển sang VirtIO |
| VM mất IP/network sau restore | Trung bình | Ghi chép đầy đủ IP/MAC từ ESXi, set MAC tĩnh trong Proxmox VM config |
| Thời gian backup vượt khung giờ | Thấp | Test tốc độ backup trước (benchmark storage ngoài); ưu tiên VM quan trọng trước |
| HPE SSA không nhận RAID config mới | Thấp | Update HPE firmware (iLO + SmartArray) trước ngày thực hiện qua HPE SPP |