Hướng dẫn Migrate VM từ VMware sang Proxmox đầy đủ nhất

Hướng dẫn Migrate VM từ VMware sang Proxmox đầy đủ nhất — Việc di chuyển (migrate) máy ảo từ VMware sang Proxmox là một nhu cầu ngày càng phổ biến khi nhiều tổ chức tìm kiếm giải pháp ảo hóa tiết kiệm chi phí hơn. May mắn là cả hai nền tảng đều hỗ trợ các định dạng disk image phổ biến, giúp quá trình migration tương đối thuận tiện. Trong bài viết này, chúng ta sẽ đi qua chi tiết từng bước để migrate VM thành công.

Chuẩn bị trước khi Migration

  • Backup VM gốc trước khi migrate
  • Kiểm tra phiên bản ESXi và Proxmox
  • Chuẩn bị storage đủ chỗ trên Proxmox
  • Tải công cụ qemu-img hoặc vmdk2img
  • Kiểm tra network connectivity giữa 2 hosts

Phương pháp 1: Sử dụng VMDK và QEMU-Img

Hướng dẫn Migrate VM từ VMware sang Proxmox đầy đủ nhất

# Trên ESXi host, stop VM trước
vmware-cmd /path/to/VM.vmx stop

# Clone disk sang thin/thick provisioned VMDK
vmkfstools -i /path/to/source.vmdk -a e1000e /path/to/output.vmdk

# Hoặc sử dụng OVF tool để export
ovftool vi://root@esxi-host/VM-name /tmp/vm-export/

Bước 2: Convert VMDK sang QCOW2

# Cài đặt qemu-utils
apt install qemu-utils -y  # Debian/Ubuntu
yum install qemu-img -y    # CentOS/RHEL

# Convert VMDK (single) sang QCOW2
qemu-img convert -p -O qcow2 source.vmdk output.qcow2

# Convert VMDK (split) sang QCOW2
qemu-img convert -p -O qcow2 source-flat.vmdk output.qcow2

# Convert VMDK (with snap) sang QCOW2
qemu-img convert -p -O qcow2 source.vmdk output.qcow2

Bước 3: Upload lên Proxmox

# Tạo thư mục storage
mkdir -p /var/lib/vz/images/{vm-id}

# Upload qua scp/rsync
scp output.qcow2 root@proxmox:/var/lib/vz/images/{vm-id}/

# Hoặc qua web UI (Datacenter > Storage > Upload)

Bước 4: Tạo VM trên Proxmox và attach disk

# Tạo VM mới (không attach disk)
qm create {vm-id} --name "migrated-vm" --memory 4096 --cores 4 --net0 virtio,bridge=vmbr0

# Attach disk đã convert
qm importdisk {vm-id} /var/lib/vz/images/{vm-id}/output.qcow2 local-lvm

# Set bootdisk và bios
qm set {vm-id} --boot order=scsi0 --scsi0 local-lvm:vm-{vm-id}/disk-0.raw

Phương pháp 2: Sử dụng vmdk2img

# Clone vmdk2img repository
git clone https://github.com/gnif/vmdk2img.git
cd vmdk2img

# Build
make

# Convert VMDK sang raw image (sau đó convert sang qcow2)
./vmdk2img source.vmdk output.img

# Convert img sang qcow2
qemu-img convert -p -O qcow2 output.img output.qcow2

Phương pháp 3: Clone trực tiếp qua Network

# Trên Proxmox - nhận disk từ VMware
# Tạo VM placeholder
qm create 999 --name "temp-vm" --memory 4096 --cores 4

# Tạo disk target
qm importdisk 999 /tmp/empty.raw local-lvm

# Trên ESXi - convert và stream qua ssh
ssh root@esxi "vmkfstools -i /path/to/source.vmdk -a e1000e /tmp/output.vmdk" && \
ssh root@esxi "cat /tmp/output-flat.vmdk" | \
qemu-img convert -p -O qcow2 - /var/lib/vz/images/999/output.qcow2

Cấu hình sau Migration

Hardware Configuration

# Thay đổi network adapter sang virtio (performance tốt hơn)
qm set {vm-id} --net0 virtio,bridge=vmbr0

# Thay đổi disk controller sang virtio-scsi
qm set {vm-id} --scsi0 virtio-scsi-pci

# Tăng memory nếu cần
qm set {vm-id} --memory 8192

# Enable QEMU agent (quan trọng cho Proxmox integration)
qm set {vm-id} --agent 1

Cài đặt VirtIO Drivers (Windows)

Windows VM cần cài VirtIO drivers để hoạt động đúng trên KVM/Proxmox.

# Download VirtIO drivers ISO
wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

# Mount ISO vào VM
qm set {vm-id} --ide2 local:iso/virtio-win.iso,media=cdrom

# Trong Windows: Install driver từ Device Manager > Update Driver
# Chọn virtio-win-iso/virtio-win/virtio-serial

Các vấn đề thường gặp và cách xử lý

Vấn đềNguyên nhânCách xử lý
VM không bootDisk format không đúngKiểm tra lại disk controller (IDE/SCSI/VirtIO)
Network không hoạt độngThiếu driverCài đặt drivers hoặc đổi sang E1000
Disk không mount đượcFile system không recognizedCheck filesystem, convert đúng format
Performance chậmChưa dùng VirtIOEnable virtio-scsi và virtio-net
Boot loopUEFI/BIOS mismatchChange BIOS boot order trong VM settings

Script tự động hóa Migration

#!/bin/bash
# migrate-vmware-to-proxmox.sh

ESXI_HOST="192.168.1.100"
ESXI_USER="root"
VM_NAME="your-vm-name"
TARGET_VMID="100"
PROXMOX_HOST="192.168.1.50"

# 1. Export VMDK
echo "Exporting VMDK from VMware..."
ssh ${ESXI_USER}@${ESXI_HOST} "vmkfstools -i /vmfs/volumes/datastore1/${VM_NAME}/${VM_NAME}.vmdk -a e1000e /tmp/${VM_NAME}.vmdk"

# 2. Download và convert
echo "Downloading and converting..."
ssh ${ESXI_USER}@${ESXI_HOST} "cat /tmp/${VM_NAME}-flat.vmdk" | qemu-img convert -p -O qcow2 - /var/lib/vz/images/${TARGET_VMID}/disk.qcow2

# 3. Create VM
echo "Creating Proxmox VM..."
qm create ${TARGET_VMID} --name ${VM_NAME} --memory 4096 --cores 4
qm importdisk ${TARGET_VMID} /var/lib/vz/images/${TARGET_VMID}/disk.qcow2 local-lvm
qm set ${TARGET_VMID} --boot order=scsi0 --scsi0 local-lvm:vm-${TARGET_VMID}/disk-0.raw

echo "Migration complete!"

Kết luận

Migration từ VMware sang Proxmox hoàn toàn khả thi và không quá phức tạp.Khi tìm hiểu Hướng dẫn Migrate VM từ VMware sang Proxmox đầy đủ nhất, quan trọng nhất là backup đầy đủ, chọn đúng phương pháp phù hợp với loại VM (Windows/Linux), và cài đặt driver cần thiết sau migration.Sau khi migrate thành công, bạn sẽ được hưởng lợi từ chi phí 0 của Proxmox VE và các tính năng tích hợp sẵn như backup, clustering, storage management.

FAQ – Câu hỏi thường gặp

  • Có cần shutdown VM để migrate không? Nên shutdown để đảm bảo data integrity, nhưng cold migration cũng hỗ trợ.
  • VM có mất performance sau khi migrate? Không đáng kể. Với đúng VirtIO drivers, performance tương đương hoặc tốt hơn.
  • Snapshots có migrate được không? Khuyến nghị flatten snapshots trước khi migrate.
  • Thời gian migrate phụ thuộc vào đâu? Dung lượng VM và bandwidth network. 100GB thường mất 15-30 phút.
  • Liệu có cần cài lại Windows không? Thường không, chỉ cần cài thêm VirtIO drivers.

Chào các bạn mình là Quốc Hùng , mình sinh ra thuộc cung song tử ,song tử luôn khẳng định chính mình ,luôn luôn phấn đấu vượt lên phía trước ,mình sinh ra và lớn lên tại vùng đất võ cổ truyền ,đam mê của mình là coder ,ngày đi học tối về viết blog ...